首页 > 解决方案 > 运行迁移 Lumen/Laravel 时出现 PostgreSQL 错误

问题描述

我最近更改了我的应用程序连接到我的 PostgreSQL 数据库的方式,以添加读/写原则。从那时起,当我启动迁移时,我收到以下错误:

In Connection.php line 463:

  [PDOException (42601)]                                                                     
  SQLSTATE[42601]: Syntax error: 7 ERROR:  zero-length delimited identifier at or near """"  
  LINE 1: create table "" ("id" serial primary key not null, "migratio...                    
                       ^

当我删除 database.php 文件时,我的迁移工作正常。

我的 .env

DB_CONNECTION=pgsql
DB_HOST=192.168.1.1
DB_PORT=5432
DB_DATABASE=database
DB_USERNAME=user
DB_PASSWORD=password

DB_USERNAME_READ=user
DB_PASSWORD_READ=password

我的数据库.php

<?php

return [

    'default' => env('DB_CONNECTION', 'pgsql'),

    'connections' => [
        'pgsql' => [
            'read' => [
                'username'  => env('DB_USERNAME_READ'),
                'password'  => env('DB_PASSWORD_READ'),
            ],
            'write' => [
                'username'  => env('DB_USERNAME'),
                'password'  => env('DB_PASSWORD'),
            ],
            'sticky'    => true,
            'driver'    => 'pgsql',
            'host'      => env('DB_HOST'),
            'database'  => env('DB_DATABASE'),
        ],
    ],
];

和我的迁移之一:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateGameUserTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('game_user', function (Blueprint $table) {
            $table->bigInteger('game_id');
            $table->bigInteger('user_id');
            $table->foreign('game_id')->references('id')->on('games');
            $table->foreign('user_id')->references('id')->on('users');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('game_user');
    }
}

标签: phplaravelpostgresqllumen

解决方案


Lumen 默认不附带config/database.php文件。你可以复制一个默认的 Laravel 文件,也可以使用自己的设置创建自己的文件。

如果您已经添加了自己的自定义文件,看起来您需要指定迁移表名称。

Laravel 的默认条目是'migrations' => 'migrations',当然你可以随意命名。


推荐阅读