Feature proposal #8238
closedImplement MySQL 8.0.17+ compatibility
Description
Currently installing CB on MySQL 8.0 will cause various compatibility errors. Joomla does not currently officially support MySQL 8.0 in Joomla 3.x, but likely will with 4.x. See below regarding issues found and fixed in Joomla for MySQL 8.0 compatibility.
https://github.com/joomla/joomla-cms/issues/25452
- https://github.com/joomla/joomla-cms/pull/25658
It results in errors like the following during install.
Unknown column 'access' in 'field list'
It is likely the cause of the below topics issues as well.
https://www.joomlapolis.com/forum/146-general/242740-update-error-message
https://www.joomlapolis.com/forum/255-developer-members-support/234006-installation-errors-with-new-packages
Updated by beat about 4 years ago
- Status changed from New to Assigned
- Assignee set to beat
- Priority changed from Normal to Urgent
- % Done changed from 0 to 30
MR !1598 fixes the database check tool for int and tinyint that are missing size/width since MySQL 8.0.17.
See https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-19.html
Updated by beat about 4 years ago
- % Done changed from 30 to 100
Actually, that fix also fixes the 'access' column issue.
That change has been made in MySQL 8.0.17, released 2019-07-22: https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-17.html
And has been documented with 8.0.19 release notes on 2020-01-13: https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-19.html
Therefore any forum reports before 2019-07-22 are not the same incompatibility, but might be related to just another database issue with viewaccess column width/sizes that got changed and prompted a new initial value ?.
I could reproduce that access-column issue behavior with a wrong width set to viewaccesslevel in database.
But the initialvalue query doesn't make sense anyway if the column exists and is NOT null, as only NULL columns are updated.
I also removed that old viewaccesslevel upgrade dating from 2014 (introduced in Joomla 2).
Updated by beat about 4 years ago
Full explanation in first reply here: https://stackoverflow.com/questions/60892749/mysql-8-ignoring-integer-lengths
The "length" of an integer column doesn't mean anything. A column of int(11) is the same as int(2) or int(40). They are all a fixed-size, 32-bit integer data type. They support the same minimum and maximum value.
The "length" of integer columns has been a confusing feature of MySQL for years. It's only a hint that affects the display width, not the storage or the range of values. Practically, it only matters when you use the ZEROFILL option.
Updated by beat about 4 years ago
- Status changed from Assigned to Closed
- Target version changed from CB 2.8 to CB 2.4.7
Updated by beat about 4 years ago
- Subject changed from Implement MySQL 8.0 compatibility to Implement MySQL 8.0.17+ compatibility