Bug #113774 Encountered a problem with mysql shell checking version upgrade

Submitted: 26 Jan 2024 9:59 Modified: 22 Feb 2024 6:43
Reporter: lin chongguang Email Updates:
Status: Closed Impact on me:
None 
Category:Shell Upgrade Checker Severity:S3 (Non-critical)
Version: OS:Linux
Assigned to: MySQL Verification Team CPU Architecture:Any

[26 Jan 2024 9:59] lin chongguang
Description:
When I used the mysql shell program to check whether it met the requirements for upgrading from 5.7 to 8.0, encountered some problems.  
20) Issues reported by 'check table x for upgrade' command
  Notice  : Table (sysbench.TTTTTTT) - No database selected
  Error   : Table (sysbench.TTTTTTT) - Corrupt
...

Errors:   1
Warnings: 40
Notices:  6

ERROR: 1 errors were found. Please correct these issues before upgrading to avoid compatibility issues.

Here you can see the table sysbench.TTTTTTT report error has been Corrupted。In fact, this table is a view. And I can use it normally

MySQL [sysbench]> select * from `TTTTTTT`;
Empty set (0.01 sec)

Through the general log, it is found that the upgrade checker will use the 'CHECK TABLE `sysbench`.`TTTTTTT` FOR UPGRADE' statement to check the table。
But I tried to execute it manually and found that it was normal

MySQL [sysbench]> CHECK TABLE `sysbench`.`TTTTTTT` FOR UPGRADE;
+------------------+-------+----------+----------+
| Table            | Op    | Msg_type | Msg_text |
+------------------+-------+----------+----------+
| sysbench.TTTTTTT | check | status   | OK       |
+------------------+-------+----------+----------+
1 row in set (0.00 sec)

How to repeat:
1.create database test;

2. use test; and import these table 
CREATE TABLE `TABLE6` (
  `column19` int unsigned NOT NULL AUTO_INCREMENT,
  `area` char(2) COLLATE utf8mb4_unicode_ci NOT NULL,
  `column24` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,
  `column10` datetime NOT NULL,
  `column11` datetime DEFAULT NULL,
  `column8` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'H',
  `district_group_id` int DEFAULT NULL,
  `district_code` char(3) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`column19`)
) ENGINE=InnoDB AUTO_INCREMENT=259 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

CREATE TABLE `TABLE5` (
  `column19` int unsigned NOT NULL AUTO_INCREMENT,
  `column10` datetime NOT NULL,
  `column11` datetime DEFAULT NULL,
  `column31` int unsigned NOT NULL,
  `column8` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'A',
  PRIMARY KEY (`column19`)
) ENGINE=InnoDB AUTO_INCREMENT=1621 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

CREATE TABLE `TABLE4` (
  `column19` int NOT NULL AUTO_INCREMENT,
  `column1` mediumint NOT NULL,
  `column23` mediumint NOT NULL,
  `column27` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `column8` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'A',
  `column10` datetime NOT NULL,
  `column11` datetime DEFAULT NULL,
  `last_updated_by` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`column19`),
  UNIQUE KEY `hhhhhh` (`column1`,`column23`,`column27`)
) ENGINE=InnoDB AUTO_INCREMENT=687 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE `TABLE3` (
  `column1` mediumint unsigned NOT NULL,
  `column21` mediumint unsigned NOT NULL AUTO_INCREMENT,
  `column31` tinyint unsigned DEFAULT NULL,
  `column13` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `column26` int unsigned DEFAULT NULL,
  `contact` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `column9` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'A',
  `column10` datetime NOT NULL,
  `column11` datetime NOT NULL,
  PRIMARY KEY (`column21`),
  KEY `merchant_branch_n1` (`column1`)
) ENGINE=InnoDB AUTO_INCREMENT=4384 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE `TABLE2` (
  `column19` mediumint unsigned NOT NULL AUTO_INCREMENT,
  `column1` mediumint unsigned NOT NULL,
  `column14` tinyint unsigned NOT NULL,
  `column15` mediumint unsigned NOT NULL,
  `column16` mediumint unsigned NOT NULL,
  `column10` datetime NOT NULL,
  `column11` datetime NOT NULL,
  `column9` char(1) COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`column19`),
  KEY `column1` (`column1`),
  KEY `cccc` (`column9`),
  KEY `dddd` (`column11`)
) ENGINE=InnoDB AUTO_INCREMENT=973 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE `TABLE1` (
  `column1` mediumint unsigned NOT NULL AUTO_INCREMENT,
  `column2` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `column4` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'I',
  `column3` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'N' COMMENT '',
  `column5` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `column6` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `column22` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'N',
  `column26` int unsigned DEFAULT NULL,
  `column7` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `column10` datetime NOT NULL,
  `column11` datetime NOT NULL,
  `column8` char(1) COLLATE utf8mb4_unicode_ci NOT NULL,
  `column9` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'A',
  `column20` mediumint unsigned DEFAULT NULL,
  `column18` mediumint unsigned DEFAULT NULL,
  `column17` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `is_price_technology_show` tinyint(1) DEFAULT '0',
  `auto_electronic_statement` tinyint(1) DEFAULT '1',
  PRIMARY KEY (`column1`),
  UNIQUE KEY `bbbb` (`column2`),
  KEY `column18` (`column18`),
  KEY `idx_cold11` (`column11`)
) ENGINE=InnoDB AUTO_INCREMENT=9119 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

