Laravel 5.6: создание схемы в базе данных - PullRequest
0 голосов
/ 21 сентября 2018

Я использую postgresql.Я создаю базу данных с помощью этой команды:

<?php

namespace efsystem\Console\Commands;

use Illuminate\Console\Command;

class CreatePostgressDatabase 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 = config('database.connections.pgsql.database');
    $dbuser = config('database.connections.pgsql.username');
    $dbpass = config('database.connections.pgsql.password');
    $dbhost = config('database.connections.pgsql.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()));
    }
}
}

Она работает нормально, но я хочу создать несколько схем и в этой базе данных.Я попытался использовать db :: unprepared в файле миграции, но это не сработало, потому что для выполнения миграции необходимо, чтобы схемы были созданы ранее.

EDIT1: Я пытался создать схемыиспользуя эту миграцию:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateSchemaAdministracion extends Migration
{
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    DB::unprepared('
        CREATE SCHEMA administracion
    ');
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    DB::unprepared('DROP SCHEMA `administracion`');
}
}

Но я получил: Неверное имя схемы: 7 ОШИБКА: схема не выбрана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...