Bug #88039 upgrade to 8.0 fails: duplicate SET values in table from a permissive sql_mode..
Submitted: 10 Oct 2017 6:18 Modified: 30 Oct 2017 13:58
Reporter: Shane Bester (Platinum Quality Contributor) Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Data Dictionary Severity:S2 (Serious)
Version:8.0.3 OS:Any
Assigned to: CPU Architecture:Any

[10 Oct 2017 6:18] Shane Bester
Description:
Tables created under blank sql-mode in 5.7 cause 8.0 to fail to start:

[Note] [003960] Created Data Dictionary for upgrade
[ERROR] [001291] mysqld-debug.exe: Column 'a' has duplicated value '' in SET
[ERROR] [003636] Failed to Populate DD tables.
[ERROR] [003742] Aborting

I cannot figure out how to start 8.0 on this datadir, 
and even --sql-mode="" doesn't work.

How to repeat:
On 5.7.19:

set sql_mode="";
create database test;
use test;
create table t(a set('',''))engine=innodb;
shutdown;

Try start 8.0 on the 5.7 datadir, it fails.
[30 Oct 2017 13:58] Daniel Price
Posted by developer:
 
Fixed as of the upcoming 8.0.4, 9.0.0  release, and here's the changelog entry:

These errors occurred after an in-place upgrade from MySQL 5.7 to 8.0:
Starting the server with an --explicit-defaults-for-timestamp=0 setting
returned an Invalid default value for 'cached_time' error. 

Starting the server with --initialize and
--explicit-defaults-for-timestamp=0 configuration settings returned an
Invalid default value for 'SET_TIME' error. 

Duplicate SET data type values caused a Duplicated value in SET error, regardless of the
sql_mode configuration setting.