当我尝试在Laravel 5中通过迁移设置外键约束时,收到错误消息:
[Illuminate \ Database \ QueryException] SQLSTATE [HY000]:常规错误:1215无法添加外键约束(SQL:在删除级联上,alter table
rittenregistratie
添加合作rittenregistratie_karakterrit_id_foreign外键(karakterrit_id
)引用karakterrit
(id
))[PDOException] SQLSTATE [HY000]:常规错误:1215无法添加外键约束D:\ wamp \ www>
但是我现在知道为什么了吗???迁移顺序正确,为什么我会收到此错误?表rittenregistratie具有一个名为karakterrit_id的外键,这是表karakterrit中的主键。
这是我的迁移rittenregistratie:
public function up()
{
Schema::create('rittenregistratie', function (Blueprint $table)
{
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->timestamps('datum');
$table->integer('beginstand');
$table->integer('eindstand');
$table->text('van');
$table->text('naar');
$table->text('bezoekadres');
$table->text('geredenroute');
$table->integer('karakterrit_id')->default(1);
$table->text('toelichting');
$table->integer('kilometerszakelijk');
$table->integer('kilomteresprive');
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
$table->foreign('karakterrit_id')
->references('id')
->on('karakterrit')
->onDelete('cascade');
});
}
Run Code Online (Sandbox Code Playgroud)
小智 6
加
$table->integer('karakterrit_id')->unsigned()->default(1);
Run Code Online (Sandbox Code Playgroud)
您是否创建了users
表并karakterrit
在查询中使用了表。如果同时具有两个表,请检查迁移文件的创建日期,并在引用它们的其他表之前创建它们。
另一个问题可能是MyISAM
不支持。而是使用InnoDB
DB::statement('ALTER TABLE categories ENGINE = InnoDB');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1856 次 |
最近记录: |