我正在尝试创建一个Web用户界面,其中用户指定新数据库的名称,然后创建该数据库,更新Laravel数据库配置文件并运行迁移。
不要担心我要清理这段代码,我只是首先试图让基本功能失效。
public function setupDatabase($input)
{
/* set the database name variable from user defined input */
$dbname = $input['database'];
/* create the database from input */
DB::statement("CREATE DATABASE IF NOT EXISTS `{$dbname}`");
/* update laravels database config file to the new database name */
$writeConfig = new \October\Rain\Config\Rewrite;
$writeConfig->toFile(app_path() . '/config/database.php', [
'connections.mysql.database' => $dbname
]);
/* run migrations */
Artisan::call('migrate', array('--force' => true));
}
数据库已成功创建,config / database.php文件已更新,并且迁移尝试运行,但我收到此错误:
{"error":{"type":"Illuminate\\Database\\QueryException","message":"SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected (SQL: create table `migrations` (`migration` varchar(255) not null, `batch` int not null) default character set utf8 collate utf8_unicode_ci)","file":"\/test\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Connection.php","line":600}}
我不知道如何刷新似乎缓存的数据库连接。任何建议都会很棒,我现在已经坚持了几个小时。
答案 0 :(得分:0)
使用system()代替Artisan :: call()
使其工作system('cd path/to/project && php artisan migrate --force');