MySQL 8.0中不推荐使用的功能
以下功能在MySQL 8.0中已弃用,并且可能在以后的系列中被删除或将被删除。在显示替代方案的地方,应更新应用程序以使用它们。

对于使用在更高版本的MySQL系列中已删除的MySQL 8.0中不推荐使用的功能的应用程序,将语句从MySQL 8.0主服务器复制到更高系列的从服务器时,语句可能会失败,或者可能会对主服务器和从服务器产生不同的影响。为避免此类问题,应修改使用8.0中不推荐使用的功能的应用程序,以避免出现这种情况,并在可能的情况下使用替代方法。

utf8mb3字符集已被弃用。请utf8mb4改用。

因为它caching_sha2_password是MySQL 8.0中的默认身份验证插件,并且提供了该sha256_password身份验证插件的功能的超集 , sha256_password所以已弃用,并将在以后的MySQL版本中将其删除。验证使用的MySQL帐户sha256_password应改为使用caching_sha2_password 。

该validate_password插件已被重新实现以使用服务器组件基础结构。的插件形式validate_password仍然可用,但已过时,并将在MySQL的未来版本中删除。使用插件的MySQL安装应过渡到使用组件。请参见 第6.4.3.3节“过渡到密码验证组件”。

该ALTER TABLESPACE和 条款已被弃用。 DROP TABLESPACE ENGINE

在 PAD_CHAR_TO_FULL_LENGTH SQL模式已经过时了。

AUTO_INCREMENT不支持type FLOAT和 DOUBLE(以及任何同义词)的列。考虑AUTO_INCREMENT 从此类列中删除属性,或将其转换为整数类型。

的UNSIGNED属性被弃用类型的列FLOAT, DOUBLE和 DECIMAL(和任何同义词)。考虑CHECK对此类列使用简单约束。

FLOAT(M,D) 和 语法指定的位数类型的列的数目 和 (和任何同义词)是一个非标准MySQL扩展。不建议使用此语法。 DOUBLE(M,D)FLOATDOUBLE

ZEROFILL对于数字数据类型,不建议使用 该属性,对于整数数据类型,则不建议使用显示宽度属性。考虑使用替代方法来产生这些属性的效果。例如,应用程序可以使用该 LPAD()功能将数字零填充到所需宽度,或者将格式化的数字存储在CHAR 列中。

对于字符串数据类型,该BINARY 属性是非标准的MySQL扩展,它是用于指定_bin列字符集(如果未指定列字符集,则为表默认字符集)的二进制()归类的简写形式。在MySQL 8.0中,这种非标准用法 BINARY是不明确的,因为 utf8mb4字符集具有多个 _bin排序规则,因此BINARY不推荐使用该属性,并且在将来的MySQL版本中将删除对该 属性的支持。应将应用程序调整为使用显式 _bin排序规则。

BINARY用于指定数据类型或字符集 的用法保持不变。

非标准C风格 &&, ||和 !运营商认为是标准的SQL同义词 AND, OR和 NOT运营商,分别已被取消。使用非标准运算符的应用程序应调整为使用标准运算符。

注意
使用的||,除非被弃用 PIPES_AS_CONCAT启用SQL模式。在这种情况下,||表示SQL标准字符串串联运算符。

该JSON_MERGE()功能已弃用。使用 JSON_MERGE_PRESERVE() 代替。

不建议使用SQL_CALC_FOUND_ROWS查询修饰符和附带FOUND_ROWS() 函数。有关FOUND_ROWS()替代策略的信息,请参见 说明。

从MySQL 8.0.13开始,不 支持TABLESPACE = innodb_file_per_tableand TABLESPACE = innodb_temporary子句 CREATE TEMPORARY TABLE。

该mysql_upgrade客户端已被弃用,因为它的功能升级的系统表mysql系统架构和对象在其他模式已移动到MySQL服务器。请参见 第2.11.3节“ 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分别设置,但这些设置已被弃用。崩溃安全从表已取代了用于中继日志信息日志和主信息日志的文件,这是MySQL 8.0的默认设置。

