J3 Issue ?
avatar ReLater
ReLater
6 Jul 2019

Yes, I know this doc: https://docs.joomla.org/Joomla_and_MySQL_8

But I don't understand "PHP 7.3 (alpha) is supporting MySQL 8 though.".

Because of a forum request after a fresh installation of Joomla 3.9.8 concerning database fix with lots of errors that don't go away and because I found older threads in other forums with similiar finds:

Is it correct to tell people "Joomla 3 and Joomla 4 are fully compatible with PHP7.3 + Mysql 8"?
Or is the PHP version completely irrelevant?
Or is the database fix a known issue and the error messages there can be ignored?

Hoster in this case is webgo.de. They also provide a Joomla software installer where the same errors occur after installation. No difference if you use the official Joomla download.

Sorry for German messages:

    Die Tabelle „'x65qv_languages'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'sitename'“ mit Typ „VARCHAR(1024)“. (Von Datei: „2.5.0-2012-01-14.sql“.)
    Die Tabelle „'x65qv_associations'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'id'“ mit Typ „INT(11)“. (Von Datei: „3.0.3.sql“.)
    Die Tabelle „'x65qv_user_profiles'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'profile_value'“ mit Typ „TEXT“. (Von Datei: „3.3.4-2014-08-03.sql“.)
    Die Tabelle „'x65qv_redirect_links'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'old_url'“ mit Typ „VARCHAR(2048)“. (Von Datei: „3.5.0-2016-03-01.sql“.)
    Die Tabelle „'x65qv_redirect_links'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'new_url'“ mit Typ „VARCHAR(2048)“. (Von Datei: „3.5.0-2016-03-01.sql“.)
    Die Tabelle „'x65qv_redirect_links'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'referer'“ mit Typ „VARCHAR(2048)“. (Von Datei: „3.5.0-2016-03-01.sql“.)
    Die Tabelle „'x65qv_redirect_links'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'new_url'“ mit Typ „VARCHAR(2048)“. (Von Datei: „3.6.0-2016-04-06.sql“.)
    Die Tabelle „'x65qv_newsfeeds'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'link'“ mit Typ „VARCHAR(2048)“. (Von Datei: „3.6.3-2016-08-15.sql“.)
    Die Tabelle „'x65qv_extensions'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'enabled'“ mit Typ „TINYINT(3)“. (Von Datei: „3.7.0-2016-11-04.sql“.)
    Die Tabelle „'x65qv_modules'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'content'“ mit Typ „text“. (Von Datei: „3.7.0-2016-11-27.sql“.)
    Die Tabelle „'x65qv_ucm_content'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'core_body'“ mit Typ „mediumtext“. (Von Datei: „3.7.0-2017-01-08.sql“.)
    Die Tabelle „'x65qv_ucm_content'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'core_params'“ mit Typ „text“. (Von Datei: „3.7.0-2017-01-08.sql“.)
    Die Tabelle „'x65qv_ucm_content'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'core_images'“ mit Typ „text“. (Von Datei: „3.7.0-2017-01-08.sql“.)
    Die Tabelle „'x65qv_ucm_content'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'core_urls'“ mit Typ „text“. (Von Datei: „3.7.0-2017-01-08.sql“.)
    Die Tabelle „'x65qv_ucm_content'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'core_metakey'“ mit Typ „text“. (Von Datei: „3.7.0-2017-01-08.sql“.)
    Die Tabelle „'x65qv_ucm_content'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'core_metadesc'“ mit Typ „text“. (Von Datei: „3.7.0-2017-01-08.sql“.)
    Die Tabelle „'x65qv_categories'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'description'“ mit Typ „mediumtext“. (Von Datei: „3.7.0-2017-01-09.sql“.)
    Die Tabelle „'x65qv_categories'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'params'“ mit Typ „text“. (Von Datei: „3.7.0-2017-01-09.sql“.)
    Die Tabelle „'x65qv_finder_links'“ hat den falschen Typ oder die falschen Attribute für die Spalte „'description'“ mit Typ „text“. (Von Datei: „3.7.0-2017-03-19.sql“.)

Thanks a lot for clarification!

