【发布时间】:2014-07-29 06:53:07
【问题描述】:
我使用 UUID 或 GUID 作为识别某些记录(如用户等)的一种方式。我希望能够通过向用户的唯一 ID 添加外键约束来将某些实体记录链接到用户。
由于某种原因,Migrate 似乎不喜欢添加外键。
有什么建议吗?
SQLSTATE[HY000]:一般错误:1215 无法添加外键约束
两个值都是 CHAR(36)
class CreateForeignKeys extends Migration {
/**
* Run the migrations.
*/
public function up()
{
Schema::table('comments', function($table)
{
$table->foreign('author_id')->references('uuid')->on('users');
});
}
/**
* Reverse the migrations.
*/
public function down()
{
Schema::table('comments', function($table)
{
$table->dropForeign('comments_author_id_foreign');
});
}
}
这是我在工作时写的。唯一的区别是,家里的副本为单独的表创建了额外的外键,但是它们有自己的:
Schema::table('table_name', function($table)
{
//
});
我唯一能想到的是在同一个模式构建器中可能有多个外键创建(上图)。但是,外键仍然与同一个表相关。
users 表中的 uuid 列是 char(36)
comments 表中的 author_id 列是一个 char(36)
我已多次检查以确保是这种情况。
【问题讨论】:
-
请发布您的迁移文件。
-
添加了迁移文件,并解释了它包含的其他内容。我已确保数据库中两列的值和长度相同。
-
我们还需要查看您的
users迁移代码。 -
users表已设置。通过此次迁移,users表中没有任何更改。