不建议使用这些旧参数来压缩与服务器的连接: --compress客户端命令行选项;C API函数的 MYSQL_OPT_COMPRESS选项 mysql_options();该 slave_compressed_protocol 系统变量。有关替代使用的参数的信息,请参见 第4.2.6节“连接压缩控制”。

不建议使用MYSQL_PWD环境变量来指定MySQL密码。

MySQL 8.0中删除的功能
以下各项已过时,并且已在MySQL 8.0中删除。在显示替代方案的地方,应更新应用程序以使用它们。

对于使用在MySQL 8.0中删除的功能的MySQL 5.7应用程序,将语句从MySQL 5.7主服务器复制到MySQL 8.0从服务器时,语句可能会失败,或对主服务器和从服务器产生不同的影响。为避免此类问题,应修改使用MySQL 8.0中已删除功能的应用程序,以避免它们出现,并在可能的情况下使用替代方法。

在innodb_locks_unsafe_for_binlog除去系统变量。该READ COMMITTED隔离级别提供了类似的功能。

information_schema_statsMySQL 8.0.0中引入 的变量已删除,并information_schema_stats_expiry 在MySQL 8.0.3中被替换 。

information_schema_stats_expiry定义缓存INFORMATION_SCHEMA表统计信息的到期设置 。有关更多信息,请参见 第8.2.3节“优化INFORMATION_SCHEMA查询”。

InnoDB在MySQL 8.0.3中删除了 与过时的系统表相关的代码。 INFORMATION_SCHEMA基于InnoDB系统表的视图被数据字典表上的内部系统视图替换。受影响的 InnoDB INFORMATION_SCHEMA视图已重命名:

表1.1重命名的InnoDB信息架构视图

旧名称                                           新名字
INNODB_SYS_COLUMNS        INNODB_COLUMNS
INNODB_SYS_DATAFILES     INNODB_DATAFILES
INNODB_SYS_FIELDS            INNODB_FIELDS
INNODB_SYS_FOREIGN         INNODB_FOREIGN
INNODB_SYS_FOREIGN_COLS      INNODB_FOREIGN_COLS
INNODB_SYS_INDEXES                   INNODB_INDEXES
INNODB_SYS_TABLES                    INNODB_TABLES
INNODB_SYS_TABLESPACES       INNODB_TABLESPACES
INNODB_SYS_TABLESTATS           INNODB_TABLESTATS
INNODB_SYS_VIRTUAL                   INNODB_VIRTUAL

升级到MySQL 8.0.3或更高版本后,请更新所有引用先前InnoDB INFORMATION_SCHEMA视图名称的脚本。

与帐户管理相关的以下功能已删除:

使用GRANT创建用户。而是使用CREATE USER。遵循这种做法会使 NO_AUTO_CREATE_USER SQL模式对于GRANT语句不重要 ,因此也将其删除,并且当sql_mode选项文件中选项的该值的存在阻止mysqld启动时,现在会将错误写入服务器日志 。

使用GRANT修改不是权限指派其他帐户属性。这包括身份验证,SSL和资源限制属性。而是在创建帐户时使用CREATE USER或在之后使用进行修改 ALTER USER。

IDENTIFIED BY PASSWORD 'auth_string'CREATE USER 和的 语法GRANT。而是使用 for 和 ,其中 值的格式与命名插件兼容。 IDENTIFIED WITH auth_plugin AS 'auth_string'CREATE USERALTER USER'auth_string'

此外,由于IDENTIFIED BY PASSWORD删除了语法,因此 log_builtin_as_identified_by_password 系统变量是多余的,因此已删除。

该PASSWORD()功能。此外,PASSWORD()删除意味着 语法不再可用。 SET PASSWORD ... = PASSWORD('auth_string')

该old_passwords 系统变量。

查询缓存已删除。删除包括以下项目:

该FLUSH QUERY CACHE和 RESET QUERY CACHE语句。

这些系统变量: query_cache_limit, query_cache_min_res_unit, query_cache_size, query_cache_type, query_cache_wlock_invalidate。

