Laravel 5.6:创建数据库和几种模式

时间:2018-09-19 18:17:03

标签: php laravel postgresql laravel-5

我想使用命令创建数据库。我正在使用postgresql。我正在使用迁移来创建表,但是在此之前,我想创建数据库和几种模式。

我正在使用以下命令:

p <- ggplot(t, aes(x=factor(bin), y=nn, color=model))
p + geom_violin(fill = NA,)

我使用: <?php namespace App\Console\Commands; use Illuminate\Console\Command; use Illuminate\Support\Facades\DB; class pgsql extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'pgsql:createdb {name?}'; /** * The console command description. * * @var string */ protected $description = 'Create a new pgsql database schema based on the database config file'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { $dbname = env('DB_DATABASE'); $dbuser = env('DB_USERNAME'); $dbpass = env('DB_PASSWORD'); $dbhost = env('DB_HOST'); try { $db = new \PDO("pgsql:host=$dbhost", $dbuser, $dbpass); $test = $db->exec("CREATE DATABASE \"$dbname\" WITH TEMPLATE = template0 encoding = 'UTF8' lc_collate='Spanish_Spain.1252' lc_ctype='Spanish_Spain.1252';"); if($test === false) throw new \Exception($db->errorInfo()[2]); $this->info(sprintf('Successfully created %s database', $dbname)); } catch (\Exception $exception) { $this->error(sprintf('Failed to create %s database: %s', $dbname, $exception->getMessage())); } } }

但是我得到这个错误: php artisan pgsql:createdb schema_name

在我刚完成的一个新项目中,它的效果很好。但是不在我当前的项目中。

EDIT1 :我尝试使用PHP fatal error: Cannot declare class App\Console\Commands\pgsql, because the name is already in use.并得到php artisan pgsql:createdb schema_name

但是当我使用There are no commands defined in the "pgsql" namespace时,我得到了: Error using php config:cache

就像我说的那样,这在一个新项目中对我有效,但在我当前的项目中无效。

EDIT2:,它起作用了,我不再遇到最后一个错误,但是我得到了:

php artisan config:cache

1 个答案:

答案 0 :(得分:0)

要解决PHP fatal error: Cannot declare class App\Console\Commands\pgsql, because the name is already in use.,应确保类名称在名称空间中是唯一的。

另一方面,更合适的命令名称(如Laravel建议的那样)可能是:

class CreatePostgressDatabase extends Command

并命名您的文件CreatePostgressDatabase.php(需要与类名匹配)

如果错误仍然存​​在,请尝试运行composer dump-autoloadphp artisan clear-compiled来清除和重建缓存的类加载器。