gan*_*404 10 php mysql migration foreign-keys laravel
您好我有一个问题,使用迁移架构生成器创建一个表.使用自引用外键的表发生此问题.这是产生错误的代码:
Schema::create('cb_category', function($table)
{
$table->integer('id')->primary()->unique()->unsigned();
$table->integer('domain_id')->unsigned();
$table->foreign('domain_id')->references('id')->on('cb_domain');
$table->integer('parent_id')->nullable();
$table->foreign('parent_id')->references('id')->on('cb_category')->onUpdate('cascade')->onDelete('cascade');
$table->string('name');
$table->integer('level');
});
Run Code Online (Sandbox Code Playgroud)
这是错误:
SQLSTATE[HY000]: General error: 1005 Can't create table 'eklik2.#sql-7d4_e' (errno: 150) (SQL: alter table `cb_cate
Run Code Online (Sandbox Code Playgroud)
血污add constraint cb_category_parent_id_foreign foreign key (PARENT_ID ) referencescb_category (上更新级联id`)上德尔ETE级联)(绑定:阵列())
[PDOException] SQLSTATE [HY000]:常规错误:1005无法创建表'eklik2.#sql-7d4_e'(错误号:150)
任何的想法?
两个查询工作:
Schema::create('cb_category', function($table)
{
$table->integer('id')->primary()->unique()->unsigned();
$table->integer('parent_id')->nullable();
});
Schema::table('cb_category', function (Blueprint $table)
{
$table->foreign('parent_id')->references('id')->on('cb_category')->onUpdate('cascade')->onDelete('cascade');
});
Run Code Online (Sandbox Code Playgroud)
对于聚会我可能为时已晚,但官方文档声称外键(对于整数)必须为 ->unsigned();
http://laravel.com/docs/4.2/schema#foreign-keys
注意:创建引用递增整数的外键时,切记始终使外键列为无符号。
另外,如果您(如我所知)输入了错误的拼写,Artisan不会失败,unsigned()并且我花了很多时间试图弄清楚为什么不创建密钥。
所以有两件事:1.在整数递增的情况下,始终使外键列无符号。2.检查的拼写。 unsigned()
| 归档时间: |
|
| 查看次数: |
8898 次 |
| 最近记录: |