我试图在laravel中创建一个主键-外键关系,但我一直遇到这个错误
SQLSTATE[HY000]: General error: 1005 Can't create table `volga_2`.`employees` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table `employees` add constraint `employees_dept_id_foreign` foreign key (`dept_id`) references `departments` (`id`))
我似乎找不到哪里出错了,因为我在查看了SO上的其他答案后,对模式进行了更改。
当我运行php artisan migrate
时,上面的错误会弹出,这是一个部分迁移。
任何指向这将是真棒,因为我已经寻找了一段时间的解决方案!
谢谢
员工表
Schema::create('employees', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('dept_id')->unsigned();
$table->foreign('dept_id')->references('id')->on('departments');
$table->integer('salary_id')->unsigned();
$table->foreign('salary_id')->references('id')->on('salary');
$table->string('name');
$table->string('gender');
$table->timestamp('date_of_joining');
$table->dateTime('date_of_birth');
$table->timestamps();
部门表
Schema::create('departments', function (Blueprint $table) {
$table->increments('id');
$table->string('dept_name');
$table->timestamps();
工资表
Schema::create('salaries', function (Blueprint $table) {
$table->increments('id');
$table->string('monthlySalary');
$table->timestamps();
新增:DB播种机。
factory(App\Employee::class, 25)->create()->each(function ($employee) {
$department = factory(App\Department::class)->make();
$employee->department()->save($department);
$salary = factory(App\Salary::class)->make();
$employee->salary()->save($salary);
});
根据评论更改了DB种子程序
factory(App\Department::class, 10)->create()->each(function ($department) {
$salary = factory(App\Salary::class)->make();
$department->salary()->save($salary);
$employee = factory(App\Employee::class)->make();
$salary->employee->save($employee);
});
确保在雇员
迁移中引用的表已经存在,以便实际上可以引用它们。您可以通过重命名文件/将您的雇员
迁移的文件名中的日期部分更改为在您的部门
和工资
迁移之后。
你也需要改变
$table->foreign('salary_id')->references('id')->on('salary');
到
$table->foreign('salary_id')->references('id')->on('salaries');
以反映您在工资
迁移中使用的相同表名。
https://laravel.com/docs/5.8/migrations#foreign-key-constraints
我正在从事一个项目,我正在使用laravel 5.8。这里我想创建一个外键。我试了很多次,但每次都收到一条关于迁移时间的错误消息。有三个表一个是行业,是小学和学生,这些是第二个表。我想在这两个辅助表trade_id上创建一个外键作为键的名称。 这是交易表(主表)。 这是学生表(辅助表)。 这是放置表(辅助表)。 在迁移时出现错误。
我试图在一次迁移时在主键中做一个外键。 这是为Laravel 5.7。我尝试了不同的方法来实现我的目标。这是我的最终代码。 它生成一个普通表,其中“user_id”作为主键,但它不是外键。
我有两张这样桌子: 和 我想为..设置外键,但我遇到了以下错误: ALTER TABLE语句与FOREIGN KEY约束“tblPerson_GenderID_FK”冲突。冲突发生在数据库“示例”、表“dbo.tbl性别”、列“id”中。
表a已成功创建... 错误1215(HY000):无法添加外键约束 无法创建表b
我在创建mysql数据库中现有表的外键时遇到了一些问题。 我不想创建一个名为的新表来引用它,使用以下方法: 但我发现了错误: 为了获得更多的信息,我做了: 在我看来,这两个列的类型似乎是匹配的,因为它们都是varchar(45)。(我还尝试将列设置为not null,但这没有解决问题)所以我猜问题一定是。但我不太清楚这意味着什么,也不知道如何检查/修复它。有人有什么建议吗?是什么意思?
我想添加两个表,一个产品表和一个类别表。然后我要将产品表中的一个类别id链接到类别表中的主键。下面是我的代码: SQLSTATE[HY000]:一般错误:1215无法添加外键约束(SQL:alter table添加约束外键()引用())