Pergunta

Tenho um problema ao atualizar um aplicativo Django e MySQL com o Sul.

Eu tentei fazer uma atualização baseada em SQL com o código gerado pelo comando Django Sqlall e tenho um problema semelhante.

Aqui está o código SQL:

CREATE TABLE `programmations_basissupport` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `value` numeric(6, 0) NOT NULL
)

ALTER TABLE `programmations_concert` ADD `basis_support_id` integer AFTER program_status_id;

ALTER TABLE `programmations_concert` ADD CONSTRAINT `basis_support_id_refs_id_1e4ed8d7` FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);

Um erro é levantado ao adicionar a restrição de FK:

ERROR 1005 (HY000): Can't create table 'apidev_mnl.#sql-106e_632b00a' (errno: 150)

Alguém tem uma ideia?

ATUALIZAÇÃO: Valores padrão onde ausentes, mas mesmo se eu adicionar o padrão = '' no modelo Django, a criação de chaves estrangeiras falha.

Obrigado pela ajuda

Foi útil?

Solução 3

Finalmente resolvi o problema graças a uma solução alternativa. O alter funciona bem na minha máquina de dev enquanto falha no host. Não encontrei o motivo, mas consegui fazê -lo funcionar exportando, migrando para minha máquina de desenvolvimento e reimportando.

Outras dicas

Parece que você está tentando adicionar uma restrição com um símbolo/nome que já existe.

ALTER TABLE `programmations_concert` ADD CONSTRAINT `basis_support_id_refs_id_1e4ed8d7` FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);

pode ser alterado para:

ALTER TABLE `programmations_concert` ADD FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);

Havia o mesmo problema. E, finalmente, acho que no campo da tabela referenciado não era "não assinado", mas na tabela de referência - não não assinada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top