这些状态变量: Qcache_free_blocks, Qcache_free_memory, Qcache_hits, Qcache_inserts, Qcache_lowmem_prunes, Qcache_not_cached, Qcache_queries_in_cache, Qcache_total_blocks。

这些线程状态:checking privileges on cached query,checking query cache for query,invalidating query cache entries,sending cached result to client,storing result in query cache,Waiting for query cache lock。

该SQL_CACHE SELECT修改。

这些不赞成使用的查询缓存项仍然不赞成使用,但没有效果,将在以后的MySQL版本中删除:

SQL_NO_CACHE SELECT 修饰符。

该ndb_cache_check_time系统变量。

该have_query_cache系统变量仍然是过时的,总是有一个值 NO,并会在将来的MySQL版本中删除。

数据字典提供有关数据库对象的信息,因此服务器不再检查数据目录中的目录名称以查找数据库。因此, --ignore-db-dir选项和 ignore_db_dirs系统变量是多余的并被删除。

该tx_isolation和 tx_read_only系统变量已被删除。使用 transaction_isolation和 transaction_read_only 代替。

该sync_frm系统变量已被删除,因为.frm文件已经过时。

该secure_auth系统变量和 --secure-auth客户端选项已被删除。C API函数的MYSQL_SECURE_AUTH选项mysql_options()已删除。

的multi_range_count系统变量被移除。

该log_warnings系统变量和 --log-warnings服务器选项已被删除。请改用 log_error_verbosity系统变量。

sql_log_bin系统变量 的全局范围 已删除。sql_log_bin仅具有会话作用域,@@GLOBAL.sql_log_bin应调整依赖于访问的应用程序 。

该metadata_locks_cache_size和 metadata_locks_hash_instances系统变量被删除。

未使用date_format, datetime_format, time_format,和 max_tmp_tables系统变量被删除。

这些弃用兼容性SQL模式被移除: DB2,MAXDB, MSSQL,MYSQL323, MYSQL40,ORACLE, POSTGRESQL, NO_FIELD_OPTIONS, NO_KEY_OPTIONS, NO_TABLE_OPTIONS。它们不能再分配给sql_mode系统变量或用作mysqldump --compatible选项的允许值 。

删除MAXDB意味着将或 的 TIMESTAMP数据类型 视为 ,而不再视为。 CREATE TABLEALTER TABLETIMESTAMPDATETIME

子句 的不推荐使用ASC或 DESC限定符将GROUP BY被删除。先前依赖于GROUP BY排序的查询所产生的结果可能与以前的MySQL版本不同。要产生给定的排序顺序,请提供一个ORDER BY 子句。

该语句的EXTENDED和 PARTITIONS关键字 EXPLAIN已删除。这些关键字是不必要的,因为它们的效果始终处于启用状态。

这些与加密有关的项目已删除:

该ENCODE()和 DECODE()功能。

该ENCRYPT()功能。

的DES_ENCRYPT(),和 DES_DECRYPT()功能的--des-key-file 选项,have_crypt 系统变量,则DES_KEY_FILE 该选项FLUSH 语句和HAVE_CRYPT CMake的选项。

代替已删除的加密功能:对于 ENCRYPT(),请考虑SHA2()改为使用 单向哈希。对于其他,请考虑使用 AES_ENCRYPT()和 AES_DECRYPT()代替。

在MySQL 5.7,在多个名称提供了一些空间函数被弃用使得空间功能的命名空间更一致的方向移动,其目标是使每个空间的功能名称开头ST,如果执行精确的操作,或者MBR如果它执行基于最小边界矩形的操作。在MySQL 8.0中,不赞成使用的函数被删除,仅留下相应的ST和 MBR函数:

这些功能有利于去除的 MBR名字: Contains(), Disjoint(), Equals(), Intersects(), Overlaps(), Within()。

