postgresql Laravel 10,你可以在迁移中创建一个新数据库吗?

tquggr8v  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(158)

我正在构建一个环境,需要在一个PGSQL数据库服务器上为Laravel创建两个数据库,生产环境名为laravel,测试/开发环境名为laravel_test,有没有办法在Laravel中使用数据库迁移来创建新的数据库?我一直在尝试

$dbName = config("database.connections.pgsql-test.database");
// Create the second database
DB::statement("CREATE DATABASE $dbName");

但最后得到一个错误,声明如下:

SQLSTATE[25001]: Active sql transaction: 7 ERROR:  CREATE DATABASE cannot run inside a transaction block (Connection: pgsql, SQL: CREATE DATABASE laravel_test)

当涉及到像这样的数据库特定操作时,我没有经验,是否有一种方法可以使用此主(pgsql)DB连接迁移新数据库:(config/database.php)

'pgsql' => [
     'driver' => 'pgsql',
     'url' => env('DATABASE_URL'),
     'host' => env('DB_HOST', '127.0.0.1'),
     'port' => env('DB_PORT', '5432'),
     'database' => env('DB_DATABASE', 'forge'),
     'username' => env('DB_USERNAME', 'forge'),
     'password' => env('DB_PASSWORD', ''),
     'charset' => 'utf8',
     'prefix' => '',
     'prefix_indexes' => true,
     'search_path' => 'public',
     'sslmode' => 'prefer',
],

这样我就可以使用这个连接(pgsql-test):

'pgsql-test' => [
     'driver' => 'pgsql',
     'url' => env('DATABASE_URL'),
     'host' => env('DB_HOST', '127.0.0.1'),
     'port' => env('DB_PORT', '5432'),
     'database' => env('DB_DATABASE', 'forge') . "_test",
     'username' => env('DB_USERNAME', 'forge'),
     'password' => env('DB_PASSWORD', ''),
     'charset' => 'utf8',
     'prefix' => '',
     'prefix_indexes' => true,
     'search_path' => 'public',
     'sslmode' => 'prefer',
],

而不需要手动创建数据库?

4bbkushb

4bbkushb1#

简单的回答。不可以。您可以创建一个类似于注解sais的命令,也可以手动创建。另外,在第一次运行迁移时,系统可能会提示您是否要创建模式。

相关问题