以下功能在MySQL 8.0中已被弃用,并可能在将来的系列中被移除。如果有替代方案,请更新应用程序以使用这些替代方案。
对于在MySQL 8.0被移除的高级MySQL系列中已经被弃用的功能,从MySQL 8.0源复制到较高系列的副本时,语句可能会失败,或者在源和副本上产生不同的效果。为了避免这些问题,应用程序应调整使用了在8.0中被弃用的功能的部分,尽量避免使用它们,并在可能的情况下使用替代方案。
在MySQL 8.0.28及更高版本中,在以下情况下使用任何字符集或排序规则将产生弃用警告:
你应该使用utf8mb4代替之前列出的任何字符集。
用户定义的排序规则已被弃用。从MySQL 8.0.33开始,以下任一情况将导致警告写入日志:
你应该预计在未来的MySQL版本中将移除对用户定义的排序规则的支持。
非标准的C风格运算符&&、||和!分别是标准SQL的AND、OR和NOT运算符的同义词,已被弃用。使用这些非标准运算符的应用程序应该调整为使用标准运算符。
除非启用了PIPES_AS_CONCAT SQL模式,否则不推荐使用||运算符。在这种情况下,||表示标准的字符串连接运算符。
JSON_MERGE()函数已被弃用,请改用JSON_MERGE_PRESERVE()函数来替代。
SQL_CALC_FOUND_ROWS查询修饰符和相应的FOUND_ROWS()函数已被弃用。有关替代策略的信息,请参阅FOUND_ROWS()的描述。
自MySQL 8.0.13版本起,使用CREATE TEMPORARY TABLE时,对于TABLESPACE=innodb_file_per_table和TABLESPACE=innodb_temporary子句的支持已经被弃用。
自MySQL 8.0.20版本开始,对于SELECT语句,在FROM之后而不是在SELECT语句末尾使用INTO子句已被弃用。更推荐将INTO子句放置在语句的末尾。
对于UNION语句,以下两种包含INTO的写法在MySQL 8.0.20版本中已被弃用:
? 在查询表达式的尾部查询块中,在FROM之前使用INTO。
? 在查询表达式的带括号的尾部块中,无论INTO位于FROM之前还是之后,都已被弃用。
自MySQL 8.0.23版本开始,FLUSH HOSTS已被弃用。相反,应该使用TRUNCATE语句截断Performance Schema的host_cache表。
TRUNCATE TABLE performance_schema.host_cache;
TRUNCATE TABLE操作需要对表具有DROP权限。
mysql_upgrade客户端已被弃用,因为它升级mysql系统模式中的系统表和其他模式中的对象的能力已经移入MySQL服务器中。
--no-dd-upgrade服务器选项已被弃用。它已被--upgrade选项取代,该选项提供对数据字典和服务器升级行为更精细的控制。
mysql_upgrade_info文件位于数据目录下,用于存储MySQL版本号。该文件已被弃用,并有可能在未来的MySQL版本中移除。
relay_log_info_file系统变量和--master-info-file选项已被弃用。以前,当设置relay_log_info_repository=FILE和master_info_repository=FILE时,它们用于指定中继日志信息日志和源信息日志的名称,但是这些设置已被弃用。中继日志信息日志和源信息日志使用文件的方式已被crash-safe副本表取代,默认为MySQL 8.0版本中的默认设置。