这些功能有利于去除的 ST_名字:Area(), AsBinary(), AsText(),AsWKB(), AsWKT(),Buffer(), Centroid(), ConvexHull(), Crosses(), Dimension(), Distance(), EndPoint(), Envelope(), ExteriorRing(), GeomCollFromText(), GeomCollFromWKB(), GeomFromText(), GeomFromWKB(), GeometryCollectionFromText(), GeometryCollectionFromWKB(), GeometryFromText(), GeometryFromWKB(), GeometryN(), GeometryType(), InteriorRingN(), IsClosed(), IsEmpty(), IsSimple(), LineFromText(), LineFromWKB(), LineStringFromText(), LineStringFromWKB(), MLineFromText(), MLineFromWKB(), MPointFromText(), MPointFromWKB(), MPolyFromText(), MPolyFromWKB(), MultiLineStringFromText(), MultiLineStringFromWKB(), MultiPointFromText(), MultiPointFromWKB(), MultiPolygonFromText(), MultiPolygonFromWKB(), NumGeometries(), NumInteriorRings(), NumPoints(), PointFromText(), PointFromWKB(), PointN(), PolyFromText(), PolyFromWKB(), PolygonFromText(), PolygonFromWKB(), SRID(), StartPoint(), Touches(),X(), Y()。

GLength()被取消赞成 ST_Length()。

第12.16.4节“从WKB值创建几何值 的函数”中描述的函数 以前接受WKB字符串或几何参数。几何参数不再被允许并产生错误。有关从不使用几何参数迁移查询的准则,请参见该部分。

解析器不再视为SQL语句中\N的同义词NULL。使用 NULL代替。

这种变化并不影响执行文本文件导入和导出操作LOAD DATA或 SELECT ... INTO OUTFILE用于其NULL 继续受到代表\N。请参见 第13.2.7节“ LOAD DATA语法”。

PROCEDURE ANALYSE() 语法已删除。

客户端--ssl和 --ssl-verify-server-cert选项已被删除。使用 --ssl-mode=REQUIRED代替--ssl=1或 --enable-ssl。使用 --ssl-mode=DISABLED替代--ssl=0,--skip-ssl或 --disable-ssl。使用 --ssl-mode=VERIFY_IDENTITY 代替--ssl-verify-server-cert 选项。(服务器端 --ssl选项保持不变。)

对于C API,MYSQL_OPT_SSL_ENFORCE和的 MYSQL_OPT_SSL_VERIFY_SERVER_CERT选项mysql_options() 对应于客户端--ssl和 --ssl-verify-server-cert选项,并被删除。使用MYSQL_OPT_SSL_MODE选项值SSL_MODE_REQUIRED或 SSL_MODE_VERIFY_IDENTITY代替。

该--temp-pool移除服务器选项。

的ignore_builtin_innodb 系统变量被移除。

服务器不再将包含特殊字符的MySQL 5.1之前的数据库名称转换为带有附加#mysql50#前缀的5.1格式。由于不再执行这些转换,因此删除了mysqlcheck的 --fix-db-names和 --fix-table-names选项, 语句的UPGRADE DATA DIRECTORY NAME子句 ALTER DATABASE以及Com_alter_db_upgrade状态变量。

仅支持从一个主要版本升级到另一个主要版本(例如,从5.0升级到5.1,或从5.1升级到5.5),因此将旧的5.0数据库名称转换为当前版本的MySQL几乎不需要。解决方法是,先将MySQL 5.0安装升级到MySQL 5.1,然后再升级到最新版本。

该mysql_install_db的计划已经从MySQL分发中删除。数据目录初始化应通过使用 或 选项调用mysqld来执行 。另外,删除了mysql_install_db使用的 mysqld 选项,并删除 了控制mysql_install_db安装位置的 选项。 --initialize--initialize-insecure--bootstrapINSTALL_SCRIPTDIR CMake

通用分区处理程序已从MySQL服务器中删除。为了支持给定表的分区,用于该表的存储引擎现在必须提供其自己的(“ 本机 ”)分区处理程序。在 --partition和 --skip-partition选项从MySQL服务器删除,分区相关条目中的输出不再显示SHOW PLUGINS或在 INFORMATION_SCHEMA.PLUGINS 表中。

