mirror of
https://github.com/koel/koel.git
synced 2026-04-25 08:46:00 +03:00
[GH-ISSUE #2048] [Bug]: table ids mix string and integer usages #1083
Labels
No labels
Authentication
Dependencies
Documentation
Feature Request
Flac
Help Wanted
Installation/Setup
Integration
Mobile
PR Welcome
Pending Release
Performance
Playlist
S3
Search
Sync
[Pri] Low
[Pri] Normal
[Status] Keep Open
[Status] Needs Author Reply
[Status] Needs Review
[Status] Stale
[Status] Will Implement
[Type] Blessed
[Type] Bug
[Type] Duplicate
[Type] Enhancement
[Type] Help Request
[Type] Question
[Type] Task
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/koel-koel#1083
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @AEnterprise on GitHub (Aug 15, 2025).
Original GitHub issue: https://github.com/koel/koel/issues/2048
Originally assigned to: @phanan on GitHub.
Read the Troubleshooting guide.
Reproduction steps
Expected behavior
Koel to be able to run the migrations and seed initial data
Actual behavior
Koel fails to seed initial data because postgres now checks more strictly against implicit conversions
also related: when trying to run init again think the seeding already happened even though it failed, causing it to leave the database in a corrupted state
Logs
[2025-08-15 10:40:59] production.ERROR: PDOException: SQLSTATE[42804]: Datatype mismatch: 7 ERROR: COALESCE types text and integer cannot be matched
LINE 1: ...rial_sequence('artists', 'id'), coalesce(max(id), 0) + 1, fa...
^ in /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:571
Stack trace:
#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(571): PDOStatement->execute()
#1 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(812): Illuminate\Database\Connection->{closure:Illuminate\Database\Connection::statement():560}()
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(779): Illuminate\Database\Connection->runQueryCallback()
#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(560): Illuminate\Database\Connection->run()
#4 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php(495): Illuminate\Database\Connection->statement()
#5 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(361): Illuminate\Database\DatabaseManager->__call()
#6 /var/www/html/database/seeders/ArtistTableSeeder.php(18): Illuminate\Support\Facades\Facade::__callStatic()
#7 /var/www/html/database/seeders/ArtistTableSeeder.php(12): Database\Seeders\ArtistTableSeeder::maybeResetPgsqlSerialValue()
#8 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Database\Seeders\ArtistTableSeeder->run()
#9 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\Container\BoundMethod::{closure:Illuminate\Container\BoundMethod::call():35}()
#10 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(95): Illuminate\Container\Util::unwrapIfClosure()
#11 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod()
#12 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(696): Illuminate\Container\BoundMethod::call()
#13 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Seeder.php(188): Illuminate\Container\Container->call()
#14 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Seeder.php(197): Illuminate\Database\Seeder->{closure:Illuminate\Database\Seeder::__invoke():187}()
#15 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Seeder.php(61): Illuminate\Database\Seeder->__invoke()
#16 /var/www/html/database/seeders/DatabaseSeeder.php(14): Illuminate\Database\Seeder->call()
#17 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Database\Seeders\DatabaseSeeder->run()
#18 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\Container\BoundMethod::{closure:Illuminate\Container\BoundMethod::call():35}()
#19 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(95): Illuminate\Container\Util::unwrapIfClosure()
#20 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod()
#21 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(696): Illuminate\Container\BoundMethod::call()
#22 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Seeder.php(188): Illuminate\Container\Container->call()
#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Seeder.php(197): Illuminate\Database\Seeder->{closure:Illuminate\Database\Seeder::__invoke():187}()
#24 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php(70): Illuminate\Database\Seeder->__invoke()
#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php(155): Illuminate\Database\Console\Seeds\SeedCommand->{closure:Illuminate\Database\Console\Seeds\SeedCommand::handle():69}()
#26 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php(69): Illuminate\Database\Eloquent\Model::unguarded()
#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\Database\Console\Seeds\SeedCommand->handle()
#28 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\Container\BoundMethod::{closure:Illuminate\Container\BoundMethod::call():35}()
#29 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(95): Illuminate\Container\Util::unwrapIfClosure()
#30 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod()
#31 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(696): Illuminate\Container\BoundMethod::call()
#32 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(213): Illuminate\Container\Container->call()
#33 /var/www/html/vendor/symfony/console/Command/Command.php(318): Illuminate\Console\Command->execute()
#34 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(182): Symfony\Component\Console\Command\Command->run()
#35 /var/www/html/vendor/symfony/console/Application.php(1092): Illuminate\Console\Command->run()
#36 /var/www/html/vendor/symfony/console/Application.php(341): Symfony\Component\Console\Application->doRunCommand()
#37 /var/www/html/vendor/symfony/console/Application.php(192): Symfony\Component\Console\Application->doRun()
#38 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Application.php(166): Symfony\Component\Console\Application->run()
#39 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(427): Illuminate\Console\Application->call()
#40 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(361): Illuminate\Foundation\Console\Kernel->call()
#41 /var/www/html/app/Console/Commands/InitCommand.php(208): Illuminate\Support\Facades\Facade::__callStatic()
#42 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php(40): App\Console\Commands\InitCommand::{closure:App\Console\Commands\InitCommand::maybeSeedDatabase():207}()
#43 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/View/Components/Factory.php(60): Illuminate\Console\View\Components\Task->render()
#44 /var/www/html/app/Console/Commands/InitCommand.php(207): Illuminate\Console\View\Components\Factory->__call()
#45 /var/www/html/app/Console/Commands/InitCommand.php(57): App\Console\Commands\InitCommand->maybeSeedDatabase()
#46 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): App\Console\Commands\InitCommand->handle()
#47 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\Container\BoundMethod::{closure:Illuminate\Container\BoundMethod::call():35}()
#48 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(95): Illuminate\Container\Util::unwrapIfClosure()
#49 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod()
#50 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(696): Illuminate\Container\BoundMethod::call()
#51 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(213): Illuminate\Container\Container->call()
#52 /var/www/html/vendor/symfony/console/Command/Command.php(318): Illuminate\Console\Command->execute()
#53 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(182): Symfony\Component\Console\Command\Command->run()
#54 /var/www/html/vendor/symfony/console/Application.php(1092): Illuminate\Console\Command->run()
#55 /var/www/html/vendor/symfony/console/Application.php(341): Symfony\Component\Console\Application->doRunCommand()
#56 /var/www/html/vendor/symfony/console/Application.php(192): Symfony\Component\Console\Application->doRun()
#57 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\Component\Console\Application->run()
#58 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\Foundation\Console\Kernel->handle()
#59 /var/www/html/artisan(16): Illuminate\Foundation\Application->handleCommand()
#60 {main}
Next Illuminate\Database\QueryException: SQLSTATE[42804]: Datatype mismatch: 7 ERROR: COALESCE types text and integer cannot be matched
LINE 1: ...rial_sequence('artists', 'id'), coalesce(max(id), 0) + 1, fa...
^ (Connection: pgsql, SQL: SELECT setval(pg_get_serial_sequence('artists', 'id'), coalesce(max(id), 0) + 1, false) FROM artists) in /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:825
Stack trace:
#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(779): Illuminate\Database\Connection->runQueryCallback()
#1 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(560): Illuminate\Database\Connection->run()
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php(495): Illuminate\Database\Connection->statement()
#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(361): Illuminate\Database\DatabaseManager->__call()
#4 /var/www/html/database/seeders/ArtistTableSeeder.php(18): Illuminate\Support\Facades\Facade::__callStatic()
#5 /var/www/html/database/seeders/ArtistTableSeeder.php(12): Database\Seeders\ArtistTableSeeder::maybeResetPgsqlSerialValue()
#6 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Database\Seeders\ArtistTableSeeder->run()
#7 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\Container\BoundMethod::{closure:Illuminate\Container\BoundMethod::call():35}()
#8 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(95): Illuminate\Container\Util::unwrapIfClosure()
#9 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod()
#10 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(696): Illuminate\Container\BoundMethod::call()
#11 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Seeder.php(188): Illuminate\Container\Container->call()
#12 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Seeder.php(197): Illuminate\Database\Seeder->{closure:Illuminate\Database\Seeder::__invoke():187}()
#13 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Seeder.php(61): Illuminate\Database\Seeder->__invoke()
#14 /var/www/html/database/seeders/DatabaseSeeder.php(14): Illuminate\Database\Seeder->call()
#15 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Database\Seeders\DatabaseSeeder->run()
#16 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\Container\BoundMethod::{closure:Illuminate\Container\BoundMethod::call():35}()
#17 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(95): Illuminate\Container\Util::unwrapIfClosure()
#18 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod()
#19 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(696): Illuminate\Container\BoundMethod::call()
#20 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Seeder.php(188): Illuminate\Container\Container->call()
#21 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Seeder.php(197): Illuminate\Database\Seeder->{closure:Illuminate\Database\Seeder::__invoke():187}()
#22 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php(70): Illuminate\Database\Seeder->__invoke()
#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php(155): Illuminate\Database\Console\Seeds\SeedCommand->{closure:Illuminate\Database\Console\Seeds\SeedCommand::handle():69}()
#24 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php(69): Illuminate\Database\Eloquent\Model::unguarded()
#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\Database\Console\Seeds\SeedCommand->handle()
#26 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\Container\BoundMethod::{closure:Illuminate\Container\BoundMethod::call():35}()
#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(95): Illuminate\Container\Util::unwrapIfClosure()
#28 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod()
#29 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(696): Illuminate\Container\BoundMethod::call()
#30 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(213): Illuminate\Container\Container->call()
#31 /var/www/html/vendor/symfony/console/Command/Command.php(318): Illuminate\Console\Command->execute()
#32 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(182): Symfony\Component\Console\Command\Command->run()
#33 /var/www/html/vendor/symfony/console/Application.php(1092): Illuminate\Console\Command->run()
#34 /var/www/html/vendor/symfony/console/Application.php(341): Symfony\Component\Console\Application->doRunCommand()
#35 /var/www/html/vendor/symfony/console/Application.php(192): Symfony\Component\Console\Application->doRun()
#36 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Application.php(166): Symfony\Component\Console\Application->run()
#37 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(427): Illuminate\Console\Application->call()
#38 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(361): Illuminate\Foundation\Console\Kernel->call()
#39 /var/www/html/app/Console/Commands/InitCommand.php(208): Illuminate\Support\Facades\Facade::__callStatic()
#40 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php(40): App\Console\Commands\InitCommand::{closure:App\Console\Commands\InitCommand::maybeSeedDatabase():207}()
#41 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/View/Components/Factory.php(60): Illuminate\Console\View\Components\Task->render()
#42 /var/www/html/app/Console/Commands/InitCommand.php(207): Illuminate\Console\View\Components\Factory->__call()
#43 /var/www/html/app/Console/Commands/InitCommand.php(57): App\Console\Commands\InitCommand->maybeSeedDatabase()
#44 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): App\Console\Commands\InitCommand->handle()
#45 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\Container\BoundMethod::{closure:Illuminate\Container\BoundMethod::call():35}()
#46 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(95): Illuminate\Container\Util::unwrapIfClosure()
#47 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod()
#48 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(696): Illuminate\Container\BoundMethod::call()
#49 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(213): Illuminate\Container\Container->call()
#50 /var/www/html/vendor/symfony/console/Command/Command.php(318): Illuminate\Console\Command->execute()
#51 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(182): Symfony\Component\Console\Command\Command->run()
#52 /var/www/html/vendor/symfony/console/Application.php(1092): Illuminate\Console\Command->run()
#53 /var/www/html/vendor/symfony/console/Application.php(341): Symfony\Component\Console\Application->doRunCommand()
#54 /var/www/html/vendor/symfony/console/Application.php(192): Symfony\Component\Console\Application->doRun()
#55 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\Component\Console\Application->run()
#56 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\Foundation\Console\Kernel->handle()
#57 /var/www/html/artisan(16): Illuminate\Foundation\Application->handleCommand()
#58 {main}
Koel version
latest docker tag, koel doesn't start to check its exact version number
How did you install Koel?
Official Docker image
Additional information
@phanan commented on GitHub (Aug 15, 2025):
Thanks for reporting. The quickest fix right now, I think, is to use a
lower Postgres version.
On Fri, Aug 15, 2025 at 12:53 AEnterprise @.***> wrote:
@phanan commented on GitHub (Aug 15, 2025):
Also I think the artist/album seeders are obsolete now and should be
removed. Do you think you can send over a PR?
On Fri, Aug 15, 2025 at 13:05 An Phan @.***> wrote:
@AEnterprise commented on GitHub (Aug 15, 2025):
Looks like you already did, but the issue is more a symptom of bad column usage. Downgrading works but imlicit conversions are not great. It is bad for performance and can have unintended side effects. indexes being strings can make searches less efficient as well so it might be best to look into migrating it to integers. i can probably add a migrator for that.
Also i don't know what postgres version adds the more strict requirements, but postgres 13 goes EOL in just a few months so this isn't a viable solution for much longer
@phanan commented on GitHub (Aug 15, 2025):
I totally agree regarding implicit conversions, but it's not the issue here. Rather, Koel's first versions use integers for artist/album IDs, and the seeders (where the error is from) are catered to that usage. Later versions of Koel migrated to string (ULID) types, and such seeders became obsolete. It was just undiscovered due to Postgres silently ignoring the conversion. There are no other implicit conversions in the codebase (as far as I'm aware of).
@AEnterprise commented on GitHub (Aug 15, 2025):
tested this against the 7.12 release and this resolved the issue. koel now runs without issues againt postgres 16