Laravel迁移和PostgreSQL模式

时间:2014-08-09 19:16:56

标签: php postgresql laravel

我正在使用 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)我的数据库中没有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))       

我该如何解决?

3 个答案:

答案 0 :(得分: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',
        ),

答案 1 :(得分:0)

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

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

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

这应该解决它。

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

答案 2 :(得分:0)

Laravel和PostgreSQL数据库连接,身份验证,迁移:

先决条件 *

  • PHP 7.2 +
  • Composer(PHP的依赖性管理器)
  • PostgreSQL 9.5 +

安装Laravel

使用身份验证脚手架创建一个新项目。

laravel new blog --auth

现在在blog \ config \ database.php中更改默认的数据库连接

'default' => env('DB_CONNECTION', 'mysql'),
change to
'default' => env('DB_CONNECTION', 'pgsql'),
  • 接下来,我们需要通过更新.env文件在Laravel中配置数据库凭据:
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=projectmanager
DB_USERNAME=postgres
DB_PASSWORD=1234

最后,我们必须在php.ini文件中启用PostgreSQL驱动程序。让我们进入XAMPP / WAMP目录,并通过注释掉以下两个驱动程序来修改此文件:

- extension=pdo_pgsql
- extension=pgsql

注意:检查php.ini文件的位置是bin \ php \ php7.3.5。另外,检查php.ini文件是PHP还是apache文件。

然后运行迁移以创建表。

php artisan migrate

现在您将获得最终输出。

谢谢,祝你好运。