当前有两个MySQL存储引擎提供本机分区支持- InnoDB和 NDB; 其中,仅 InnoDBMySQL 8.0支持。使用任何其他存储引擎在MySQL 8.0中创建分区表的任何尝试都会失败。

升级的后果。 不支持 使用除InnoDB(例如 MyISAM)以外的存储引擎将分区表从MySQL 5.7(或更早版本)直接升级到MySQL 8.0。处理此类表有两种选择:

使用删除表的分区 ALTER TABLE ... REMOVE PARTITIONING。

更改用于表的存储引擎 InnoDB,用 ALTER TABLE ... ENGINE=INNODB。

在InnoDB 将服务器升级到MySQL 8.0之前,必须对每个分区的非表至少执行上述两个操作之一。否则,升级后将无法使用该表。

由于使用存储引擎在没有分区支持的情况下会导致分区表创建表的语句现在由于错误而失败(ER_CHECK_NOT_IMPLEMENTED),因此必须确保转储文件中的任何语句(例如mysqldump编写的语句)从您希望导入到创建分区表的MySQL 8.0服务器的MySQL的较早版本开始,也没有指定MyISAM没有本地分区处理程序的存储引擎 。您可以通过执行以下任一操作来做到这一点:

从CREATE TABLE使用STORAGE ENGINE选项以外的值的语句中删除对分区的所有引用 InnoDB。

将存储引擎指定为 InnoDB,或者InnoDB默认情况下允许 用作表的存储引擎。

有关更多信息,请参见 第23.6.2节“与存储引擎有关的分区限制”。

系统和状态变量信息不再保存在中INFORMATION_SCHEMA。这些表被删除: GLOBAL_VARIABLES, SESSION_VARIABLES, GLOBAL_STATUS, SESSION_STATUS。请改用相应的性能架构表。请参见 第26.12.13节“性能模式系统变量表”和 第26.12.14节“性能模式状态变量表”。另外,show_compatibility_56 系统变量也被删除。它用于过渡期间,在此期间系统和状态变量信息INFORMATION_SCHEMA表已移到Performance Schema表,并且不再需要。这些状态变量被删除: Slave_heartbeat_period, Slave_last_heartbeat, Slave_received_heartbeats, Slave_retried_transactions, Slave_running。性能架构表中提供了它们提供的信息。请参阅 迁移到性能模式系统和状态变量表。

性能模式setup_timers表已删除,表中的TICK行 也已删除performance_timers。

该libmysqld嵌入式服务器库被删除,连同:

在, , ,和 选项 mysql_options() MYSQL_OPT_GUESS_CONNECTIONMYSQL_OPT_USE_EMBEDDED_CONNECTIONMYSQL_OPT_USE_REMOTE_CONNECTIONMYSQL_SET_CLIENT_IP

该mysql_config --libmysqld-libs, --embedded-libs和 --embedded选项

该CMake的 WITH_EMBEDDED_SERVER, WITH_EMBEDDED_SHARED_LIBRARY和 INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR 选项

(未记录)mysql --server-arg选项

该mysqltest --embedded-server, --server-arg和 --server-file选项

该mysqltest_embedded和 mysql_client_test_embedded测试程序

该mysql_plugin移除工具。替代方法包括在服务器启动时使用--plugin-load或 --plugin-load-add选项或在运行时使用该INSTALL PLUGIN语句加载插件。

该的resolveip工具被删除。 可以使用nslookup,host或 dig代替。

该resolve_stack_dump工具被删除。官方MySQL构建中的堆栈跟踪始终是符号化的,因此无需使用 resolve_stack_dump。

以下服务器错误代码未使用且已删除。专门测试这些错误中任何一个的应用程序应该更新。

