我想使用命令创建数据库。我正在使用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
答案 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-autoload
和php artisan clear-compiled
来清除和重建缓存的类加载器。