Closed MrDrache333 closed 7 months ago
That's not related to MySQL's version, but with the fact that your password is in fact a number (1234).
See https://github.com/shlinkio/shlink-config/blob/main/functions/functions.php#L43
I need to re-evaluate this decision, but it should work if you use a non-fully-numeric password.
BTW, this is probably a bug introduced in Shlink 4.0.0. One thing it changes is updating to the latest major version of the database abstraction library.
I suppose previous versions didn't run in strict mode, which makes integers be converted to string transparently. In strict mode it would throw an error like this instead.
It's usually a good practice to define strict versions for images, as in this case you got Shlink unintentionally updated when updating mysql, making you think that was the problem.
BTW, this is probably a bug introduced in Shlink 4.0.0. One thing it changes is updating to the latest major version of the database abstraction library.
I suppose previous versions didn't run in strict mode, which makes integers be converted to string transparently. In strict mode it would throw an error like this instead.
It's usually a good practice to define strict versions for images, as in this case you got Shlink unintentionally updated when updating mysql, making you think that was the problem.
I can confirm this. Although the password provided in my compose doesn't show the real configured password, it actually contained just numbers. Because the Database was already created, changing the password afterwards resulted in a failed authentication. Changing the password back to the previous one with just numbers and rolling back to shlink Version 3 resolved the error. Thanks for the explanation.
I'll keep this open, as I actually need to fix it 😅. If you want (or have to) use only numbers as the database password, it should be possible.
BTW, rolling back from Shlink 4.x to 3.x might not be a great idea, as it has applied a bunch of database migrations that have left the database in an incompatible way with Shlink 3.x. You'll run into issues, probably when trying to create a new short URL, and definitely in case you are using device-specific long urls.
I have just released Shlink 4.0.3, which fixes this. You should be able to use numeric database credentials for the database with that version.
Shlink version
4.0.2
PHP version
8.3.0
How do you serve Shlink
Docker image
Database engine
MySQL
Database version
8.3.0
Current behavior
Everything worked fine for weeks until I upgraded the mysql Database Image from 8.0 to the current Version 8.3. The Database starts up normally but the normal Shlink instance didn't. The following log shows the last outputs from the Shlink Container after startup with the verbosity env set to 3.
Expected behavior
A normal startup just like before.
Minimum steps to reproduce