ER_BINLOG_READ_EVENT_CHECKSUM_FAILURE
ER_BINLOG_ROW_RBR_TO_SBR
ER_BINLOG_ROW_WRONG_TABLE_DEF
ER_CANT_ACTIVATE_LOG
ER_CANT_CHANGE_GTID_NEXT_IN_TRANSACTION
ER_CANT_CREATE_FEDERATED_TABLE
ER_CANT_CREATE_SROUTINE
ER_CANT_DELETE_FILE
ER_CANT_GET_WD
ER_CANT_SET_GTID_PURGED_WHEN_GTID_MODE_IS_OFF
ER_CANT_SET_WD
ER_CANT_WRITE_LOCK_LOG_TABLE
ER_CREATE_DB_WITH_READ_LOCK
ER_CYCLIC_REFERENCE
ER_DB_DROP_DELETE
ER_DELAYED_NOT_SUPPORTED
ER_DIFF_GROUPS_PROC
ER_DISK_FULL
ER_DROP_DB_WITH_READ_LOCK
ER_DROP_USER
ER_DUMP_NOT_IMPLEMENTED
ER_ERROR_DURING_CHECKPOINT
ER_ERROR_ON_CLOSE
ER_EVENTS_DB_ERROR
ER_EVENT_CANNOT_DELETE
ER_EVENT_CANT_ALTER
ER_EVENT_COMPILE_ERROR
ER_EVENT_DATA_TOO_LONG
ER_EVENT_DROP_FAILED
ER_EVENT_MODIFY_QUEUE_ERROR
ER_EVENT_NEITHER_M_EXPR_NOR_M_AT
ER_EVENT_OPEN_TABLE_FAILED
ER_EVENT_STORE_FAILED
ER_EXEC_STMT_WITH_OPEN_CURSOR
ER_FAILED_ROUTINE_BREAK_BINLOG
ER_FLUSH_MASTER_BINLOG_CLOSED
ER_FORM_NOT_FOUND
ER_FOUND_GTID_EVENT_WHEN_GTID_MODE_IS_OFF__UNUSED
ER_FRM_UNKNOWN_TYPE
ER_GOT_SIGNAL
ER_GRANT_PLUGIN_USER_EXISTS
ER_GTID_MODE_REQUIRES_BINLOG
ER_GTID_NEXT_IS_NOT_IN_GTID_NEXT_LIST
ER_HASHCHK
ER_INDEX_REBUILD
ER_INNODB_NO_FT_USES_PARSER
ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR
ER_LOAD_DATA_INVALID_COLUMN_UNUSED
ER_LOGGING_PROHIBIT_CHANGING_OF
ER_MALFORMED_DEFINER
ER_MASTER_KEY_ROTATION_ERROR_BY_SE
ER_NDB_CANT_SWITCH_BINLOG_FORMAT
ER_NEVER_USED
ER_NISAMCHK
ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR
ER_NO_FILE_MAPPING
ER_NO_GROUP_FOR_PROC
ER_NO_RAID_COMPILED
ER_NO_SUCH_KEY_VALUE
ER_NO_SUCH_PARTITION__UNUSED
ER_OBSOLETE_CANNOT_LOAD_FROM_TABLE
ER_OBSOLETE_COL_COUNT_DOESNT_MATCH_CORRUPTED
ER_ORDER_WITH_PROC
ER_PARTITION_SUBPARTITION_ERROR
ER_PARTITION_SUBPART_MIX_ERROR
ER_PART_STATE_ERROR
ER_PASSWD_LENGTH
ER_QUERY_ON_MASTER
ER_RBR_NOT_AVAILABLE
ER_SKIPPING_LOGGED_TRANSACTION
ER_SLAVE_CHANNEL_DELETE
ER_SLAVE_MULTIPLE_CHANNELS_HOST_PORT
ER_SLAVE_MUST_STOP
ER_SLAVE_WAS_NOT_RUNNING
ER_SLAVE_WAS_RUNNING
ER_SP_GOTO_IN_HNDLR
ER_SP_PROC_TABLE_CORRUPT
ER_SQL_MODE_NO_EFFECT
ER_SR_INVALID_CREATION_CTX
ER_TABLE_NEEDS_UPG_PART
ER_TOO_MUCH_AUTO_TIMESTAMP_COLS
ER_UNEXPECTED_EOF
ER_UNION_TABLES_IN_DIFFERENT_DIR
ER_UNSUPPORTED_BY_REPLICATION_THREAD
ER_UNUSED1
ER_UNUSED2
ER_UNUSED3
ER_UNUSED4
ER_UNUSED5
ER_UNUSED6
ER_VIEW_SELECT_DERIVED_UNUSED
ER_WRONG_MAGIC
ER_WSAS_FAILED

