我正在尝试模仿wordpress' primary key size这是BIGINT(20),但似乎laravel没有本地函数来执行此操作..我看到了page in the laravel forums并得到了这样的代码:
$table->bigInteger('id')->primary();
但是当我在artisan migrate
期间尝试将外键附加到该ID时,会抛出一个MYSQL错误:
[异常] SQLSTATE [HY000]:常规错误:1005无法创建表'db。#sql- 1730_15'(错误号:150)(SQL:alter table
users
添加约束users_role_id_foreign外键(role_id
)引用roles
(id
))(绑定:数组( ))
这样做的正确方法是什么?我在哪里弄错了?
谢谢!
答案 0 :(得分:16)
您很可能忘记将role_id外键的类型也设置为BIGINT(20)。这不是Laravel的问题,而是MySQL的问题。
顺便说一句,Laravel确实有一个本地功能来执行此操作:
$this->bigIncrements('id');
这需要使未签名,自动增量和主键。
答案 1 :(得分:2)
在使用bigInteger()并将其应用于某些表中的外键时,请确保将其与unsignedBigInteger()正确连接,
public function up()
{
Schema::create('create_this_table_after_users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('user_id');
// Other Columns
});
Schema::table('create_this_table_after_users', function($table) {
$table->foreign('user_id')->references('id')->on('users');
// Other Constraints
});
}