Laravel迁移和PostgreSQL模式

问题描述 投票:0回答:2

我正在使用PostgreSQL并想尝试Laravel。

首先 - 我的up()功能:

public function up()
{
    Schema::create('entries.entries', function($t) {

        $t->increments('id');
        $t->string('username', 50);
        $t->string('email', 100);
        $t->text('comment');
        $t->timestamps();
    });
}

我有两个问题:

1)我的数据库中没有shema entries,所以,我如何更改我的up功能来创建它?我不想手动做。

2)执行迁移时出错:

 sudo php artisan migrate

 [Illuminate\Database\QueryException]                                         
     SQLSTATE[3F000]: Invalid schema name: 7 ERROR:  no schema has been selected  
     to create in (SQL: create table "emigrations" ("migration" varchar(255) not null,
     "batch" integer not null))       

我该如何解决?

php postgresql laravel
2个回答
1
投票

1)我不认为Laravel中有这样的功能,但你可以使用像https://github.com/pacuna/Laravel-PGSchema这样的外部包

2)您是否删除了app / config / database.php文件中的默认架构?

'pgsql' => array(
            'driver'   => 'pgsql',
            'host'     => 'localhost',
            'database' => 'forge',
            'username' => 'forge',
            'password' => '',
            'charset'  => 'utf8',
            'prefix'   => '',
            'schema'   => 'public',
        ),

0
投票

嗯,我知道这个问题有超过2年的时间......但对于未来的人来说,这个问题已经达到了。 Laravel默认不识别postgres的默认“公共”模式,这就是你得到的原因:

[照亮\数据库\ QueryException] SQLSTATE [3F000]:无效的模式名称:7错误:未选择任何模式 创建in(SQL:create table“emigrations”(“migration”varchar(255)not null,“batch”integer not null))

因此,要解决此错误,您只需将postgres中的Schema重命名为public以外的任何内容,并在文件config / database.php中的laravel项目中将pgsql连接模式的名称更改为要在数据库中使用的名称。

这应该解决它。

无论如何它确实对我有用了......

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