Details
-
Bug
-
Status: Done
-
Medium
-
Resolution: Fixed
-
8.0.16-7
Description
Switching SE from InnoDB to MyRocks
isn't supported in 8.0.16 and results with:
ERROR 1235 (42000): This version of MySQL doesn't yet support 'ENCRYPTION for the RocksDB storage engine'
Testcase:
mysql> show create table world.City; +-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | City | CREATE TABLE `City` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `Name` char(35) NOT NULL DEFAULT '', `CountryCode` char(3) NOT NULL DEFAULT '', `District` char(20) NOT NULL DEFAULT '', `Population` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`ID`), KEY `CountryCode` (`CountryCode`), CONSTRAINT `city_ibfk_1` FOREIGN KEY (`CountryCode`) REFERENCES `Country` (`Code`) ) ENGINE=InnoDB AUTO_INCREMENT=4080 DEFAULT CHARSET=latin1 | +-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> Bye root@stretch:~# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 25 Server version: 8.0.16-7 Percona Server (GPL), Release '7', Revision '613e312' Copyright (c) 2009-2019 Percona LLC and/or its affiliates Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> use world; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> ALTER TABLE City DROP FOREIGN KEY city_ibfk_1; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> ALTER TABLE City Engine=RocksDB; ERROR 1235 (42000): This version of MySQL doesn't yet support 'ENCRYPTION for the RocksDB storage engine'
From discussion with robert.golebiowski this is by the upstream design:
- EVERY table now has ENCRYPTION clause assigned. Un-encrypted tables have ENCRYPTION='N', encrypted ENCRYPTION='Y'
- MySQL introduced this check HTON_SUPPORTS_TABLE_ENCRYPTION and if SE supports it - its tables get ENCRYPTION='Y/N' assigned
- now when you ALTER table with ENGINE that do not support encryption you will get this error because this engine do not support any ENCRYPTION clause Y or N