avatar ReLater ReLater - open - 6 Jul 2019
avatar joomla-cms-bot joomla-cms-bot - change - 6 Jul 2019
Labels Added: ?
avatar joomla-cms-bot joomla-cms-bot - labeled - 6 Jul 2019
avatar franz-wohlkoenig franz-wohlkoenig - change - 6 Jul 2019
Labels Added: J3 Issue
avatar franz-wohlkoenig franz-wohlkoenig - labeled - 6 Jul 2019
avatar ReLater ReLater - change - 6 Jul 2019
The description was changed
avatar ReLater ReLater - edited - 6 Jul 2019
avatar ReLater ReLater - change - 6 Jul 2019
The description was changed
avatar ReLater ReLater - edited - 6 Jul 2019
avatar franz-wohlkoenig franz-wohlkoenig - change - 6 Jul 2019
Status New Discussion
avatar mbabker
mbabker - comment - 6 Jul 2019

The auth plugin fix in your MySQL config is going to be independent of PHP version.

IIRC, PHP 7.3 added support for whatever the default MySQL 8 ships. That's the only change in PHP I'm aware of.

Every other problem is basically the same problems that haven't been addressed since MySQL 5.7 shipped.

avatar richard67
richard67 - comment - 7 Jul 2019

@ReLater Do I understand right that these error messages are shown at the "Extensions -> Manage -> Database" view after a new, clean installation of Joomla CMS 3.9.8? If so, I've never observed that, neither in my local testing environments nor on my testing sites at 1and1 shared hosting.

The messages say that the data types of the reported columns as found in the schema update scripts does not match the data types in the database, which come from joomla.sql.

When checking for the last reported error as an example, I see e.g. for MySQL that in file 3.7.0-2017-03-19.sql we have "ALTER TABLE `#__finder_links` MODIFY `description` text", i.e. no default value, while in joomla.sql we have "`description` text DEFAULT NULL" for that column.

The database schema checker then reports that difference in a bit misleading way, because it just tells the column definition found in the schema update sql but not the one which it has found in database, so there is no info about default null in the error message.

Questions are now: Why doesn't that happen to everybody making a new clean installation of current staging or 3.9.9 RC or 3.9.8? And why haven't old schema updates be changed in order not to report that difference (i.e. add the default null to those columns. This is one of the rare cases when it is required to change old schema updates.) plus adding new schema updates for adding the default null to these columns?

Before I do big research with GitHub's blame function: @alikon Do you know who has added default null to particular columns in joomla.sql without having done schema update stuff for that?

At least we have a to do list if the above list of error messages is complete. @ReLater Is that the case? Are they complete?

@mbabker What do you mean with "Every other problem is basically the same problems that haven't been addressed since MySQL 5.7 shipped"? Was it the schema update thing and how database schema check works, which causes the problems I've described in this comment here above, or was it soemthing else?

avatar richard67
richard67 - comment - 7 Jul 2019

Hmm, a possible explanation why it affects only a few people and how it could be related to MySQL8 could be that in MySQL8 there are different defaults for handling missing default null when modifying database columns with ALTER TABLE ... MODIFY .... But this would happen on update, not on new installation.

avatar richard67
richard67 - comment - 7 Jul 2019

Now I am even more confused because for the 1st error (column sitename of table #__languages) I can't see any difference between joomla.sql and 2.5.0-2012-01-14.sql for that column.

avatar richard67
richard67 - comment - 7 Jul 2019

Maybe SHOW COLUMNS SQL command which is used by the schema checker works differently in MySQL8 regarding empty default values of columns?

avatar mbabker
mbabker - comment - 7 Jul 2019

What do you mean with "Every other problem is basically the same problems that haven't been addressed since MySQL 5.7 shipped"? Was it the schema update thing and how database schema check works, which causes the problems I've described in this comment here above, or was it soemthing else?

AFAIK there are no B/C breaking changes in how MySQL 8 parses database schema that would impact the (IMO flawed) Joomla\CMS\Schema library.

avatar mbabker
mbabker - comment - 7 Jul 2019

(and that every other MySQL schema related problem that is still a problem is a result of changes in MySQL 5.7, not MySQL 8)

avatar richard67
richard67 - comment - 7 Jul 2019

@ReLater Could you ever reproduce that problem? To me it seems not to be related to MySQL 8, I agree with Michael. Could you post link to that forum request so I and others can check?

avatar ReLater
ReLater - comment - 7 Jul 2019

I got an additional information: The thread opener used PHP7.1.

Do I understand right that these error messages are shown at the "Extensions -> Manage -> Database" view after a new, clean installation of Joomla CMS 3.9.8?

Yes.

The user reported that he tried 3 installations with the software installer at webgo.de in different sapces and databaes. Always the same result.
I told him then to try again with an official stable Joomla package. Same result.

He asked webgo.de. They told him that it's a database issue and Joomla is not MySQL8 ready and that he must change to MariaDB. (I just wonder about the software installer of the provider that runs into same issue but that's another thing).

