8

我正在尝试模仿wordpress 的主键大小,即 BIGINT(20),但似乎 laravel 没有执行此操作的本机函数。我在 laravel 论坛中看到了一个页面并得到了这样的代码:

$table->bigInteger('id')->primary();

但是当我在 期间尝试将外键附加到该 id 时artisan migrate,会抛出一个 MYSQL 错误:

[异常] SQLSTATE [HY000]:一般错误:1005 无法创建表'db.#sql-1730_15'(错误号:150)(SQL:alter table usersadd constraint users_role_id_foreign foreign key ( role_id) references roles( id))(绑定:数组( ))

这样做的正确方法是什么,或者我在哪里弄错了?

谢谢!

4

2 回答 2

25

您很可能忘记将您的 role_id 外键的类型也设置为 BIGINT(20)。这不是真正的 Laravel 问题,而是 MySQL 的问题。


顺便说一句,Laravel 确实有一个原生函数可以做到这一点:

$this->bigIncrements('id');

这负责使它成为无符号自动增量主键

于 2013-07-28T04:08:35.830 回答
4

当使用 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 
        });
}

Laravel 4.2 文档的参考链接

于 2018-10-20T04:01:37.043 回答