以下项目已经过时并在MySQL 8.0中被删除。如果有替代方案,请务必更新应用程序以使用这些替代方案。
对于在MySQL 8.0中被删除的功能,如果从MySQL 5.7源复制到MySQL 8.0副本时,可能会导致语句失败,或者在源和副本上产生不同的效果。为了避免这样的问题,使用在MySQL 8.0中被删除功能的应用程序应进行修订,以避免使用这些功能,并尽可能使用替代方案。
- innodb_locks_unsafe_for_binlog系统变量已被移除。 READ COMMITTED隔离级别提供了类似的功能。
- MySQL 8.0.0引入的information_schema_stats变量已被移除,并在MySQL 8.0.3中被information_schema_stats_expiry取代。
information_schema_stats_expiry用于定义缓存的INFORMATION_SCHEMA表统计信息的过期设置。 - 与已过时的InnoDB系统表相关的代码已在MySQL 8.0.3中移除。
基于InnoDB系统表的INFORMATION_SCHEMA视图已被内部系统视图替代,这些视图基于数据字典表。受影响的InnoDB INFORMATION_SCHEMA视图已被重新命名:Old Name New Name 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视图名称的脚本。
-
以下与账户管理相关的功能已被移除:
-
使用
CREATE USER
代替GRANT
来创建用户。遵循这种做法使NO_AUTO_CREATE_USER
SQL模式对GRANT
语句无效,因此该模式也已被移除。当在选项文件中的sql_mode
选项中存在NO_AUTO_CREATE_USER
值阻止mysqld
启动时,现在会将错误写入服务器日志。 -
使用
GRANT
语句来修改账户属性,包括身份验证、SSL和资源限制属性,已被移除。相反,在创建账户时,可以使用CREATE USER
语句来设置这些属性,或者使用ALTER USER
语句在创建后修改它们。 -
在MySQL中,IDENTIFIED BY PASSWORD 'auth_string'语法用于 CREATE USER和 GRANT语句已被移除。相反,现在可以使用 IDENTIFIED WITH auth_plugin AS 'auth_string'来替代,在 CREATE USER和 ALTER USER语句中使用此语法,其中的 'auth_string'值采用与指定的插件兼容的格式。
此外,由于 IDENTIFIED BY PASSWORD语法已被移除,因此 log_builtin_as_identified_by_password系统变量也不再需要,并已被移除。
-
PASSWORD()
函数已在MySQL中移除。这意味着您不能再使用PASSWORD()
函数生成密码哈希值,也不能在SET PASSWORD ... = PASSWORD('auth_string')
等语句中使用它。 -
old_passwords
是MySQL中的一个系统变量。
-
- 查询缓存已被移除。这个移除的行为包括以下内容:
-
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
和SQL_NO_CACHE
SELECT 参数被废弃,并且其行为不再起作用。这些参数预计在未来的MySQL版本中被移除。 -
ndb_cache_check_time
系统变量被废弃,并预计在未来的MySQL版本中被移除。 -
have_query_cache
系统变量仍然被废弃,并且始终具有NO值,预计在未来的MySQL版本中被移除。
-
- 数据字典提供有关数据库对象的信息,因此服务器不再通过检查数据目录中的目录名称来查找数据库。因此,
--ignore-db-dir
选项和ignore_db_dirs
系统变量是多余的,并已被移除。 - DDL日志,也称为元数据日志,已被移除。从MySQL 8.0.3版本开始,这个功能由数据字典中的
innodb_ddl_log
表来处理。 -
tx_isolation
和tx_read_only
系统变量已被移除。应使用transaction_isolation
和transaction_read_only
代替。 -
sync_frm
系统变量已被移除,原因是.frm
文件已经过时。 -
secure_auth
系统变量和--secure-auth
客户端选项已被移除。mysql_options()
C API函数的MYSQL_SECURE_AUTH
选项也已被移除。 - `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的移除意味着在CREATE TABLE或ALTER TABLE语句中,TIMESTAMP数据类型将被视为TIMESTAMP,而不再被视为DATETIME。
-
已移除GROUP BY子句中的弃用ASC或DESC限定符。以前依赖于GROUP BY排序的查询可能会产生与之前的MySQL版本不同的结果。为了按照给定的排序顺序进行查询,请提供ORDER BY子句。
-
`EXPLAIN`语句的`EXTENDED`和`PARTITIONS`关键字已被移除。这些关键字是不必要的,因为它们的效果总是启用的。
-
被移除的加密相关功能如下:
• `ENCODE()`和`DECODE()`函数。
• `ENCRYPT()`函数。
• `DES_ENCRYPT()`和`DES_DECRYPT()`函数,`--des-key-file`选项,`have_crypt`系统变量,`FLUSH`语句的`DES_KEY_FILE`选项以及`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()`。文章来源:https://www.toymoban.com/news/detail-790977.html
-
GLength()
函数已被移除,并改用ST_Length()
函数来代替。文章来源地址https://www.toymoban.com/news/detail-790977.html
-
- 几何参数不再被允许,并会产生错误。请参考该部分的指南,以迁移查询并停止使用几何参数。
- 解析器不再将
\N
视为 SQL 语句中NULL
的同义词。请使用NULL
代替。该更改不影响使用LOAD DATA
或SELECT ... INTO OUTFILE
进行的文本文件导入或导出操作,对于这些操作,仍然使用\N
表示NULL
。
到了这里,关于MySQL 8.0中移除的功能(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!