German forum: https://forum.joomla.de/thread/8035-datenbankfehler-bei-joomla-neu-installationen-durch-reparaturfunktion-nicht-behe/

avatar ReLater
ReLater - comment - 7 Jul 2019

Could you ever reproduce that problem?

No. I'm on MySQL 5.7 and XAMPP changed to MariaDB.

avatar richard67
richard67 - comment - 7 Jul 2019

Well, I am German so I will read it.

avatar richard67
richard67 - comment - 7 Jul 2019

Well I just see the forum post starts with "Habe hier drei Joomla Neuinstallationen. Alle drei wurden auch auf 3.9.8 upgedatet."

That means "I have three Joomla new installations. All three have been updated to 3.9.8.".

So is it really about new install, or does that provider install some older version and then the update to 3.9.8 runs? I am more confused now. So or so the error messages from database check look more to me like a failed update than a new installation.

avatar richard67
richard67 - comment - 7 Jul 2019

Ah I see, hoster installs a 3.9.7 and this is then updated to 3.9.8.

avatar ReLater
ReLater - comment - 7 Jul 2019

Read on please. The whole thread is a bit ping-pong before we got all infos.

And he tried also an official stable 3.9.8 after failures with the installer of the provider.

avatar richard67
richard67 - comment - 7 Jul 2019

Hmm, yes, you are right. Am even more confused now. Maybe an ugly bug in our database schema checks happening only under certain conditions?

avatar alikon
alikon - comment - 9 Jul 2019

Do you know who has added default null to particular columns in joomla.sql without having done schema update stuff for that

not sure if the schema update has not been done , but pr that changed defualt null date to null are:

avatar ReLater
ReLater - comment - 9 Jul 2019

Another older thread: https://forum.joomla.org/viewtopic.php?t=967019

The messages are the same like in german forum starting and ending with

Table 'ddbb_languages' has the wrong type or attributes for column 'sitename' with type VARCHAR(1024). (From file 2.5.0-2012-01-14.sql.)
...
Table 'ddbb_finder_links' has the wrong type or attributes for column 'description' with type text. (From file 3.7.0-2017-03-19.sql.)

Confirmation of another user in January: https://forum.joomla.org/viewtopic.php?t=967019#p3555030

avatar MonkeyTrainer12
MonkeyTrainer12 - comment - 10 Jul 2019

Exact same behavior. Clean install of Joomla 3.9.8, with MySQL 8. Database fix has no effect on the following errors:

