Laravel 5.6: Ошибка при создании новой базы данных с помощью команды - PullRequest
0 голосов
/ 20 сентября 2018

Я хочу создать базу данных с помощью команды.Я использую postgresql.Я создаю таблицы, используя миграции, но перед этим я хочу создать базу данных и несколько схем.Я использую эту команду:

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()));
        }

    }
}

Но я получаю эту ошибку:

Failed to create database: SQLSTATE[08006] [7] could not translate host name "connect_timeout=30" to address: Unknown server error

Как я уже сказал, я хочу создать новую базу данных в Laravel, яЯ использую этот способ, но не работает, если есть другой способ сделать это, я хотел бы знать.

EDIT1: Теперь он работает нормально, я просто выбираю значения из конфигурациикак вы сказали @Dimitri Mostrey:

$dbname = config('database.connections.pgsql.database');
$dbuser = config('database.connections.pgsql.username');
$dbpass = config('database.connections.pgsql.password');
$dbhost = config('database.connections.pgsql.host');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...