SQLSTATE[42P07]:重复表:7错误:关系“迁移”已经存在

问题描述 投票:0回答:3
  • Laravel 版本:5.1
  • PHP版本:5.6
  • 数据库驱动程序和版本:psql

描述:

我第一次运行

php artisan migrate
,它工作得很好。

然后:

我又添加了 1 个迁移脚本到 alter 我的一张表。


我一运行

php artisan migrate
,我就开始看到这个错误。

enter image description here


我的 database.php

中有此设置
'default' => env('DB_CONNECTION', 'pgsql'),


'pgsql'       => [
    'driver'      => 'pgsql',
    'host'        => env('DB_HOST'),
    'database'    => env('DB_DATABASE'),
    'username'    => env('DB_USERNAME'),
    'password'    => env('DB_PASSWORD'),
    'charset'     => 'utf8',
    'collation'   => 'utf8_unicode_ci',
    'prefix'      => '',
    'strict'      => false,
    ],

请告诉我我还能提供什么。

php laravel laravel-5 database-migration
3个回答
4
投票

这是一个老问题,但我最近遇到了这个问题,似乎从另一个数据库所有者复制我的迁移表后发生了更改。

因此请检查您的数据库和表所有者,并确保表由同一用户拥有。


2
投票

实际的解决方案是将

'schema'   => 'public',
附加到 psql DB_CONNECTION 的末尾。

'pgsql'       => [
    'driver'      => 'pgsql',
    'host'        => env('DB_HOST'),
    'database'    => env('DB_DATABASE'),
    'username'    => env('DB_USERNAME'),
    'password'    => env('DB_PASSWORD'),
    'charset'     => 'utf8',
    'collation'   => 'utf8_unicode_ci',
    'prefix'      => '',
    'strict'      => false,
    'schema'   => 'public', <------- ADD HERE
    ],

现在,

php artisan migrate
工作得很好。


0
投票

另一个案例。

如果您有 pgbouncer 并且路由是通过数据库名称配置的 db_master/db_slave,那么在 Laravel 9 和 10 中你会遇到同样的错误。

这是因为条件 u000bendor\laravel ramework\src\Illuminate\Database\Schema\Grammars\PostgresGrammar.php 第 76 和 86 行

表目录=?

构建或部署应用程序时,您需要修补此文件并删除此情况。

这已在 Laravel 11 中修复。

© www.soinside.com 2019 - 2024. All rights reserved.