BookStackApp / BookStack

A platform to create documentation/wiki content built with PHP & Laravel
https://www.bookstackapp.com/
MIT License
15.1k stars 1.89k forks source link

Image becomes broken after a period of time #4620

Closed johnny-yeng closed 9 months ago

johnny-yeng commented 12 months ago

Attempted Debugging

Searched GitHub Issues

Describe the Scenario

I found out that my uploaded images become broken after a period of time, I have no clue as to why this happens so I'm looking for someone who can give me a hint on how I can solve this. image

Exact BookStack Version

v23.08.3

Log Content

[2023-10-14 00:14:56] production.ERROR: SQLSTATE[42000]: Syntax error or access violation: 1235 This version of MySQL doesn't yet support 'existing primary key drop without adding a new primary key. In @@sql_generate_invisible_primary_key=ON mode table should have a primary key. Please add a new primary key to be able to drop existing primary key.' (SQL: ALTER TABLE cache CHANGE value value MEDIUMTEXT CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 42000): SQLSTATE[42000]: Syntax error or access violation: 1235 This version of MySQL doesn't yet support 'existing primary key drop without adding a new primary key. In @@sql_generate_invisible_primary_key=ON mode table should have a primary key. Please add a new primary key to be able to drop existing primary key.' (SQL: ALTER TABLE cache CHANGE value value MEDIUMTEXT CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`) at /app/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php:760)
[stacktrace]
#0 /app/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php(720): Illuminate\\Database\\Connection->runQueryCallback()
#1 /app/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php(534): Illuminate\\Database\\Connection->run()
#2 /app/www/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php(109): Illuminate\\Database\\Connection->statement()
#3 /app/www/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php(439): Illuminate\\Database\\Schema\\Blueprint->build()
#4 /app/www/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php(269): Illuminate\\Database\\Schema\\Builder->build()
#5 /app/www/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(338): Illuminate\\Database\\Schema\\Builder->table()
#6 /app/www/database/migrations/2023_08_21_174248_increase_cache_size.php(16): Illuminate\\Support\\Facades\\Facade::__callStatic()
#7 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(488): Illuminate\\Database\\Migrations\\Migration@anonymous->up()
#8 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(406): Illuminate\\Database\\Migrations\\Migrator->runMethod()
#9 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(415): Illuminate\\Database\\Migrations\\Migrator->Illuminate\\Database\\Migrations\\{closure}()
#10 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(216): Illuminate\\Database\\Migrations\\Migrator->runMigration()
#11 /app/www/vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php(37): Illuminate\\Database\\Migrations\\Migrator->Illuminate\\Database\\Migrations\\{closure}()
#12 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(751): Illuminate\\Console\\View\\Components\\Task->render()
#13 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(216): Illuminate\\Database\\Migrations\\Migrator->write()
#14 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(181): Illuminate\\Database\\Migrations\\Migrator->runUp()
#15 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(124): Illuminate\\Database\\Migrations\\Migrator->runPending()
#16 /app/www/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(88): Illuminate\\Database\\Migrations\\Migrator->run()
#17 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(628): Illuminate\\Database\\Console\\Migrations\\MigrateCommand->Illuminate\\Database\\Console\\Migrations\\{closure}()
#18 /app/www/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(81): Illuminate\\Database\\Migrations\\Migrator->usingConnection()
#19 /app/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Database\\Console\\Migrations\\MigrateCommand->handle()
#20 /app/www/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#21 /app/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
#22 /app/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod()
#23 /app/www/vendor/laravel/framework/src/Illuminate/Container/Container.php(661): Illuminate\\Container\\BoundMethod::call()
#24 /app/www/vendor/laravel/framework/src/Illuminate/Console/Command.php(183): Illuminate\\Container\\Container->call()
#25 /app/www/vendor/symfony/console/Command/Command.php(291): Illuminate\\Console\\Command->execute()
#26 /app/www/vendor/laravel/framework/src/Illuminate/Console/Command.php(152): Symfony\\Component\\Console\\Command\\Command->run()
#27 /app/www/vendor/symfony/console/Application.php(1014): Illuminate\\Console\\Command->run()
#28 /app/www/vendor/symfony/console/Application.php(301): Symfony\\Component\\Console\\Application->doRunCommand()
#29 /app/www/vendor/symfony/console/Application.php(171): Symfony\\Component\\Console\\Application->doRun()
#30 /app/www/vendor/laravel/framework/src/Illuminate/Console/Application.php(102): Symfony\\Component\\Console\\Application->run()
#31 /app/www/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(155): Illuminate\\Console\\Application->run()
#32 /app/www/artisan(35): Illuminate\\Foundation\\Console\\Kernel->handle()
#33 {main}

[previous exception] [object] (PDOException(code: 42000): SQLSTATE[42000]: Syntax error or access violation: 1235 This version of MySQL doesn't yet support 'existing primary key drop without adding a new primary key. In @@sql_generate_invisible_primary_key=ON mode table should have a primary key. Please add a new primary key to be able to drop existing primary key.' at /app/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php:545)
[stacktrace]
#0 /app/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php(545): PDOStatement->execute()
#1 /app/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php(753): Illuminate\\Database\\Connection->Illuminate\\Database\\{closure}()
#2 /app/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php(720): Illuminate\\Database\\Connection->runQueryCallback()
#3 /app/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php(534): Illuminate\\Database\\Connection->run()
#4 /app/www/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php(109): Illuminate\\Database\\Connection->statement()
#5 /app/www/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php(439): Illuminate\\Database\\Schema\\Blueprint->build()
#6 /app/www/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php(269): Illuminate\\Database\\Schema\\Builder->build()
#7 /app/www/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(338): Illuminate\\Database\\Schema\\Builder->table()
#8 /app/www/database/migrations/2023_08_21_174248_increase_cache_size.php(16): Illuminate\\Support\\Facades\\Facade::__callStatic()
#9 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(488): Illuminate\\Database\\Migrations\\Migration@anonymous->up()
#10 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(406): Illuminate\\Database\\Migrations\\Migrator->runMethod()
#11 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(415): Illuminate\\Database\\Migrations\\Migrator->Illuminate\\Database\\Migrations\\{closure}()
#12 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(216): Illuminate\\Database\\Migrations\\Migrator->runMigration()
#13 /app/www/vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php(37): Illuminate\\Database\\Migrations\\Migrator->Illuminate\\Database\\Migrations\\{closure}()
#14 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(751): Illuminate\\Console\\View\\Components\\Task->render()
#15 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(216): Illuminate\\Database\\Migrations\\Migrator->write()
#16 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(181): Illuminate\\Database\\Migrations\\Migrator->runUp()
#17 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(124): Illuminate\\Database\\Migrations\\Migrator->runPending()
#18 /app/www/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(88): Illuminate\\Database\\Migrations\\Migrator->run()
#19 /app/www/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(628): Illuminate\\Database\\Console\\Migrations\\MigrateCommand->Illuminate\\Database\\Console\\Migrations\\{closure}()
#20 /app/www/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(81): Illuminate\\Database\\Migrations\\Migrator->usingConnection()
#21 /app/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Database\\Console\\Migrations\\MigrateCommand->handle()
#22 /app/www/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#23 /app/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
#24 /app/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod()
#25 /app/www/vendor/laravel/framework/src/Illuminate/Container/Container.php(661): Illuminate\\Container\\BoundMethod::call()
#26 /app/www/vendor/laravel/framework/src/Illuminate/Console/Command.php(183): Illuminate\\Container\\Container->call()
#27 /app/www/vendor/symfony/console/Command/Command.php(291): Illuminate\\Console\\Command->execute()
#28 /app/www/vendor/laravel/framework/src/Illuminate/Console/Command.php(152): Symfony\\Component\\Console\\Command\\Command->run()
#29 /app/www/vendor/symfony/console/Application.php(1014): Illuminate\\Console\\Command->run()
#30 /app/www/vendor/symfony/console/Application.php(301): Symfony\\Component\\Console\\Application->doRunCommand()
#31 /app/www/vendor/symfony/console/Application.php(171): Symfony\\Component\\Console\\Application->doRun()
#32 /app/www/vendor/laravel/framework/src/Illuminate/Console/Application.php(102): Symfony\\Component\\Console\\Application->run()
#33 /app/www/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(155): Illuminate\\Console\\Application->run()
#34 /app/www/artisan(35): Illuminate\\Foundation\\Console\\Kernel->handle()
#35 {main}
"}

Hosting Environment

Installed using Docker image from linuxserver/bookstack Hosted on Azure image

ssddanbrown commented 11 months ago

Hi @johnny-yeng, Sorry for my late response, I had missed this originally. How are you dealing with volumes in your environment?

My initial guess, since this is a docker environment, is that the images are not being persisted to storage anywhere so are being destroyed with the container when a new container is created.

ssddanbrown commented 9 months ago

Since there's been no further follow up on this I'll close this off.