Laravel迁移,无法创建外键[重复]

np8igboo  于 2023-03-13  发布在  其他
关注(0)|答案(2)|浏览(125)

此问题在此处已有答案

How to use foreignUuid in laravel 9(1个答案)
3天前关闭。
这些迁移文件如下:

用户迁移
Schema::create('users', function (Blueprint $table) {
    $table->uuid('id');
    $table->string('name');
    $table->string('email')->unique();
    $table->timestamps();
});
日志迁移
Schema::create('log', function (Blueprint $table) {
    $table->uuid('id');
    $table->boolean('statu');
    $table->timestamps();
    $table->foreign('id')->references('id')->on('users')->onDelete('cascade');
});

当我运行迁移时,它显示:
PDO异常错误::(“SQLSTATE[HY 000]:一般错误:1005 0x 1 m0n1x无法建立表格。log(错误编号:150“外键约束的格式不正确”)”)
我也试过:
一个二个一个一个
但还是不行。
--我已经解决了这个问题
用户

Schema::create('users', function (Blueprint $table) {
            $table->uuid('id')->primary();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamps();
        });

原木

Schema::create('log', function (Blueprint $table) {
            $table->uuid('id')->primary();
            $table->foreignUuid('user_id');
            $table->boolean('statu');
            $table->timestamps();
        });
        Schema::table('log', function($table) {
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
    
        });
zdwk9cvp

zdwk9cvp1#

尝试添加到用户表:

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

这里没有任何内容向数据库表明id是主键。
然后,您应该将外键命名为“name_of_the_table”_id。对于您,它应该是:

$table->foreignUuid('foreign_id');

最后,您可以添加:

$table->foreignUuid('user_id')->constrained();

完整的代码如下所示:

Schema::create('users', function (Blueprint $table) {
        $table->uuid('id')->primary();
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamps();
    });

 Schema::create('log', function (Blueprint $table) {
        $table->uuid('id');
        $table->boolean('statu');
        $table->timestamps();
        $table->foreignUuid('user_id')->constrained();
    });
nwwlzxa7

nwwlzxa72#

请使用$table-〉id();而不是$table-〉uuid('id');

相关问题