From e2e8ae5b28c56ed1333a5870f2eaa1ab9c6bb785 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 17 Nov 2019 13:34:33 +0100 Subject: [PATCH] Some command fixes. --- .deploy/docker/entrypoint.sh | 2 +- app/Console/Commands/CreateDatabase.php | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/.deploy/docker/entrypoint.sh b/.deploy/docker/entrypoint.sh index 2ddeb67624..4ff9f805a1 100755 --- a/.deploy/docker/entrypoint.sh +++ b/.deploy/docker/entrypoint.sh @@ -54,8 +54,8 @@ if [[ ! -z "$DB_PORT" ]]; then fi #env $(grep -v "^\#" .env | xargs) php artisan cache:clear -php artisan migrate --seed php artisan firefly-iii:create-database +php artisan migrate --seed php artisan firefly-iii:decrypt-all # there are 13 upgrade commands diff --git a/app/Console/Commands/CreateDatabase.php b/app/Console/Commands/CreateDatabase.php index f4fe3a4e19..613561fe2f 100644 --- a/app/Console/Commands/CreateDatabase.php +++ b/app/Console/Commands/CreateDatabase.php @@ -50,16 +50,20 @@ class CreateDatabase extends Command return 1; } // with PDO, try to list DB's ( - $stmt = $pdo->prepare('SHOW DATABASES WHERE `Database` = ?'); - $stmt->execute([env('DB_DATABASE')]); - $result = $stmt->fetch(); - if (false === $result) { + $stmt = $pdo->query('SHOW DATABASES;'); + $exists = false; + // slightly more complex but less error prone. + foreach ($stmt as $row) { + $name = $row['Database'] ?? false; + if ($name === env('DB_DATABASE')) { + $exists = true; + } + } + if (false === $exists) { $this->error(sprintf('Database "%s" does not exist.', env('DB_DATABASE'))); // try to create it. - $stmt = $pdo->query(sprintf('CREATE DATABASE `%s` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;', env('DB_DATABASE'))); - $stmt->execute(); - $stmt->fetch(); + $pdo->exec(sprintf('CREATE DATABASE `%s` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;', env('DB_DATABASE'))); $this->info(sprintf('Created database "%s"', env('DB_DATABASE'))); return 0;