У меня есть 5.7 Laravel App
, который я только что переключил с MAMP на Docker.
Службы / контейнеры:
- app
- cache
- db //serve as transaction database
- dblog //serve as log database
Все работает, когда я импортирую данные из локальной базы данных вбаза данных внутри тома БД. Вызов API работает, поэтому выборка и запись данных в базу данных в порядке.
У меня возникли некоторые проблемы при выполнении миграции из пользовательской папки внутри app\database migrations\logs
:
- Возможность удаления и создания схемы (Это означает, что соединение в порядке, круто, круто!)
- Невозможно запустить миграцию внутри папки журнала (Это проблема)
- Это выборкамиграции по умолчанию (внутри поставщика) вместо использования миграций внутри папки журнала, например, для опубликованной миграции телескопа. (Это проблема)
- Если я перенесу миграцию из папки журнала за пределы, это все равно выдаст мне эту ошибку ниже.
- Я также обновил соединение миграции внутри поставщика просто для проверкивсе еще вызывает ту же проблему
Это ошибка, которую я получаю при выполнении команды.
SQLSTATE [3D000]: неверное имя каталога: 1046 База данных не выбрана(SQL: создать таблицу telescope_entries
(sequence
bigint без знака, не ноль, первичный ключ auto_increment, uuid
char (36), не ноль, batch_id
char (36), не ноль, family_hash
varchar (191) ноль, should_display_on_index
tinyint (1) не равно NULL по умолчанию '1', type
varchar (20) не равно NULL, content
longtext не равно NULL, created_at
datetime null) набор символов по умолчанию utf8mb4 collate 'utf8mb4_unicode_ci')
Ниже приведена структура приложения для миграции:
|app
|database
|migrations
|logs
2018_08_08_100000_create_telescope_entries_table.php
2019_06_20_063329_create_push_notification_logs_table.php
2014_10_12_000000_create_users_table.php
//truncated
Это App\Providers\AppServiceProvider
, я добавил setMigrationFolderPath
, чтобы я мог поместить logs
миграции в их собственную папку
public function boot()
{
//truncated
$this->setMigrationFolderPath();
}
private function setMigrationFolderPath()
{
//this works if I do dd('set here');
$migrationPath = database_path('migrations');
$directories = glob($migrationPath . '/*' , GLOB_ONLYDIR);
$paths = array_merge([$migrationPath], $directories);
$this->loadMigrationsFrom($paths);
}
Это App\database\migrations\logs\CreateTelescopeEntriesTable.php
class CreateTelescopeEntriesTable extends Migration
{
protected $schema;
public function __construct()
{
$this->schema = Schema::connection('log');
}
public function up()
{
$this->schema->create('telescope_entries', function (Blueprint $table) {
$table->bigIncrements('sequence');
$table->uuid('uuid');
$table->uuid('batch_id');
$table->string('family_hash')->nullable()->index();
$table->boolean('should_display_on_index')->default(true);
$table->string('type', 20);
$table->longText('content');
$table->dateTime('created_at')->nullable();
$table->unique('uuid');
$table->index('batch_id');
$table->index(['type', 'should_display_on_index']);
});
//truncated
}
public function down()
{
$this->schema->dropIfExists('telescope_entries_tags');
$this->schema->dropIfExists('telescope_entries');
$this->schema->dropIfExists('telescope_monitoring');
}
}
Это App\config\database.php
//i have 2 connections here
'main' => [
//truncated because it is irrelevant
],
'log' => [
'driver' => 'mysql',
'host' => env('DB_LOG_HOST', '127.0.0.1'),
'port' => env('DB_LOG_PORT', '3306'),
'database' => env('DB_LOG_DATABASE', 'forge'),
'username' => env('DB_LOG_USERNAME', 'forge'),
'password' => env('DB_LOG_PASSWORD', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
],
//truncated
Это .env
DB_CONNECTION=main
DB_HOST=db
DB_PORT=3306
DB_DATABASE=self_service_db
DB_USERNAME=root
DB_PASSWORD=secret
DB_ROOT_PASSWORD=secret
//this is the DB CONNECTION it is using
DB_LOG_CONNECTION=log
DB_LOG_HOST=dblog
DB_LOG_PORT=3306
DB_LOG_DATABASE=log_db
DB_LOG_USERNAME=root
DB_LOG_PASSWORD=secret
DB_LOG_ROOT_PASSWORD=secret
Я хотел бы сохранить текущие настройки (папка миграции журнала) и запустить миграцию в этой папке в log
соединение, что мне делать?