karlomikus / bar-assistant

Bar assistant is a all-in-one solution for managing your home bar
https://barassistant.app
MIT License
525 stars 22 forks source link

Can't upgrade past 2.2.0 - duplicate column abv #266

Closed toastwerks closed 6 months ago

toastwerks commented 6 months ago

Describe the bug I'm trying to upgrade from: Salt Rim: v1.16.0, Bar Assistant: v2.2.0, Meilisearch: 1.2.0 to go to bar assistant 2.6.0 so that I can migrate to 3.0. If I upgrade to 2.4.0, it throws an error about duplicate columns in the logs but continues to load completely. If I go past 2.4.0, the logs stop at that error message and the application fails to load.

To Reproduce I'm starting at 2.2.0, if I pull 2.3.0 or 2.4.0 it shows the duplicate column error but starts, any 2.5.x or 2.6.0 fails to start.

Versions:

Additional context, log outputs... bar-assistant-bar-assistant-1 | Database already exists, running migrations... bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | INFO Running migrations. bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | 2023_07_08_184606_add_abv_to_cocktails_table ...................... 4ms FAIL bar-assistant-bar-assistant-1 | [2024-03-17 19:44:50] production.ERROR: SQLSTATE[HY000]: General error: 1 duplicate column name: abv (Connection: sqlite, SQL: alter table "cocktails" add column "abv" numeric) {"exception":"[object] (Illuminate\Database\QueryException(code: HY000): SQLSTATE[HY000]: General error: 1 duplicate column name: abv (Connection: sqlite, SQL: alter table \"cocktails\" add column \"abv\" numeric) at /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Connection.php:795) bar-assistant-bar-assistant-1 | [stacktrace] bar-assistant-bar-assistant-1 | #0 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Connection.php(755): Illuminate\Database\Connection->runQueryCallback() bar-assistant-bar-assistant-1 | #1 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Connection.php(569): Illuminate\Database\Connection->run() bar-assistant-bar-assistant-1 | #2 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php(110): Illuminate\Database\Connection->statement() bar-assistant-bar-assistant-1 | #3 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php(439): Illuminate\Database\Schema\Blueprint->build() bar-assistant-bar-assistant-1 | #4 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php(269): Illuminate\Database\Schema\Builder->build() bar-assistant-bar-assistant-1 | #5 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(353): Illuminate\Database\Schema\Builder->table() bar-assistant-bar-assistant-1 | #6 /var/www/cocktails/database/migrations/2023_07_08_184606_add_abv_to_cocktails_table.php(16): Illuminate\Support\Facades\Facade::callStatic() bar-assistant-bar-assistant-1 | #7 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(493): Illuminate\Database\Migrations\Migration@anonymous->up() bar-assistant-bar-assistant-1 | #8 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(410): Illuminate\Database\Migrations\Migrator->runMethod() bar-assistant-bar-assistant-1 | #9 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(419): Illuminate\Database\Migrations\Migrator->Illuminate\Database\Migrations\{closure}() bar-assistant-bar-assistant-1 | #10 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(216): Illuminate\Database\Migrations\Migrator->runMigration() bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | #11 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php(37): Illuminate\Database\Migrations\Migrator->Illuminate\Database\Migrations\{closure}() bar-assistant-bar-assistant-1 | #12 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(756): Illuminate\Console\View\Components\Task->render() bar-assistant-bar-assistant-1 | #13 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(216): Illuminate\Database\Migrations\Migrator->write() bar-assistant-bar-assistant-1 | #14 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(181): Illuminate\Database\Migrations\Migrator->runUp() bar-assistant-bar-assistant-1 | #15 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(124): Illuminate\Database\Migrations\Migrator->runPending() bar-assistant-bar-assistant-1 | #16 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(90): Illuminate\Database\Migrations\Migrator->run() bar-assistant-bar-assistant-1 | #17 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(633): Illuminate\Database\Console\Migrations\MigrateCommand->Illuminate\Database\Console\Migrations\{closure}() bar-assistant-bar-assistant-1 | #18 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(83): Illuminate\Database\Migrations\Migrator->usingConnection() bar-assistant-bar-assistant-1 | #19 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\Database\Console\Migrations\MigrateCommand->handle() bar-assistant-bar-assistant-1 | #20 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}() bar-assistant-bar-assistant-1 | #21 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure() bar-assistant-bar-assistant-1 | #22 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod() bar-assistant-bar-assistant-1 | #23 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Container/Container.php(662): Illuminate\Container\BoundMethod::call() bar-assistant-bar-assistant-1 | #24 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\Container\Container->call() bar-assistant-bar-assistant-1 | #25 /var/www/cocktails/vendor/symfony/console/Command/Command.php(326): Illuminate\Console\Command->execute() bar-assistant-bar-assistant-1 | #26 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\Component\Console\Command\Command->run() bar-assistant-bar-assistant-1 | #27 /var/www/cocktails/vendor/symfony/console/Application.php(1081): Illuminate\Console\Command->run() bar-assistant-bar-assistant-1 | #28 /var/www/cocktails/vendor/symfony/console/Application.php(320): Symfony\Component\Console\Application->doRunCommand() bar-assistant-bar-assistant-1 | #29 /var/www/cocktails/vendor/symfony/console/Application.php(174): Symfony\Component\Console\Application->doRun() bar-assistant-bar-assistant-1 | #30 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(201): Symfony\Component\Console\Application->run() bar-assistant-bar-assistant-1 | #31 /var/www/cocktails/artisan(35): Illuminate\Foundation\Console\Kernel->handle() bar-assistant-bar-assistant-1 | #32 {main} bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | [previous exception] [object] (PDOException(code: HY000): SQLSTATE[HY000]: General error: 1 duplicate column name: abv at /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Connection.php:574) bar-assistant-bar-assistant-1 | [stacktrace] bar-assistant-bar-assistant-1 | #0 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Connection.php(574): PDO->prepare() bar-assistant-bar-assistant-1 | #1 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Connection.php(788): Illuminate\Database\Connection->Illuminate\Database\{closure}() bar-assistant-bar-assistant-1 | #2 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Connection.php(755): Illuminate\Database\Connection->runQueryCallback() bar-assistant-bar-assistant-1 | #3 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Connection.php(569): Illuminate\Database\Connection->run() bar-assistant-bar-assistant-1 | #4 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php(110): Illuminate\Database\Connection->statement() bar-assistant-bar-assistant-1 | #5 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php(439): Illuminate\Database\Schema\Blueprint->build() bar-assistant-bar-assistant-1 | #6 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php(269): Illuminate\Database\Schema\Builder->build() bar-assistant-bar-assistant-1 | #7 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(353): Illuminate\Database\Schema\Builder->table() bar-assistant-bar-assistant-1 | #8 /var/www/cocktails/database/migrations/2023_07_08_184606_add_abv_to_cocktails_table.php(16): Illuminate\Support\Facades\Facade::callStatic() bar-assistant-bar-assistant-1 | #9 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(493): Illuminate\Database\Migrations\Migration@anonymous->up() bar-assistant-bar-assistant-1 | #10 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(410): Illuminate\Database\Migrations\Migrator->runMethod() bar-assistant-bar-assistant-1 | #11 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(419): Illuminate\Database\Migrations\Migrator->Illuminate\Database\Migrations\{closure}() bar-assistant-bar-assistant-1 | #12 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(216): Illuminate\Database\Migrations\Migrator->runMigration() bar-assistant-bar-assistant-1 | #13 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php(37): Illuminate\Database\Migrations\Migrator->Illuminate\Database\Migrations\{closure}() bar-assistant-bar-assistant-1 | #14 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(756): Illuminate\Console\View\Components\Task->render() bar-assistant-bar-assistant-1 | #15 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(216): Illuminate\Database\Migrations\Migrator->write() bar-assistant-bar-assistant-1 | #16 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(181): Illuminate\Database\Migrations\Migrator->runUp() bar-assistant-bar-assistant-1 | #17 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(124): Illuminate\Database\Migrations\Migrator->runPending() bar-assistant-bar-assistant-1 | #18 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(90): Illuminate\Database\Migrations\Migrator->run() bar-assistant-bar-assistant-1 | #19 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(633): Illuminate\Database\Console\Migrations\MigrateCommand->Illuminate\Database\Console\Migrations\{closure}() bar-assistant-bar-assistant-1 | #20 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(83): Illuminate\Database\Migrations\Migrator->usingConnection() bar-assistant-bar-assistant-1 | #21 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\Database\Console\Migrations\MigrateCommand->handle() bar-assistant-bar-assistant-1 | #22 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}() bar-assistant-bar-assistant-1 | #23 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure() bar-assistant-bar-assistant-1 | #24 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod() bar-assistant-bar-assistant-1 | #25 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Container/Container.php(662): Illuminate\Container\BoundMethod::call() bar-assistant-bar-assistant-1 | #26 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\Container\Container->call() bar-assistant-bar-assistant-1 | #27 /var/www/cocktails/vendor/symfony/console/Command/Command.php(326): Illuminate\Console\Command->execute() bar-assistant-bar-assistant-1 | #28 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\Component\Console\Command\Command->run() bar-assistant-bar-assistant-1 | #29 /var/www/cocktails/vendor/symfony/console/Application.php(1081): Illuminate\Console\Command->run() bar-assistant-bar-assistant-1 | #30 /var/www/cocktails/vendor/symfony/console/Application.php(320): Symfony\Component\Console\Application->doRunCommand() bar-assistant-bar-assistant-1 | #31 /var/www/cocktails/vendor/symfony/console/Application.php(174): Symfony\Component\Console\Application->doRun() bar-assistant-bar-assistant-1 | #32 /var/www/cocktails/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(201): Symfony\Component\Console\Application->run() bar-assistant-bar-assistant-1 | #33 /var/www/cocktails/artisan(35): Illuminate\Foundation\Console\Kernel->handle() bar-assistant-bar-assistant-1 | #34 {main} bar-assistant-bar-assistant-1 | "} bar-assistant-bar-assistant-1 | In Connection.php line 795: bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | SQLSTATE[HY000]: General error: 1 duplicate column name: abv (Connection: s bar-assistant-bar-assistant-1 | qlite, SQL: alter table "cocktails" add column "abv" numeric) bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | In Connection.php line 574: bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | SQLSTATE[HY000]: General error: 1 duplicate column name: abv bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | Updating search index settings... bar-assistant-bar-assistant-1 | Syncing cocktails and ingredients to meilisearch... bar-assistant-bar-assistant-1 | Adding routes and config to cache... bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | INFO Configuration cached successfully. bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | INFO Routes cached successfully. bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | !! bar-assistant-bar-assistant-1 | ! Application ready ! bar-assistant-bar-assistant-1 | !! bar-assistant-bar-assistant-1 | [17-Mar-2024 19:44:55] NOTICE: fpm is running, pid 23 bar-assistant-bar-assistant-1 | [17-Mar-2024 19:44:55] NOTICE: ready to handle connections