Table 'eqv1a_languages' has the wrong type or attributes for column 'sitename' with type VARCHAR(1024). (From file 2.5.0-2012-01-14.sql.)
Table 'eqv1a_associations' has the wrong type or attributes for column 'id' with type INT(11). (From file 3.0.3.sql.)
Table 'eqv1a_user_profiles' has the wrong type or attributes for column 'profile_value' with type TEXT. (From file 3.3.4-2014-08-03.sql.)
Table 'eqv1a_redirect_links' has the wrong type or attributes for column 'old_url' with type VARCHAR(2048). (From file 3.5.0-2016-03-01.sql.)
Table 'eqv1a_redirect_links' has the wrong type or attributes for column 'new_url' with type VARCHAR(2048). (From file 3.5.0-2016-03-01.sql.)
Table 'eqv1a_redirect_links' has the wrong type or attributes for column 'referer' with type VARCHAR(2048). (From file 3.5.0-2016-03-01.sql.)
Table 'eqv1a_redirect_links' has the wrong type or attributes for column 'new_url' with type VARCHAR(2048). (From file 3.6.0-2016-04-06.sql.)
Table 'eqv1a_newsfeeds' has the wrong type or attributes for column 'link' with type VARCHAR(2048). (From file 3.6.3-2016-08-15.sql.)
Table 'eqv1a_extensions' has the wrong type or attributes for column 'enabled' with type TINYINT(3). (From file 3.7.0-2016-11-04.sql.)
Table 'eqv1a_modules' has the wrong type or attributes for column 'content' with type text. (From file 3.7.0-2016-11-27.sql.)
Table 'eqv1a_ucm_content' has the wrong type or attributes for column 'core_body' with type mediumtext. (From file 3.7.0-2017-01-08.sql.)
Table 'eqv1a_ucm_content' has the wrong type or attributes for column 'core_params' with type text. (From file 3.7.0-2017-01-08.sql.)
Table 'eqv1a_ucm_content' has the wrong type or attributes for column 'core_images' with type text. (From file 3.7.0-2017-01-08.sql.)
Table 'eqv1a_ucm_content' has the wrong type or attributes for column 'core_urls' with type text. (From file 3.7.0-2017-01-08.sql.)
Table 'eqv1a_ucm_content' has the wrong type or attributes for column 'core_metakey' with type text. (From file 3.7.0-2017-01-08.sql.)
Table 'eqv1a_ucm_content' has the wrong type or attributes for column 'core_metadesc' with type text. (From file 3.7.0-2017-01-08.sql.)
Table 'eqv1a_categories' has the wrong type or attributes for column 'description' with type mediumtext. (From file 3.7.0-2017-01-09.sql.)
Table 'eqv1a_categories' has the wrong type or attributes for column 'params' with type text. (From file 3.7.0-2017-01-09.sql.)
Table 'eqv1a_finder_links' has the wrong type or attributes for column 'description' with type text. (From file 3.7.0-2017-03-19.sql.)

avatar breisig
breisig - comment - 11 Jul 2019

I am getting this EXACT same issue.

avatar breisig
breisig - comment - 16 Jul 2019

We need to get this working with MySQL 8 asap.

avatar franz-wohlkoenig
franz-wohlkoenig - comment - 16 Jul 2019

We need to get this working with MySQL 8 asap.

Maybe you can help by find the Reasons or creating a Pull Request so ths get fixed as soon as possible?

avatar richard67
richard67 - comment - 16 Jul 2019

It will take a while until I have time and set up a testing environment with MySQL 8 without destroying the one I have with MySQL 5.7. I hope I can do that on weekend and then investigate. If someone is faster: Please go on.

avatar richard67
richard67 - comment - 16 Jul 2019

I found this about default values in MySQL 8: https://dev.mysql.com/doc/refman/8.0/en/data-type-defaults.html.

Handling of Implicit Defaults

Can it be that this together with different handling of strict mode as default in MySQL 8 could cause these problems? @mbabker Michael, what do you think?

avatar richard67
richard67 - comment - 17 Jul 2019

@ReLater What could help here would be an SQL export of the database made with PhpMyAdmin, only for the structure, not for the data, if data is sensible and so secret. Can you organise that in the forum? You could send me then by email (richardfatht-online.de) and I could verify with what should come out from a clean install on my MySQL 5.7 where I don't have this problem.

avatar ReLater
ReLater - comment - 17 Jul 2019

There was no data. It were installations without sample data steps.
I will ask the thread opener via private message.

@MonkeyTrainer12
@breisig

Can you provide a databse dump like described in #25452 (comment) ?

avatar richard67
richard67 - comment - 17 Jul 2019

Yeah, I forgot, was new clean install. No data is good.

avatar richard67
richard67 - comment - 20 Jul 2019

To all: I have meanwhile managed to set up a PHP 7.3 + MySQL 8 environment and can reproduce the error. No need for database exports or so. I will investigate.

avatar richard67
richard67 - comment - 20 Jul 2019

@brianteeman We all know that link. It is not related to this issue here, but of course a requirement to be able to use MySQL 8, and so I have mentioned it of course, and the others who had this issue here mentioned it, too. But thanks for the link, you can never have enough remonders for that.

avatar richard67
richard67 - comment - 20 Jul 2019

What I can see is that the sitename column of the language table has been created in the database in the right way, so the database checker should not report an error. This means creating database works well, but the SHOW COLUMNS command used by the checker returns something else or does not work (maybe due to privileges)?

