Laravel:错误形成的外键约束

时间:2017-06-14 06:40:19

标签: laravel

我认为我写的所有内容都正确。当我运行“php artisan migrate”命令时出现PDOException。我在stackoverflow中经历了相关的所有帖子。但我没有得到任何解决方案。

enter image description here

[PDOException]  SQLSTATE [HY000]:常规错误:1005无法创建表laravel_jobs#sql- ec4_170(错误号:150“外键约束形成错误”)

4 个答案:

答案 0 :(得分:2)

错误:Can't create table laravel_jobs

所以我认为问题不在于Resume表迁移。

答案 1 :(得分:1)

我认为您需要更新迁移代码,例如:

{{1}}

希望这对你有用!

答案 2 :(得分:0)

创建表后应创建外键。像这样:

public function up()
    {
        Schema::enableForeignKeyConstraints();

        Schema::create('user', function (Blueprint $table) {
            $table->engine = 'InnoDB';
            $table->uuid('id');
            $table->primary('id');
            $table->string('class_code');
            $table->string('username')->nullable();
            $table->string('email_address')->nullable();
            $table->uuid('contact_id')->nullable();
            $table->uuid('customer_id')->nullable();
            $table->char('password_hash', 64)->nullable();
            $table->boolean('active')->nullable();
            $table->string('remember_token', 100)->nullable();
            $table->timestamps();
        });

        Schema::table('user', function(Blueprint $table) {
            $table->foreign('contact_id')->references('id')->on('contact')->onDelete('cascade')->onUpdate('cascade');
            $table->foreign('customer_id')->references('id')->on('customer')->onDelete('cascade')->onUpdate('cascade');
        });
    }
但是,您可能需要确保运行迁移的顺序正确无误。因此,您可能希望create table函数创建可为空的外键。

答案 3 :(得分:0)

检查以下条款:

1. The datatype of id column on users table and user_id on resume table are same.
2. If id is unsigned integer or big integer then user_id will be unsigned 
   integer or big integer.
3. Length of id on users table and user_id on resume table will be same.

希望这能解决你的问题。