karlomikus commented 6 months ago

I'm guessing your database got updated to 2.3.0 and you've rolled back to older version or something and now migrations are out of sync.

You can try the following:

  1. Backup your database
  2. Use 2.2.0 version and manually delete the abv column: docker compose exec bar-assistant sqlite3 storage/bar-assistant/database.sqlite 'ALTER TABLE cocktails DROP COLUMN abv;'
  3. Update to 2.3.0
toastwerks commented 6 months ago

Thank you for the point in the right direction. Weirdly, from on 2.2.0 I ran the drop column command and got: Error: in prepare, no such column: "abv" ALTER TABLE cocktails DROP COLUMN abv; error here ---^

But then I upgraded to 2.3.0 (and through to 2.6.0) without getting the duplicate column error. Now following the 2.x to 3.x migration instructions, it hangs up loading in the logs and just sits at the following:

bar-assistant-bar-assistant-1 | Starting Bar Assistant, this can take a few minutes depending on the system... bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 | User uid: 1000 bar-assistant-bar-assistant-1 | User gid: 1000 bar-assistant-bar-assistant-1 | bar-assistant-bar-assistant-1 |

I let it run for a while and it never moved past that point. Still poking at it.

toastwerks commented 6 months ago

Ok, current situation is that I have it migrated to v2 salt rim and v3 bar assistant, it takes over 5 minutes to completely start up. Which may be normal? Not sure. We can probably close this one unless you want me to test anything.

karlomikus commented 6 months ago

Five minutes to start seems long but this depends on you server specs.