avatar brianteeman
brianteeman - comment - 20 Jul 2019

Alpha 4 definitely worked with mysql8 and the instructions on the wiki. It was tested by the mysql community manager see https://lefred.be/content/joomla-and-mysql-8-0-12/

avatar richard67
richard67 - comment - 20 Jul 2019

Yeah that was J4. Currently am testing staging because people have this issue also with 3.9.x.

avatar richard67
richard67 - comment - 20 Jul 2019

Problem is definitely the database checker reporting false errors. Database is ok. People in principle could just ignore the db errors and work with Joomla on MySQL 8 and wait for the next release for the fix of the database checker.

avatar richard67
richard67 - comment - 20 Jul 2019

Guys, I have found the reson: In MySQL 8, all type names returned by SHOW COLUMNS are in lowercase, and the database checker checks for exact match e.g. 'VARCHAR(1024)'. I will fix that.

avatar richard67
richard67 - comment - 20 Jul 2019

Fix found and tested, PR will be created soon.

avatar richard67
richard67 - comment - 20 Jul 2019

PR for staging is #25658 , please everybody who can: Test!

@wilsonge Question: Shall I do a PR for 4.0-dev, too, or shall we wait until this is merged and then 3.9.11 will be merged to 4.0-dev?

avatar franz-wohlkoenig
franz-wohlkoenig - comment - 20 Jul 2019

Closed as having Pull Request #25658

avatar franz-wohlkoenig franz-wohlkoenig - change - 20 Jul 2019
Status Discussion Closed
Closed_Date 0000-00-00 00:00:00 2019-07-20 13:52:23
Closed_By franz-wohlkoenig
avatar franz-wohlkoenig franz-wohlkoenig - close - 20 Jul 2019
avatar richard67
richard67 - comment - 20 Jul 2019

@franz-wohlkoeing As this is an issue for both staging and 4.0-dev, it should be closed then it is fixed in both. Currently my PR is for staging, for 4.0-dev I am waiting for reply from @wilsonge if I shall make a separate PR. So I think this issue should be reopened until I've got that reply.

avatar franz-wohlkoenig franz-wohlkoenig - change - 20 Jul 2019
Status Closed New
Closed_Date 2019-07-20 13:52:23
Closed_By franz-wohlkoenig
avatar franz-wohlkoenig franz-wohlkoenig - reopen - 20 Jul 2019
avatar zero-24
zero-24 - comment - 20 Jul 2019

@wilsonge Question: Shall I do a PR for 4.0-dev, too, or shall we wait until this is merged and then 3.9.11 will be merged to 4.0-dev?

Well why should this be an exception of the staging -> 4.0-dev rule, do we have any reason to not merge them up?

avatar richard67
richard67 - comment - 20 Jul 2019

@zero-24 Well if George merged all 3.9.x including this future change up to 4.0-dev before 4.0 will go beta then the standard way is ok, but it still could be nice to have that change in 4.0-dev earlier for testers.

avatar franz-wohlkoenig franz-wohlkoenig - change - 20 Jul 2019
Status New Discussion
avatar richard67
richard67 - comment - 20 Jul 2019

Alpha 4 definitely worked with mysql8 and the instructions on the wiki. It was tested by the mysql community manager see https://lefred.be/content/joomla-and-mysql-8-0-12/

@brianteeman The only explanation for this can be that they haven't checked if the database checker shows errors after successful finish of the installation, because 1. I could replicate the error with 4.0-dev, and 2. I have tested the fix for staging (PR #25658 ) also witrh 4.0-dev, and 3. I have found the reason as described in PR #25658 . The only other explanation would be that the behavioral change of the handling of case-sensitivity in "SHOW COLUMNS" statements has happened somewhere in the middle of MySQL version 8 history, i.e. from 8.0.x to 8.0.y.

avatar richard67
richard67 - comment - 20 Jul 2019

@franz-wohlkoenig I've just got feedback from George, it does not need an extra fix for 4.0-dev. So the PR for staging is sufficient, you can close this issue.

avatar Quy Quy - close - 21 Jul 2019
avatar Quy Quy - change - 21 Jul 2019
Status Discussion Closed
Closed_Date 0000-00-00 00:00:00 2019-07-21 00:12:52
Closed_By Quy

Add a Comment

Login with GitHub to post a comment