外键不迁移。我在迁移方面遇到了一些问题。我已经很好地迁移公司表

Posted

技术标签:

【中文标题】外键不迁移。我在迁移方面遇到了一些问题。我已经很好地迁移公司表【英文标题】:foreign key not migrate. I have some problems with migrations. I already well migrate company table 【发布时间】:2020-10-14 23:49:43 【问题描述】:

这是我的代码

Schema::create('employees', function (Blueprint $table) 
            $table->id();
            $table->string('first_name');
            $table->text('second_name');
            $table->string('emp_company')->unsigned();
            $table->string('email');
            $table->string('phone');
            $table->timestamps();
            $table->foreign('emp_company')->references('company_name')->on('companies');
        );

这是我的错误:

SQLSTATE[42000]: 语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行(SQL:create表 employees (id bigint unsigned not null auto_increment 主键, first_name varchar(255) not null, second_name text not null, emp_company varchar(255) unsigned not null, email varchar(255 ) not null, phone varchar(255) not null, created_at timestamp null, updated_at timestamp null) 默认字符集 utf8mb4 collat​​e 'utf8mb4_unicode_ci')

我坚持这个 .. 寻找 sup 谢谢。

【问题讨论】:

字符串不能无符号,只有数字字段 【参考方案1】:

我认为你的问题在这一行:

 $table->string('emp_company')->unsigned();

unsigned 仅用于数字列,仅强制正数, 字符串列没有UNSIGNED,没意义

只需删除 ->unsigned() 并且您的代码应该可以工作....

【讨论】:

以上是关于外键不迁移。我在迁移方面遇到了一些问题。我已经很好地迁移公司表的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 迁移外键不起作用

如何使外键不使用主键

外键不匹配 - “password_resets”在 dropColumn 上引用“users”

Laravel 4迁移问题中的外键

Laravel 5 迁移 - 外键约束失败

Laravel 数据库迁移外键错误