我正在尝试使用具有雄辩的ORM和 InnoDB 引擎创建一个包含外键的表,但它失败并出现错误:
常规错误: 1215无法添加外部索引约束。
问题是适用于mariaDB ,我在另一台计算机上试过。
这是表格:
DB::schema()->create('client', function($table){
$table->engine = 'InnoDB';
$table->increments('id')
->comment('Identifiant du client');
$table->string('cli_nom', 25)
->comment('Nom ou raison sociale du client');
$table->string('cli_activite', 5)
->comment('Code NAF activité');
$table->text('cli_activite_desc')
->comment('Description du code NAF');
$table->integer('cli_adresse_id')
->unsigned()
->comment('Id de l adresse du client');
$table->integer('cli_type')
->comment('1:client ou 0:prospect');
$table->integer('cli_theme_couleur_id')
->unsigned()
->comment('Id de la couleur de personnalisation d interface');
$table->integer('cli_theme_id')
->unsigned()
->comment('Id du theme acheté par le client');
$table->timestamps();
$table->foreign('cli_adresse_id')
->references('id')->on('adresse')
->onDelete('restrict');
$table->foreign('cli_theme_couleur_id')
->references('id')->on('theme_couleur')
->onDelete('restrict');
$table->foreign('cli_theme_id')
->references('id')->on('theme')
->onDelete('restrict');
});
我还尝试将index()添加到fk:
$table->integer('cli_adresse_id')
->unsigned()
->index()
->comment('Id de l adresse du client');
修改
这是引用的表格:
DB::schema()->create('adresse', function($table){
$table->increments('id')
->unsigned()
->comment('Identifiant de l adresse');
$table->integer('adr_num')
->comment('Numéro de rue');
$table->string('adr_voie', 250)
->comment('Rue ou voie dans la ville');
$table->string('adr_cp', 10)
->comment('Code postal de l adresse');
$table->string('adr_ville', 250)
->comment('Nom de la ville de l adresse');
$table->integer('adr_pays')
->comment('Identifiant du pays');
$table->timestamps();
});