不推荐使用INFORMATION_SCHEMA INNODB_LOCKS,并 INNODB_LOCK_WAITS表将被删除。请改用性能架构 data_locks和 data_lock_waits表。

注意
在MySQL 5.7中,LOCK_TABLE在列INNODB_LOCKS表和locked_table在列 sys模式 innodb_lock_waits和 x$innodb_lock_waits视图包含组合模式/表名的值。在MySQL 8.0中,data_locks表和 sys架构视图包含单独的架构名称和表名称列。请参见 第27.4.3.9节“ innodb_lock_waits和x $ innodb_lock_waits视图”。

InnoDB不再支持压缩的临时表。当 innodb_strict_mode启用(默认值), CREATE TEMPORARY TABLE如果返回错误 ROW_FORMAT=COMPRESSED或 KEY_BLOCK_SIZE指定的。如果 innodb_strict_mode禁用此选项,则会发出警告,并使用非压缩的行格式创建临时表。

InnoDB 在MySQL数据目录之外创建表空间数据文件时,不再创建 .isl文件(InnoDB符号链接文件)。该 innodb_directories选项现在支持查找在数据目录外部创建的表空间文件。

通过此更改,.isl不再支持在服务器脱机时通过手动修改文件来移动远程表空间 。该innodb_directories选项现在支持移动远程表空间文件 。请参见第15.6.3.8节“在服务器脱机时移动表空间文件”。

以下InnoDB文件格式变量已删除:

innodb_file_format

innodb_file_format_check

innodb_file_format_max

innodb_large_prefix

文件格式变量对于创建与InnoDBMySQL 5.1 早期版本兼容的表是必需的 。现在,MySQL 5.1的产品生命周期已结束,不再需要这些选项。

该FILE_FORMAT列已从INNODB_TABLES和 INNODB_TABLESPACES信息模式表中删除。

innodb_support_xa删除了支持在XA事务中支持两阶段提交 的系统变量。InnoDB始终启用XA事务中的两阶段提交支持。

对DTrace的支持已删除。

该JSON_APPEND()功能已删除。使用JSON_ARRAY_APPEND() 代替。

InnoDB在MySQL 8.0.13中删除了 对将表分区放置在共享 表空间中的支持。共享表空间包括 InnoDB系统表空间和常规表空间。有关在共享表空间中标识分区并将其移至每个表文件表空间的信息,请参见第2.11.5节“为升级准备安装”。

支持SET 在MySQL 8.0.13中弃用的语句中设置用户变量 。此功能可能会在MySQL 9.0中删除。

--ndb PERROR移除选项。请改用ndb_perror实用程序。

innodb_undo_logs变量已删除。这些 innodb_rollback_segments 变量执行相同的功能,应改为使用。

在Innodb_available_undo_logs取出状态变量。每个表空间的可用回滚段数可以使用SHOW VARIABLES LIKE 'innodb_rollback_segments';

从MySQL 8.0.14开始,先前弃用的 innodb_undo_tablespaces 变量不再可配置。有关更多信息,请参见第15.6.3.4节“撤消表空间”。

对ALTER TABLE ... UPGRADE PARTITIONING语句的支持已删除。

从MySQL 8.0.16开始,internal_tmp_disk_storage_engine 已经删除了对系统变量的支持 。现在,磁盘上的内部临时表始终使用 InnoDB存储引擎。有关更多信息,请参阅 磁盘内部临时表的存储引擎。

该CMake的选择是不使用的,并已被删除。 DISABLE_SHARED