MySQL 8.0中过时的功能(二)

发布时间:2024年01月15日
  • max_length_for_sort_data系统变量由于优化器的变更而被弃用,因为这个变量已经过时并且没有任何效果。
  • 用于对连接进行压缩的以下传统参数已经被弃用:
    - --compress客户端命令行选项;
    - mysql_options() C API函数的MYSQL_OPT_COMPRESS选项;
    - slave_compressed_protocol系统变量。
  • 使用MYSQL_PWD环境变量来指定MySQL密码已被弃用。
  • 自MySQL 8.0.20版本起,使用VALUES()来访问INSERT ... ON DUPLICATE KEY UPDATE中的新行值已被弃用。应该使用新行和列的别名来替代。
  • 在MySQL中,使用JSON_TABLE()函数时,在ON EMPTY之前指定ON ERROR与SQL标准相反,因此这种语法现已被弃用。从MySQL 8.0.20开始,当尝试这样做时,服务器会打印出警告信息。如果在单个JSON_TABLE()调用中同时指定这两个子句,请确保首先使用ON EMPTY子句。
  • 在表的分区键中,索引前缀的列从来没有被支持;以前,在创建、修改或升级分区表时允许使用这些列,但是分区函数会排除这些列,并且服务器不会发出警告。这种宽松的行为现已被弃用,并可能在未来的MySQL版本中被移除。在其中,如果在分区键中使用任何这样的列,将会拒绝执行CREATE TABLE或ALTER TABLE语句中出现的部分。
  • 从MySQL 8.0.21版本开始,如果在分区键中指定了使用索引前缀的列,则会为每个这样的列生成警告。当因为所有提议的分区键列都有索引前缀而拒绝执行CREATE TABLE或ALTER TABLE语句时,生成的错误信息现在会提供拒绝的确切原因。不论哪种情况,这包括通过使用空的PARTITION BY KEY()子句将用于分区函数的列隐式定义为表的主键的情况。
  • 自MySQL 8.0.22版本起,InnoDB memcached插件已被弃用。预计在未来的MySQL版本中将不再支持该插件。
  • 自MySQL 8.0.26版本起,temptable_use_mmap变量已被弃用。预计在未来的MySQL版本中将不再支持该变量。
  • 自MySQL 8.0.27版本起,BINARY操作符已被弃用,并且您应该预计它将在未来的MySQL版本中被移除。现在使用BINARY会引发警告。取而代之,请使用CAST(... AS BINARY)。
  • 您提到的default_authentication_plugin变量在MySQL 8.0.27版本仍然可用,但与新的authentication_policy系统变量一起使用,并且优先级较低。从MySQL 8.0.27版本开始引入了多因素认证功能,并将authentication_policy作为默认的身份验证策略。尽管default_authentication_plugin变量仍然可用,但未来的MySQL版本中可能会移除该变量支持。建议您在升级或使用更高版本的MySQL时,始终参考官方文档以了解最新的身份验证配置和推荐做法。
  • --abort-slave-event-count和--disconnect-slave-event-count是MySQL测试套件中使用的服务器选项,通常不在生产环境中使用。从MySQL 8.0.29版本开始,这两个选项已被弃用。预计在未来版本的MySQL中将删除这两个选项。建议在升级或使用更高版本的MySQL时,不再使用这两个选项,并参考官方文档获取最新的选项配置和最佳实践。
  • 从MySQL 8.0.29版本开始,myisam_repair_threads系统变量和myisamchk的--parallel-recover选项已被弃用。预计在未来的MySQL版本中将不再支持这两个功能。

    此外,从MySQL 8.0.29版本开始,对于myisam_repair_threads的非默认值(1),会发出警告提示。

  • 以前,MySQL允许在DATE、TIME、DATETIME和TIMESTAMP字面值中包含任意数量的分隔符字符,以及在日期和时间部分之间、前后有任意数量的空白字符的DATETIME和TIMESTAMP字面值。从MySQL 8.0.29版本开始,当字面值包含以下任何内容时,服务器会引发弃用警告:
    - 一个或多个非标准的分隔符字符
    - 多余的分隔符字符
    - 非空格字符(' ', 0x20)的多余空白字符
    - 多余的空格字符
    每个时间值都会发出一次弃用警告,即使它有多个问题。在严格模式下,这个警告不会升级为错误,因此在启用严格模式时,仍然可以成功执行包含这样值的INSERT操作。

    您应该预期这种非标准行为将在未来的MySQL版本中被移除,并立即采取措施确保您的应用程序不依赖于它。确保您的应用程序不依赖于这种非标准行为。

  • 从MySQL 8.0.29版本开始,replica_parallel_type系统变量及其相关的服务器选项--replica-parallel-type已被弃用。从这个版本开始,读取或设置该值会引发弃用警告,并预计在未来的MySQL版本中将删除该功能。

  • 从MySQL 8.0.30版本开始,设置replica_parallel_workers系统变量(或等效的服务器选项)为0已被弃用,并引发警告提示。当您希望一个副本使用单线程处理时,应该使用replica_parallel_workers=1,这将产生相同的结果,但不会引发警告。

  • 从MySQL 8.0.30版本开始,--skip-host-cache服务器选项已被弃用,并预计在未来的MySQL版本中将被移除。请改用host_cache_size系统变量替代。

  • 从MySQL 8.0.30版本开始,用于向后兼容非常早期(5.0.3之前)版本的--old-style-user-limits选项已被弃用。现在使用它会引发警告。您应该预期这个选项将在将来的MySQL版本中被移除。

  • 从MySQL 8.0.30版本开始,innodb_log_files_in_group和innodb_log_file_size变量已被弃用。这些变量的替代方案是innodb_redo_log_capacity变量。

  • 从MySQL 8.0.32版本开始,使用"FULL"作为未引用的标识符已被弃用,因为它是SQL标准中的一个保留关键字。这意味着像CREATE TABLE full (c1 INT, c2 INT)这样的语句现在会引发警告(ER_WARN_DEPRECATED_TO_BE_REMOVED_IDENT_FULL)。为了防止出现这种情况,您需要更改名称,或者像下面这样用反引号(`)将其括起来:
CREATE TABLE `full` (c1 INT, c2 INT);
  • 从MySQL 8.0.32版本开始,使用美元符号($)作为未引用标识符的首字符已被弃用,并会引发警告。这种用法在将来的MySQL版本中有可能被移除。包括用作数据库、表、视图、列或存储过程的名称以及它们的别名的标识符。但是,美元符号仍然可以作为引用标识符的第一个字符。
  • 从MySQL 8.0.34版本开始,binlog_format服务器系统变量已被弃用,并有可能在将来的版本中被移除。改变二进制日志格式也被弃用,预计删除binlog_format后,行级别的二进制日志记录(在MySQL 8.0中已经是默认设置)将成为MySQL唯一支持和使用的二进制日志格式。因此,新安装的MySQL应该只使用行级别的二进制日志记录;现有采用binlog_format=STATEMENT或binlog_format=MIXED日志格式的复制设置应迁移到行级别格式。

    在MySQL 8.0.34及更高版本中,设置或选择binlog_format的值会触发警告。因此,建议按照建议迁移至行级别的二进制日志格式,并遵循官方文档中关于迁移过程的指导。

  • 从MySQL 8.0.34版本开始,mysqlpump客户端工具程序已被弃用,并有可能在将来的MySQL版本中被移除。由于MySQL提供了其他执行数据库导出和备份任务的方式,包括mysqldump和MySQL Shell等工具,因此mysqlpump被认为是冗余的。

文章来源:https://blog.csdn.net/hay23455/article/details/135593480
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。