我试图将外键放在桌子上,但我收到了这条消息:
[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1091 Can't DROP 'user_id
'; check that column/key exists (SQL: alter table `posts` drop foreign key
user_id)
Run Code Online (Sandbox Code Playgroud)
我正在使用迁移来执行此操作:
Schema::table('posts', function($table) {
$table->dropForeign('user_id');
$table->foreign('user_id')
->references('id')->on('users')
->onDelete('cascade');
});
Run Code Online (Sandbox Code Playgroud)
我确信'posts'表中存在'user_id':
Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| user_id | int(10) unsigned | NO | MUL | NULL | |
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?这是一个bug还是什么?
------------------
更新:
我发现原因可能是"你试图删除另一个表正在使用的密钥".
这是否意味着我应该放弃那些首先使用'posts'表的表?
Mar*_*lln 16
创建外键时,名称将是table_fields_foreign除非您在第二个参数中设置名称(请参阅createIndexName方法).
因此,如果您没有指定名称,则外键应该是,posts_user_id_foreign而不是user_id.
| 归档时间: |
|
| 查看次数: |
5566 次 |
| 最近记录: |