Migrations Laravel e Causas para O Erro 1215

Alguém sabe me dizer se as migrations do Laravel cria algum tipo de regra ou bloqueio para as tabelas do banco de dados um uso na aplicação?
Pergunto isso, porque tive muitos problemas ao tentar criar chaves estrangeiras em algumas tabelas? Por esse motivo, ultimamente, tenho deixado de usar migrations, apenas as models.

Não

A Migrations é uma boa técnica para ter em código todo o processo de criação do banco de dados, mas, para isso você precisa criar um DER (Diagrama de Entidade e Relacionamento) corretamente, sequencial e lógico, se não realmente você tem problemas.

Um exemplo de chaves estrangeiras é que o pessoal cria primeiro a tabela que tem a relação depois a outra tabela que possui a chave primária ai dá problema mesmo …

Muitos criam migration sem entender, eu tenho um sistema que tem mais de 50 migrations e roda perfeitamente.

Então tem que utilizar a DER para fazer as migrations, não é de qualquer jeito

1 curtida

Tive alguns problemas, como por exemplo, mesmo o campo id e usuario_id serem do mesmo tipo, int(10) unsigned e em outras tentativas int(11) ambos, sempre dava erro 1215.

Sim os tamanhos dos campos são diferentes, então você precisa colocar o mesmo tamanho para relacionamentos. Isso faz parte do DER, ou seja, o modelo precisa ser bem feito, dados diferentes não se relacionam isso é uma premissa de banco de dados

1 curtida

Não, disse que tanto quando os campos tem tamanho int(10) unsigned, quando tem tamanho int(11) dá erro 1215.

Porque você tem o modelo errado o seu DER está furado, o seu estudo está errado, você está fazendo algo errado, você que está errando, ou criando tabelas em momentos errados ou colocando dados e tipos errados, não é por causa do tipo e tamanho somente, mas, pela ordem de criação.

1 curtida

Claro que devo estar cometendo algum erro, mas não é desse tipo, porque ambas as tabelas já estão criadas e estou fazendo pelo Workbench, adicionando chaves estrangeiras em campos de tipo e tamanho iguais.

Você conta o entorno, mas, diz para que veio, as suas perguntas são muito vagas, isso ninguém vai adivinhar o que você está fazendo se saber por você o que está fazendo. Se as tabelas estão criadas e você está relacionando e não está certo tem tantos pontos a verificar, um deles e se as tabelas tem os dados relacionados da outra, ou seja, se já tem informações nessa tabela, esse pode ser um dos motivos possíveis, mas, não posso ratificar porque como disse se conta e não conta o problema.

1 curtida

A tabela que vai ter a chave estrangeira está vazia, a outra, que vai ser referenciada, está com alguns registros de teste.

E … ou seja, não diz nada só o entorno! como você pretende fazer, qual é o DER dessas duas tabelas, como elas são colocando aqui os dados. Não temos como adivinhar o problema.

Eu compreendo que o ideal e formal é fazer o DER em questão de organização e outros motivos, mas o que preciso para o momento é descobrir o porquê de campos com mesmo tamanho e tipo, eu ter o erro 1215, por isso a pergunta se tem algo nas migrations que bloqueia a criação de chaves estrangeiras que vc disse não fazer.
Resumindo, preciso saber que outras possibilidades podem impedir a criação de chaves estrangeiras, se os campos de referência e referenciados são do mesmo tipo e tamanho.

Não é mais sob controle fazer as modificações no banco você mesmo? Não é custoso se você for trabalhar de forma incremental.

1 curtida

Exatamente, isso, javaflex. É o que estou tentando fazer, por isso preciso saber tirando o que já sabemos que não são as causas, como os campos serem de tipos e tamanhos diferentes, porque não são, quais outras possíveis causas do erro 1215.

Isso é opção de cada equipe, não veja como obrigação. Particurlamente prefiro ter o controle do meu script, tanto DDL como DML. Geralmente jovens tomam um pouco de distância de SQL e preferem usar migrations, mas se você tem o poder de decidir o que vai usar, use o que for melhor pra sua rotina.

1 curtida

Veja se isso tem haver com seu caso: https://pt.stackoverflow.com/a/190396

Mesmo com migrations você deve analisar o script do que existe no banco e do que a ferramenta gera. Olhando rápido seu tópico não achei nenhum script pra ser analisado.

1 curtida

Isso vai depender do conhecimento. Vale lembrar que ele começou de um jeito e agora quer mexer de outro isso sim é o problema.

Não é custoso inclusive para instalação é excelente.

1 curtida

Mostre aonde acontece isso com imagens e explicando o que está fazendo.

1 curtida