Estou tentando fazer uma chave estrangeira na mesma tabela e não importa o que eu teste, recebo um erro.
Na linha Connection.php 647:
SQLSTATE [HY000]: Erro geral: 1215 Não é possível adicionar restrição de chave estrangeira (SQL: alterar tabela trip_tags
adicionar restrição trip_tags_parent_foreign
de chave estrangeira ( parent
) referências trip_tags
( id
) na exclusão em cascata)
Na linha Connection.php 449:
SQLSTATE [HY000]: Erro geral: 1215 Não é possível adicionar restrição de chave estrangeira
Este é o meu código
Schema::create('trip_tags', function (Blueprint $table) {
$table->engine = "InnoDB";
$table->uuid('uuid')->unique();
$table->integer('id')->unsigned();
$table->string('name')->nullable();
$table->integer('parent')->unsigned()->nullable();
$table->timestamps();
});
Schema::table('trip_tags', function (Blueprint $table) {
$table->foreign('parent')
->references('id')
->on('trip_tags')
->onDelete('cascade');
});
Tento apontar o pai para o id, ambos são inteiros sem sinal, acho que a razão pela qual a criação da chave estrangeira falha é que eles não são compatíveis de alguma forma, não consigo descobrir o que está errado.
Tentei apontar o pai para uuid, mas depois tive que transformá-lo em um barbante e funcionou. Mas eu tenho que ter o ponto pai para id, que é inteiro e não consigo fazer a migração sem nosso erro.
É porque sua id
coluna não tem um índice.
Adicione ->unique()
à declaração:
$table->integer('id')->unsigned()->unique();
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras