【发布时间】:2019-08-24 12:21:36
【问题描述】:
我正在使用 Laravel 5.6 和 Heroku 以及 Postgres 数据库。
我已将我的应用程序上传到 Heroku,登录表单正确显示给我。
使用以下方法迁移表时会出现问题:
heroku run php artisan migrate 并使用 Heroku 的 Postgres,我正确地进行了所有配置,但是在迁移时会发生这种情况:
在 Connection.php 第 664 行:
SQLSTATE[42830]:无效的外键:7 错误:没有唯一的 约束匹配引用表“用户”的给定键(SQL: 更改表“sales”添加约束“sales_user_id_foreign”外键 ("user_id") 引用 "users" ("id"))
在 Connection.php 第 458 行:
SQLSTATE[42830]:无效的外键:7 错误:没有唯一的 为引用表“用户”匹配给定键的约束
奇怪的是,本地相同的迁移不会给我带来任何问题(MySQL),但带有 Postgres 的 Heroku 显示错误。
这些是我的用户和销售迁移:
用户:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->integer('id')->unsigned();
$table->foreign('id')->references('id')->on('people')->onDelete('cascade');
$table->string('user')->unique();
$table->string('password');
$table->boolean('state')->default(1);
$table->integer('idRole')->unsigned();
$table->foreign('idRole')->references('id')->on('roles');
$table->rememberToken();
//$table->timestamps();
});
}
销售:
public function up()
{
Schema::create('sales', function (Blueprint $table) {
$table->increments('id');
$table->integer('client_id')->unsigned();
$table->foreign('client_id')->references('id')->on('people');
$table->unsignedInteger('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
$table->dateTime('date_time');
$table->decimal('total', 11, 2);
$table->string('status', 20);
$table->timestamps();
});
}
我不知道为什么我在 Heroku 中出现此错误,但一切都在本地运行。我该如何解决这个问题?
【问题讨论】:
标签: laravel heroku database-migration heroku-postgres