Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Heroku中的Laravel迁移到Postgres时出错_Laravel_Heroku_Database Migration_Heroku Postgres - Fatal编程技术网

使用Heroku中的Laravel迁移到Postgres时出错

使用Heroku中的Laravel迁移到Postgres时出错,laravel,heroku,database-migration,heroku-postgres,Laravel,Heroku,Database Migration,Heroku Postgres,我正在与Laravel 5.6和Heroku一起使用Postgres数据库 我已经将我的应用程序上传到Heroku,登录表单正确地向我显示了它 迁移表时会出现以下问题: heroku运行php artisan migrate并使用heroku的Postgres,我正确地进行了所有配置,但在执行迁移时会发生这种情况: 在Connection.php第664行: SQLSTATE[42830]:无效外键:7错误:没有唯一的 约束匹配引用表“用户”的给定键(SQL: 更改表“sales”添加约束“sa

我正在与Laravel 5.6和Heroku一起使用Postgres数据库

我已经将我的应用程序上传到Heroku,登录表单正确地向我显示了它

迁移表时会出现以下问题:
heroku运行php artisan migrate
并使用heroku的Postgres,我正确地进行了所有配置,但在执行迁移时会发生这种情况:

在Connection.php第664行:

SQLSTATE[42830]:无效外键:7错误:没有唯一的 约束匹配引用表“用户”的给定键(SQL: 更改表“sales”添加约束“sales\u user\u id\u foreign”外键 (“用户id”)指的是“用户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();
    });
}
销售:


我不知道为什么我在Heroku中会有这个错误,但所有的东西都在本地工作。如何修复此问题?

这是因为表
users
上的
id
列没有唯一约束。 您可以将
id
列设置为自动增量,然后再次运行迁移:

用户

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        // Other codes
    });
}

这是因为表
users
上的
id
列没有唯一约束。 您可以将
id
列设置为自动增量,然后再次运行迁移:

用户

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        // Other codes
    });
}
奇怪的是,相同的本地迁移并没有给我带来任何问题(MySQL),但是带有Postgres的Heroku显示了错误

在开发和生产中使用相同的数据库软件总是一个好主意。MySQL和PostgreSQL并不是彼此的替代品,即使使用ORM和模式迁移工具也是如此。在某些情况下,一方肯定会高兴,另一方则不会

我怀疑如果你在Heroku上使用MySQL,你的问题就会消失。Heroku本身不提供MySQL,但有一些是您可以使用的。JawsDB和ClearDB都是流行的选项,或者如果您愿意,您可以在类似的主机上托管自己的MySQL数据库

您也可以在本地切换到Postgres,看看是否可以重现错误

奇怪的是,相同的本地迁移并没有给我带来任何问题(MySQL),但是带有Postgres的Heroku显示了错误

在开发和生产中使用相同的数据库软件总是一个好主意。MySQL和PostgreSQL并不是彼此的替代品,即使使用ORM和模式迁移工具也是如此。在某些情况下,一方肯定会高兴,另一方则不会

我怀疑如果你在Heroku上使用MySQL,你的问题就会消失。Heroku本身不提供MySQL,但有一些是您可以使用的。JawsDB和ClearDB都是流行的选项,或者如果您愿意,您可以在类似的主机上托管自己的MySQL数据库


您也可以在本地切换到Postgres,看看是否可以重现错误。

谢谢您的回答。但我不需要你提供给我的ID,因为我是从“与人的关系”表中获取的。那么我该怎么办呢?但是您可以通过
Sale
表中的
User\u id
建立
User
Sale
表之间的关系。顺便说一下,您需要确保表始终具有主键作为唯一约束。是的,这种关系是与用户ID建立的,在本地使用MySQL非常适合我。我不明白Postgres会发生什么,你在MySQL中使用的存储引擎是什么。是InnoDB吗?您的
用户
表的问题是它可能有重复的ID。谢谢回答。但我不需要你提供给我的ID,因为我是从“与人的关系”表中获取的。那么我该怎么办呢?但是您可以通过
Sale
表中的
User\u id
建立
User
Sale
表之间的关系。顺便说一下,您需要确保表始终具有主键作为唯一约束。是的,这种关系是与用户ID建立的,在本地使用MySQL非常适合我。我不明白Postgres会发生什么,你在MySQL中使用的存储引擎是什么。是InnoDB吗?
用户
表的问题是它可能有重复的ID