gpt4 book ai didi

php - 在 Laravel 中添加外键约束时出错 - 按正确顺序迁移

转载 作者:行者123 更新时间:2023-11-29 21:00:06 30 4
gpt4 key购买 nike

问题就在这里。我熟悉 Laravel 中关键约束的工作原理。我也仔细研究过这个问题,也尝试过很多解决方案,但均无济于事。我有几个如下所示的迁移,并且按照您看到的顺序运行:

public function up()
14 {
15 Schema::create('customers', function (Blueprint $table) {
16 $table->engine='InnoDB';
17 $table->increments('id');
18 $table->string('customer_first_name');
19 $table->string('customer_last_name');
20 $table->string('street_address_1');
21 $table->string('street_address_2');
22 $table->string('city');
23 $table->string('state', '2');
24 $table->integer('zip');
25 $table->string('region');
26 $table->string('customer_email')->unique();
27 $table->integer('added_by');
28 $table->timestamps();
29 });
30 }
<小时/>
public function up()
14 {
15 Schema::create('services', function (Blueprint $table) {
16 $table->engine='InnoDB';
17 $table->increments('id');
18 $table->integer('customer_id')->unsigned();
19 $table->foreign('customer_id')
20 ->references('id')->on('customers')->onDelete('cascade');
21 $table->string('service');
22 $table->text('service_description');
23 $table->date('service_date');
24 $table->integer('reminder_sent');
25 $table->tinyInteger('review_posted');
26 $table->string('token');
27 $table->timestamps();
28 });
29 }

我安装了许多软件,在过去几个月内运行这些迁移没有出现问题。但是今天尝试安装时,服务迁移(反复)失败,并显示以下消息:

[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1005 Can't create table 'gen_hometown3
.#sql-6ef_19b6c' (errno: 121) (SQL: alter table `sr_client_services` ad
d constraint `services_customer_id_foreign` foreign key (`customer_id`) ref
erences `sr_client_customers` (`id`) on delete cascade)


[PDOException]
SQLSTATE[HY000]: General error: 1005 Can't create table 'gen_hometown3
.#sql-6ef_19b6c' (errno: 121)

我尝试将键约束声明移动到表创建的末尾,进入一个单独的 Schema::table() block ,使外键可为 null() (然后反转该更改)并翻转顺序周围迁移,但错误仍然存​​在。迁移一直运行到服务表(之前还有其他迁移,但没有外键),然后我收到上述错误。

真正让我困惑的是,我之前(不久前)在同一台服务器上运行过这些相同的迁移,没有出现任何问题。

预先感谢您提供的所有帮助。

最佳答案

如果欺骗不能解决问题,您始终可以完全禁用迁移的外键检查:

public function up()
DB::statement("SET FOREIGN_KEY_CHECKS = 0");
Schema::create("services", ...);
DB::statement("SET FOREIGN_KEY_CHECKS = 1");
}

关于php - 在 Laravel 中添加外键约束时出错 - 按正确顺序迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37309036/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com