我正在构建一个环境,需要在一个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',
],
而不需要手动创建数据库?
1条答案
按热度按时间4bbkushb1#
简单的回答。不可以。您可以创建一个类似于注解sais的命令,也可以手动创建。另外,在第一次运行迁移时,系统可能会提示您是否要创建模式。