我正在使用 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))
我该如何解决?
答案 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数据库连接,身份验证,迁移:
先决条件 *
安装Laravel
使用身份验证脚手架创建一个新项目。
laravel new blog --auth
现在在blog \ config \ database.php中更改默认的数据库连接
'default' => env('DB_CONNECTION', 'mysql'),
change to
'default' => env('DB_CONNECTION', 'pgsql'),
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
现在您将获得最终输出。
谢谢,祝你好运。