MySQL 8.0 has been released. Will CiviCRM work with it? I tried migrating a test database to it, and CiviCRM under Joomla failed.
Oct 31 12:36:35 [info] $Fatal Error Details = Array (
[callback] => Array
(
[0] => CRM_Core_Error
[1] => handle
)
[code] => -2
[message] => DB Error: syntax error
[mode] => 16
[debug_info] => SELECT v.label as label ,v.name as value, v.grouping as grouping FROM civicrm_option_value_en_GB v,
civicrm_option_group_en_GB g WHERE v.option_group_id = g.id AND g.name = 'languages' AND g.is_active = 1 AND v.is_active = 1 AND ( v.component_id IS NULL OR v.component_id IN (SELECT id FROM civicrm_component WHERE name IN ("CiviEvent","CiviContribute","CiviMember","CiviMail","CiviReport","CiviPledge")) ) ORDER BY v.weight [nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'grouping FROM civicrm_option_value_en_GB v,
civicrm_option_group_en_G' at line 1]
[type] => DB_Error
[user_info] => SELECT v.label as label ,v.name as value, v.grouping as grouping FROM civicrm_option_value_en_GB v,
civicrm_option_group_en_GB g WHERE v.option_group_id = g.id AND g.name = 'languages' AND g.is_active = 1 AND v.is_active = 1 AND ( v.component_id IS NULL OR v.component_id IN (SELECT id FROM civicrm_component WHERE name IN ("CiviEvent","CiviContribute","CiviMember","CiviMail","CiviReport","CiviPledge")) ) ORDER BY v.weight [nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'grouping FROM civicrm_option_value_en_GB v,
civicrm_option_group_en_G' at line 1]
[to_string] => [db_error: message="DB Error: syntax error" code=-2 mode=callback callback=CRM_Core_Error::handle prefix="" info=" SELECT v.label as label ,v.name as value, v.grouping as grouping FROM civicrm_option_value_en_GB v,
civicrm_option_group_en_GB g WHERE v.option_group_id = g.id AND g.name = 'languages' AND g.is_active = 1 AND v.is_active = 1 AND ( v.component_id IS NULL OR v.component_id IN (SELECT id FROM civicrm_component WHERE name IN ("CiviEvent","CiviContribute","CiviMember","CiviMail","CiviReport","CiviPledge")) ) ORDER BY v.weight [nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'grouping FROM civicrm_option_value_en_GB v,
civicrm_option_group_en_G' at line 1]"] )
The SQL below runs happily against MySQL 5.7 whilst it fails against MySQL 8.0 with
"SELECT" is not valid at this position for this server version, expecting '(', WITH
SQL:
SELECT v.label as label ,v.name as value, v.grouping as grouping FROM civicrm_option_value_en_GB v, civicrm_option_group_en_GB g WHERE v.option_group_id = g.id AND g.name = 'languages' AND g.is_active = 1 AND v.is_active = 1 AND ( v.component_id IS NULL OR v.component_id IN (SELECT id FROM civicrm_component WHERE name IN ("CiviEvent","CiviContribute","CiviMember","CiviMail","CiviReport","CiviPledge")) ) ORDER BY v.weight
Replacing the first line with:
SELECT v.label as label ,v.name as value, v.grouping as `grouping`
solves the problem.
Clearly some work is needed before CiviCRM will work with MySQL 8.0