3.CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `TTTTTTT` AS select `m`.`column1` AS `column19`,`m`.`column2` AS `column2`,`m`.`column3` AS `column3`,`m`.`column4` AS `column4`,`m`.`column5` AS `column5`,`m`.`column6` AS `column6`,`m`.`column7` AS `column7`,if(((`m`.`column8` = 'A') and (`m`.`column9` = 'A')),'A','D') AS `column8`,`m`.`column10` AS `column10`,`mc1`.`column27` AS `zone_name`,`mc2`.`column27` AS `category_name`,`mb2`.`column28` AS `column28`,`mb2`.`column29` AS `column29`,`mb2`.`column30` AS `column30`,`mb2`.`column25` AS `column25`,cast(greatest(`m`.`column11`,coalesce(`mu`.`column11`,'0000-00-00'),coalesce(`mc1`.`column11`,`mc1`.`column10`,'0000-00-00'),coalesce(`mc2`.`column11`,`mc2`.`column10`,'0000-00-00'),`mb2`.`column11`) as datetime) AS `column11`,`mb`.`column13` AS `column13`,`mu`.`column14` AS `column14`,`mu`.`column15` AS `column15`,`mu`.`column16` AS `column16`,replace(`m`.`column17`,',','||') AS `column17` from (((((`TABLE1` `m` left join `TABLE2` `mu` on((`m`.`column18` = `mu`.`column19`))) left join `TABLE3` `mb` on(((`m`.`column20` = `mb`.`column21`) and ((`m`.`column3` = 'N') or (`m`.`column22` = 'Y'))))) left join `TABLE4` `mc1` on(((`mc1`.`column1` = `m`.`column1`) and (`mc1`.`column23` = 10) and (`mc1`.`column8` = 'A')))) left join `TABLE4` `mc2` on(((`mc2`.`column1` = `m`.`column1`) and (`mc2`.`column23` = 11) and (`mc1`.`column8` = 'A')))) left join (select `mb`.`column1` AS `column1`,concat('[',group_concat(if((`mb`.`column9` = 'A'),json_quote(`mb`.`column13`),NULL) separator ','),']') AS `column28`,concat('[',group_concat(distinct if((`mb`.`column9` = 'A'),`d`.`area`,NULL) separator ','),']') AS `column30`,concat('[',convert(group_concat(distinct if((`mb`.`column9` = 'A'),`d`.`column19`,NULL) separator ',') using utf8mb4),']') AS `column29`,concat('[',group_concat(distinct if((`mb`.`column9` = 'A'),json_quote(`d`.`column24`),NULL) separator ','),']') AS `column25`,coalesce(`l`.`column11`,`l`.`column10`) AS `column11` from ((`TABLE3` `mb` join `TABLE5` `l` on((`l`.`column19` = `mb`.`column26`))) join `TABLE6` `d` on((`l`.`column31` = `d`.`column19`))) group by `mb`.`column1`) `mb2` on(((`m`.`column1` = `mb2`.`column1`) and ((`m`.`column3` = 'N') or (`m`.`column22` = 'Y')))))

4.Use mysql shell to perform upgrade checks

 ./mysqlsh -- util checkForServerUpgrade username:password@ip:port --target-version=8.0.30 

Suggested fix:
I'm not sure why and can't give any advice at the moment
[26 Jan 2024 10:06] lin chongguang
mysql server version:5.7.36
[26 Jan 2024 10:28] lin chongguang
mysqlshell   Ver 8.0.30 for Linux on x86_64 - for MySQL 8.0.30 (MySQL Community Server (GPL)
[1 Feb 2024 17:25] MySQL Verification Team
Hi,

Are you sure you used latest shell? I just tried and did not reproduce the problem?
[22 Feb 2024 2:17] lin chongguang
upgrade to  latest shell. can not reproduce the problem.
[22 Feb 2024 6:43] MySQL Verification Team
Great, so we can close this.
Thanks

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.055 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.