前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL8 中文参考(二)

MySQL8 中文参考(二)

作者头像
ApacheCN_飞龙
发布2024-06-26 19:10:19
1160
发布2024-06-26 19:10:19
举报
文章被收录于专栏:信数据得永生信数据得永生

原文:docs.oracle.com/javase/tutorial/reallybigindex.html

1.4 MySQL 8.0 中新增、弃用或删除的服务器和状态变量和选项

原文:dev.mysql.com/doc/refman/8.0/en/added-deprecated-removed.html

  • MySQL 8.0 中新增的选项和变量
  • MySQL 8.0 中已弃用的选项和变量
  • MySQL 8.0 中已删除的选项和变量

本节列出了在 MySQL 8.0 中首次添加、已弃用或已删除的服务器变量、状态变量和选项。

MySQL 8.0 中新增的选项和变量

以下系统变量、状态变量和服务器选项已在 MySQL 8.0 中添加。

  • Acl_cache_items_count: 缓存的权限对象数量。MySQL 8.0.0 中新增。
  • Audit_log_current_size: 审计日志文件当前大小。MySQL 8.0.11 中新增。
  • Audit_log_event_max_drop_size: 最大丢弃的审计事件大小。MySQL 8.0.11 中新增。
  • Audit_log_events: 处理的审计事件数量。MySQL 8.0.11 中新增。
  • Audit_log_events_filtered: 过滤的审计事件数量。MySQL 8.0.11 中新增。
  • Audit_log_events_lost: 被丢弃的审计事件数量。MySQL 8.0.11 中新增。
  • Audit_log_events_written: 写入的审计事件数量。MySQL 8.0.11 中新增。
  • Audit_log_total_size: 写入的审计事件的总大小。MySQL 8.0.11 中新增。
  • Audit_log_write_waits: 写入延迟的审计事件数量。MySQL 8.0.11 中新增。
  • Authentication_ldap_sasl_supported_methods: SASL LDAP 认证支持的认证方法。MySQL 8.0.21 中新增。
  • Caching_sha2_password_rsa_public_key: caching_sha2_password 认证插件 RSA 公钥值。MySQL 8.0.4 中新增。
  • Com_alter_resource_group: ALTER RESOURCE GROUP 语句的计数。MySQL 8.0.3 中新增。
  • Com_alter_user_default_role: ALTER USER … DEFAULT ROLE 语句的计数。MySQL 8.0.0 中新增。
  • Com_change_replication_source: CHANGE REPLICATION SOURCE TO 和 CHANGE MASTER TO 语句的计数。MySQL 8.0.23 版本中添加。
  • Com_clone: CLONE 语句的计数。MySQL 8.0.2 版本中添加。
  • Com_create_resource_group: CREATE RESOURCE GROUP 语句的计数。MySQL 8.0.3 版本中添加。
  • Com_create_role: CREATE ROLE 语句的计数。MySQL 8.0.0 版本中添加。
  • Com_drop_resource_group: DROP RESOURCE GROUP 语句的计数。MySQL 8.0.3 版本中添加。
  • Com_drop_role: DROP ROLE 语句的计数。MySQL 8.0.0 版本中添加。
  • Com_grant_roles: GRANT ROLE 语句的计数。MySQL 8.0.0 版本中添加。
  • Com_install_component: INSTALL COMPONENT 语句的计数。MySQL 8.0.0 版本中添加。
  • Com_replica_start: START REPLICA 和 START SLAVE 语句的计数。MySQL 8.0.22 版本中添加。
  • Com_replica_stop: STOP REPLICA 和 STOP SLAVE 语句的计数。MySQL 8.0.22 版本中添加。
  • Com_restart: RESTART 语句的计数。MySQL 8.0.4 版本中添加。
  • Com_revoke_roles: REVOKE ROLES 语句的计数。MySQL 8.0.0 版本中添加。
  • Com_set_resource_group: SET RESOURCE GROUP 语句的计数。MySQL 8.0.3 版本中添加。
  • Com_set_role: SET ROLE 语句的计数。MySQL 8.0.0 版本中添加。
  • Com_show_replica_status: SHOW REPLICA STATUS 和 SHOW SLAVE STATUS 语句的计数。MySQL 8.0.22 版本中添加。
  • Com_show_replicas: SHOW REPLICAS 和 SHOW SLAVE HOSTS 语句的计数。MySQL 8.0.22 版本中添加。
  • Com_uninstall_component: UNINSTALL COMPONENT 语句的计数。MySQL 8.0.0 版本中添加。
  • Compression_algorithm: 当前连接的压缩算法。MySQL 8.0.18 版本中添加。
  • Compression_level: 当前连接的压缩级别。MySQL 8.0.18 版本中添加。
  • Connection_control_delay_generated: 服务器延迟连接请求的次数。MySQL 8.0.1 版本中添加。
  • Current_tls_ca: ssl_ca 系统变量的当前值。MySQL 8.0.16 版本中添加。
  • 当前 _tls_ca 路径: ssl_capath 系统变量的当前值。MySQL 8.0.16 中添加。
  • 当前 _tls 证书: ssl_cert 系统变量的当前值。MySQL 8.0.16 中添加。
  • 当前 _tls 密码: ssl_cipher 系统变量的当前值。MySQL 8.0.16 中添加。
  • 当前 _tls 密码套件: tsl_ciphersuites 系统变量的当前值。MySQL 8.0.16 中添加。
  • 当前 _tls_crl: ssl_crl 系统变量的当前值。MySQL 8.0.16 中添加。
  • 当前 _tls_crl 路径: ssl_crlpath 系统变量的当前值。MySQL 8.0.16 中添加。
  • 当前 _tls 密钥: ssl_key 系统变量的当前值。MySQL 8.0.16 中添加。
  • 当前 _tls 版本: tls_version 系统变量的当前值。MySQL 8.0.16 中添加。
  • 错误日志缓冲字节: error_log 表中使用的字节数。MySQL 8.0.22 中添加。
  • 错误日志缓冲事件: error_log 表中的事件数量。MySQL 8.0.22 中添加。
  • 错误日志过期事件: 从 error_log 表中丢弃的事件数量。MySQL 8.0.22 中添加。
  • 错误日志最新写入时间: 写入 error_log 表的最后时间。MySQL 8.0.22 中添加。
  • 防火墙访问被拒绝: MySQL 企业防火墙拒绝的语句数量。MySQL 8.0.11 中添加。
  • 防火墙访问已授权: MySQL 企业防火墙接受的语句数量。MySQL 8.0.11 中添加。
  • 防火墙缓存条目: MySQL 企业防火墙记录的语句数量。MySQL 8.0.11 中添加。
  • 全局连接内存: 当前所有用户线程使用的内存量。MySQL 8.0.28 中添加。
  • Innodb 缓冲池调整状态代码: InnoDB 缓冲池调整状态代码。MySQL 8.0.31 中添加。
  • Innodb 缓冲池调整状态进度: InnoDB 缓冲池调整状态进度。MySQL 8.0.31 中添加。
  • Innodb_redo_log_capacity_resized: 最后一次完成容量调整操作后的重做日志容量。MySQL 8.0.30 中添加。
  • Innodb_redo_log_checkpoint_lsn: 重做日志检查点 LSN。MySQL 8.0.30 中添加。
  • Innodb_redo_log_current_lsn: 重做日志当前 LSN。MySQL 8.0.30 中添加。
  • Innodb_redo_log_enabled: InnoDB 重做日志状态。MySQL 8.0.21 中添加。
  • Innodb_redo_log_flushed_to_disk_lsn: 刷新到磁盘的重做日志 LSN。MySQL 8.0.30 中添加。
  • Innodb_redo_log_logical_size: 重做日志逻辑大小。MySQL 8.0.30 中添加。
  • Innodb_redo_log_physical_size: 重做日志物理大小。MySQL 8.0.30 中添加。
  • Innodb_redo_log_read_only: 重做日志是否为只读。MySQL 8.0.30 中添加。
  • Innodb_redo_log_resize_status: 重做日志调整大小状态。MySQL 8.0.30 中添加。
  • Innodb_redo_log_uuid: 重做日志 UUID。MySQL 8.0.30 中添加。
  • Innodb_system_rows_deleted: 从系统模式表中删除的行数。MySQL 8.0.19 中添加。
  • Innodb_system_rows_inserted: 插入到系统模式表中的行数。MySQL 8.0.19 中添加。
  • Innodb_system_rows_read: 从系统模式表中读取的行数。MySQL 8.0.19 中添加。
  • Innodb_undo_tablespaces_active: 活跃的撤销表空间数量。MySQL 8.0.14 中添加。
  • Innodb_undo_tablespaces_explicit: 用户创建的撤销表空间数量。MySQL 8.0.14 中添加。
  • Innodb_undo_tablespaces_implicit: InnoDB 创建的撤销表空间数量。MySQL 8.0.14 中添加。
  • Innodb_undo_tablespaces_total: 撤销表空间的总数。MySQL 8.0.14 中添加。
  • Mysqlx_bytes_received_compressed_payload: 接收的压缩消息负载字节数,解压缩前测量。MySQL 8.0.19 中添加。
  • Mysqlx_bytes_received_uncompressed_frame: 作为压缩消息负载接收的字节数,解压缩后测量。MySQL 8.0.19 中添加。
  • Mysqlx_bytes_sent_compressed_payload: 作为压缩消息负载发送的字节数,压缩后测量。MySQL 8.0.19 中添加。
  • Mysqlx_bytes_sent_uncompressed_frame: 作为压缩消息负载发送的字节数,压缩前测量。MySQL 8.0.19 中添加。
  • Mysqlx_compression_algorithm: 用于此会话的 X 协议连接的压缩算法。MySQL 8.0.20 中添加。
  • Mysqlx_compression_level: 用于此会话的 X 协议连接的压缩级别。MySQL 8.0.20 中添加。
  • Replica_open_temp_tables: 复制 SQL 线程当前打开的临时表数量。MySQL 8.0.26 中添加。
  • Replica_rows_last_search_algorithm_used: 此副本最近用于定位行的搜索算法(索引、表格或哈希扫描)。MySQL 8.0.26 中添加。
  • Resource_group_supported: 服务器是否支持资源组功能。MySQL 8.0.31 中添加。
  • Rpl_semi_sync_replica_status: 副本上是否正在运行半同步复制。MySQL 8.0.26 中添加。
  • Rpl_semi_sync_source_clients: 半同步复制副本的数量。MySQL 8.0.26 中添加。
  • Rpl_semi_sync_source_net_avg_wait_time: 源端等待来自副本回复的平均时间。MySQL 8.0.26 中添加。
  • Rpl_semi_sync_source_net_wait_time: 源端等待来自副本回复的总时间。MySQL 8.0.26 中添加。
  • Rpl_semi_sync_source_net_waits: 源端等待来自副本回复的总次数。MySQL 8.0.26 中添加。
  • Rpl_semi_sync_source_no_times: 源端关闭半同步复制的次数。MySQL 8.0.26 中添加。
  • Rpl_semi_sync_source_no_tx: 未成功确认的提交次数。MySQL 8.0.26 中添加。
  • Rpl_semi_sync_source_status: 源端是否正在进行半同步复制。在 MySQL 8.0.26 中添加。
  • Rpl_semi_sync_source_timefunc_failures: 调用时间函数时源端失败的次数。在 MySQL 8.0.26 中添加。
  • Rpl_semi_sync_source_tx_avg_wait_time: 每个事务源端等待的平均时间。在 MySQL 8.0.26 中添加。
  • Rpl_semi_sync_source_tx_wait_time: 源端等待事务的总时间。在 MySQL 8.0.26 中添加。
  • Rpl_semi_sync_source_tx_waits: 源端等待事务的总次数。在 MySQL 8.0.26 中添加。
  • Rpl_semi_sync_source_wait_pos_backtraverse: 源端等待具有比之前等待的事件更低的二进制坐标的总次数。在 MySQL 8.0.26 中添加。
  • Rpl_semi_sync_source_wait_sessions: 当前正在等待复制回复的会话数。在 MySQL 8.0.26 中添加。
  • Rpl_semi_sync_source_yes_tx: 成功确认的提交次数。在 MySQL 8.0.26 中添加。
  • Secondary_engine_execution_count: 转移到辅助引擎的查询数量。在 MySQL 8.0.13 中添加。
  • Ssl_session_cache_timeout: 缓存中当前 SSL 会话超时值。在 MySQL 8.0.29 中添加。
  • Telemetry_traces_supported: 是否支持服务器遥测跟踪。在 MySQL 8.0.33 中添加。
  • Tls_library_version: 使用的 OpenSSL 库的运行时版本。在 MySQL 8.0.30 中添加。
  • activate_all_roles_on_login: 是否在连接时激活所有用户角色。在 MySQL 8.0.2 中添加。
  • admin-ssl: 启用连接加密。在 MySQL 8.0.21 中添加。
  • admin_address: 用于管理接口连接的绑定 IP 地址。在 MySQL 8.0.14 中添加。
  • admin_port: 用于管理接口连接的 TCP/IP 号码。在 MySQL 8.0.14 中添加。
  • admin_ssl_ca: 包含受信任 SSL 证书颁发机构列表的文件。在 MySQL 8.0.21 中添加。
  • admin_ssl_capath: 包含受信任的 SSL 证书颁发机构证书文件的目录。在 MySQL 8.0.21 中添加。
  • admin_ssl_cert: 包含 X.509 证书的文件。在 MySQL 8.0.21 中添加。
  • admin_ssl_cipher: 连接加密的允许密码。在 MySQL 8.0.21 中添加。
  • admin_ssl_crl: 包含证书吊销列表的文件。在 MySQL 8.0.21 中添加。
  • admin_ssl_crlpath: 包含证书吊销列表文件的目录。在 MySQL 8.0.21 中添加。
  • admin_ssl_key: 包含 X.509 密钥的文件。在 MySQL 8.0.21 中添加。
  • admin_tls_ciphersuites: 加密连接的允许 TLSv1.3 密码套件。在 MySQL 8.0.21 中添加。
  • admin_tls_version: 加密连接的允许 TLS 协议。在 MySQL 8.0.21 中添加。
  • audit-log: 是否激活审计日志插件。在 MySQL 8.0.11 中添加。
  • audit_log_buffer_size: 审计日志缓冲区的大小。在 MySQL 8.0.11 中添加。
  • audit_log_compression: 审计日志文件压缩方法。在 MySQL 8.0.11 中添加。
  • audit_log_connection_policy: 连接相关事件的审计日志策略。在 MySQL 8.0.11 中添加。
  • audit_log_current_session: 是否审计当前会话。在 MySQL 8.0.11 中添加。
  • audit_log_database: 存储审计表的模式。在 MySQL 8.0.33 中添加。
  • audit_log_disable: 是否禁用审计日志。在 MySQL 8.0.28 中添加。
  • audit_log_encryption: 审计日志文件加密方法。在 MySQL 8.0.11 中添加。
  • audit_log_exclude_accounts: 不审计的账户。在 MySQL 8.0.11 中添加。
  • audit_log_file: 审计日志文件的名称。在 MySQL 8.0.11 中添加。
  • audit_log_filter_id: 当前审计日志过滤器的 ID。在 MySQL 8.0.11 中添加。
  • audit_log_flush: 关闭并重新打开审计日志文件。在 MySQL 8.0.11 中添加。
  • audit_log_flush_interval_seconds: 是否执行内存缓存的定期刷新。在 MySQL 8.0.34 中添加。
  • audit_log_format: 审计日志文件格式。在 MySQL 8.0.11 中添加。
  • audit_log_format_unix_timestamp: 是否在 JSON 格式审计日志中包含 Unix 时间戳。在 MySQL 8.0.26 中添加。
  • audit_log_include_accounts: 要审计的账户。在 MySQL 8.0.11 中添加。
  • audit_log_max_size: JSON 审计日志文件的组合大小限制。在 MySQL 8.0.26 中添加。
  • audit_log_password_history_keep_days: 保留归档审计日志加密密码的天数。在 MySQL 8.0.17 中添加。
  • audit_log_policy: 审计日志策略。在 MySQL 8.0.11 中添加。
  • audit_log_prune_seconds: 多少秒后审计日志文件将被修剪。在 MySQL 8.0.24 中添加。
  • audit_log_read_buffer_size: 审计日志文件读取缓冲区大小。在 MySQL 8.0.11 中添加。
  • audit_log_rotate_on_size: 在达到此大小时关闭并重新打开审计日志文件。在 MySQL 8.0.11 中添加。
  • audit_log_statement_policy: 与语句相关事件的审计日志策略。在 MySQL 8.0.11 中添加。
  • audit_log_strategy: 审计日志策略。在 MySQL 8.0.11 中添加。
  • authentication_fido_rp_id: 用于 FIDO 多因素认证的 Relying party ID。在 MySQL 8.0.27 中添加。
  • authentication_kerberos_service_key_tab: 包含用于认证 TGS 票证的 Kerberos 服务密钥的文件。在 MySQL 8.0.26 中添加。
  • authentication_kerberos_service_principal: Kerberos 服务主体名称。在 MySQL 8.0.26 中添加。
  • authentication_ldap_sasl_auth_method_name: 认证方法名称。在 MySQL 8.0.11 中添加。
  • authentication_ldap_sasl_bind_base_dn: LDAP 服务器基本分离名称。在 MySQL 8.0.11 中添加。
  • authentication_ldap_sasl_bind_root_dn: LDAP 服务器根分配名称。在 MySQL 8.0.11 中添加。
  • authentication_ldap_sasl_bind_root_pwd: LDAP 服务器根绑定密码。在 MySQL 8.0.11 中添加。
  • authentication_ldap_sasl_ca_path: LDAP 服务器证书颁发机构文件名。在 MySQL 8.0.11 中添加。
  • authentication_ldap_sasl_group_search_attr: LDAP 服务器组搜索属性。在 MySQL 8.0.11 中添加。
  • authentication_ldap_sasl_group_search_filter: LDAP 自定义组搜索过滤器。在 MySQL 8.0.11 中添加。
  • authentication_ldap_sasl_init_pool_size: LDAP 服务器初始连接池大小。在 MySQL 8.0.11 中添加。
  • authentication_ldap_sasl_log_status: LDAP 服务器日志级别。在 MySQL 8.0.11 中添加。
  • authentication_ldap_sasl_max_pool_size: LDAP 服务器最大连接池大小。在 MySQL 8.0.11 中添加。
  • authentication_ldap_sasl_referral: 是否启用 LDAP 搜索引荐。在 MySQL 8.0.20 中添加。
  • authentication_ldap_sasl_server_host: LDAP 服务器主机名或 IP 地址。在 MySQL 8.0.11 中添加。
  • authentication_ldap_sasl_server_port: LDAP 服务器端口号。在 MySQL 8.0.11 中添加。
  • authentication_ldap_sasl_tls: 是否使用加密连接到 LDAP 服务器。在 MySQL 8.0.11 中添加。
  • authentication_ldap_sasl_user_search_attr: LDAP 服务器用户搜索属性。在 MySQL 8.0.11 中添加。
  • authentication_ldap_simple_auth_method_name: 认证方法名称。在 MySQL 8.0.11 中添加。
  • authentication_ldap_simple_bind_base_dn: LDAP 服务器基本分配名称。在 MySQL 8.0.11 中添加。
  • authentication_ldap_simple_bind_root_dn: LDAP 服务器根分辨名称。在 MySQL 8.0.11 中添加。
  • authentication_ldap_simple_bind_root_pwd: LDAP 服务器根绑定密码。在 MySQL 8.0.11 中添加。
  • authentication_ldap_simple_ca_path: LDAP 服务器证书颁发机构文件名。在 MySQL 8.0.11 中添加。
  • authentication_ldap_simple_group_search_attr: LDAP 服务器组搜索属性。在 MySQL 8.0.11 中添加。
  • authentication_ldap_simple_group_search_filter: LDAP 自定义组搜索过滤器。在 MySQL 8.0.11 中添加。
  • authentication_ldap_simple_init_pool_size: LDAP 服务器初始连接池大小。在 MySQL 8.0.11 中添加。
  • authentication_ldap_simple_log_status: LDAP 服务器日志级别。在 MySQL 8.0.11 中添加。
  • authentication_ldap_simple_max_pool_size: LDAP 服务器最大连接池大小。在 MySQL 8.0.11 中添加。
  • authentication_ldap_simple_referral: 是否启用 LDAP 搜索引荐。在 MySQL 8.0.20 中添加。
  • authentication_ldap_simple_server_host: LDAP 服务器主机名或 IP 地址。在 MySQL 8.0.11 中添加。
  • authentication_ldap_simple_server_port: LDAP 服务器端口号。在 MySQL 8.0.11 中添加。
  • authentication_ldap_simple_tls: 是否使用加密连接到 LDAP 服务器。在 MySQL 8.0.11 中添加。
  • authentication_ldap_simple_user_search_attr: LDAP 服务器用户搜索属性。在 MySQL 8.0.11 中添加。
  • authentication_policy: 多因素认证插件。在 MySQL 8.0.27 中添加。
  • authentication_windows_log_level: Windows 认证插件日志级别。在 MySQL 8.0.11 中添加。
  • authentication_windows_use_principal_name: 是否使用 Windows 身份验证插件主体名称。MySQL 8.0.11 中添加。
  • binlog_encryption: 启用此服务器上二进制日志文件和中继日志文件的加密。MySQL 8.0.14 中添加。
  • binlog_expire_logs_auto_purge: 控制二进制日志文件的自动清理;当启用时,可以通过将 binlog_expire_logs_seconds 和 expire_logs_days 都设置为 0 来覆盖。MySQL 8.0.29 中添加。
  • binlog_expire_logs_seconds: 在此多少秒后清除二进制日志。MySQL 8.0.1 中添加。
  • binlog_rotate_encryption_master_key_at_startup: 在服务器启动时旋转二进制日志主密钥。MySQL 8.0.14 中添加。
  • binlog_row_metadata: 在使用基于行的日志记录时,是否记录所有或仅最小的与表相关的元数据到二进制日志中。MySQL 8.0.1 中添加。
  • binlog_row_value_options: 启用基于行的复制的部分 JSON 更新的二进制日志记录。MySQL 8.0.3 中添加。
  • binlog_transaction_compression: 启用二进制日志文件中事务负载的压缩。MySQL 8.0.20 中添加。
  • binlog_transaction_compression_level_zstd: 二进制日志文件中事务负载的压缩级别。MySQL 8.0.20 中添加。
  • binlog_transaction_dependency_history_size: 用于查找最后更新某行的事务的行哈希数。MySQL 8.0.1 中添加。
  • binlog_transaction_dependency_tracking: 用于评估哪些事务可以由副本的多线程应用程序并行执行的依赖信息来源(提交时间戳或事务写入集)。MySQL 8.0.1 中添加。
  • build_id: 在编译时生成的唯一构建 ID(仅限 Linux)。MySQL 8.0.31 中添加。
  • caching_sha2_password_auto_generate_rsa_keys: 是否自动生成 RSA 密钥对文件。MySQL 8.0.4 中添加。
  • caching_sha2_password_digest_rounds: caching_sha2_password 认证插件的哈希轮数。MySQL 8.0.24 中添加。
  • caching_sha2_password_private_key_path: SHA2 认证插件私钥路径名。MySQL 8.0.3 中添加。
  • caching_sha2_password_public_key_path: SHA2 认证插件公钥路径名。MySQL 8.0.3 中添加。
  • clone_autotune_concurrency: 启用动态生成线程以进行远程克隆操作。MySQL 8.0.17 中添加。
  • clone_block_ddl: 在克隆操作期间启用独占备份锁。MySQL 8.0.27 中添加。
  • clone_buffer_size: 定义在捐赠者 MySQL 服务器实例上的中间缓冲区大小。MySQL 8.0.17 中添加。
  • clone_ddl_timeout: 克隆操作等待备份锁的秒数。MySQL 8.0.17 中添加。
  • clone_delay_after_data_drop: 克隆过程开始前的延迟时间(秒)。MySQL 8.0.29 中添加。
  • clone_donor_timeout_after_network_failure: 网络故障后重新启动克隆操作的允许时间。MySQL 8.0.24 中添加。
  • clone_enable_compression: 在克隆过程中启用网络层数据压缩。MySQL 8.0.17 中添加。
  • clone_max_concurrency: 用于执行克隆操作的最大并发线程数。MySQL 8.0.17 中添加。
  • clone_max_data_bandwidth: 远程克隆操作每秒的最大数据传输速率(以 MiB 为单位)。MySQL 8.0.17 中添加。
  • clone_max_network_bandwidth: 远程克隆操作每秒的最大网络传输速率(以 MiB 为单位)。MySQL 8.0.17 中添加。
  • clone_ssl_ca: 指定证书颁发机构(CA)文件的路径。MySQL 8.0.14 中添加。
  • clone_ssl_cert: 指定公钥证书文件的路径。MySQL 8.0.14 中添加。
  • clone_ssl_key: 指定私钥文件的路径。MySQL 8.0.14 中添加。
  • clone_valid_donor_list: 定义远程克隆操作的捐赠主机地址。MySQL 8.0.17 中添加。
  • component_scheduler.enabled: 调度程序是否正在执行任务。MySQL 8.0.34 中添加。
  • connection_control_failed_connections_threshold: 连续失败的连接尝试次数,之后会发生延迟。MySQL 8.0.1 中添加。
  • connection_control_max_connection_delay: 服务器响应失败连接尝试的最大延迟时间(毫秒)。MySQL 8.0.1 中添加。
  • connection_control_min_connection_delay: 服务器响应失败连接尝试的最小延迟时间(毫秒)。MySQL 8.0.1 中添加。
  • connection_memory_chunk_size: 仅当用户内存使用量变化达到或超过此数量时才更新 Global_connection_memory;0 表示禁用更新。MySQL 8.0.28 中添加。
  • connection_memory_limit: 任何用户连接可以消耗的最大内存量,在此之前该用户的所有查询都将被拒绝。不适用于 MySQL root 等系统用户。MySQL 8.0.28 中添加。
  • create_admin_listener_thread: 是否使用专用监听线程处理管理接口上的连接。MySQL 8.0.14 中添加。
  • cte_max_recursion_depth: 公共表达式的最大递归深度。MySQL 8.0.3 中添加。
  • ddl-rewriter: 是否激活 ddl_rewriter 插件。MySQL 8.0.16 中添加。
  • default_collation_for_utf8mb4: utf8mb4 字符集的默认排序规则;仅供 MySQL 复制内部使用。MySQL 8.0.11 中添加。
  • default_table_encryption: 默认模式和表空间加密设置。MySQL 8.0.16 中添加。
  • dragnet.Status: 最近一次对 dragnet.log_error_filter_rules 的赋值结果。MySQL 8.0.12 中添加。
  • dragnet.log_error_filter_rules: 错误日志的过滤规则。MySQL 8.0.4 中添加。
  • early-plugin-load: 指定在加载强制内置插件和存储引擎初始化之前加载的插件。MySQL 8.0.0 中添加。
  • enterprise_encryption.maximum_rsa_key_size: MySQL 企业加密生成的 RSA 密钥的最大大小。在 MySQL 8.0.30 中添加。
  • enterprise_encryption.rsa_support_legacy_padding: 解密和验证传统的 MySQL 企业加密内容。在 MySQL 8.0.30 中添加。
  • explain_format: 决定 EXPLAIN 语句使用的默认输出格式。在 MySQL 8.0.32 中添加。
  • generated_random_password_length: 生成密码的最大长度。在 MySQL 8.0.18 中添加。
  • global_connection_memory_limit: 所有用户连接可以消耗的最大内存总量。当 Global_connection_memory 超出时,所有常规用户的查询都将被拒绝。不适用于 MySQL root 等系统用户。在 MySQL 8.0.28 中添加。
  • global_connection_memory_tracking: 是否计算全局连接内存使用情况(如 Global_connection_memory 所示);默认为禁用。在 MySQL 8.0.28 中添加。
  • group_replication_advertise_recovery_endpoints: 分布式恢复提供的连接。在 MySQL 8.0.21 中添加。
  • group_replication_autorejoin_tries: 成员自动重新加入组的尝试次数。在 MySQL 8.0.16 中添加。
  • group_replication_clone_threshold: 捐赠者和接收者之间的事务编号差距,超过该差距时,将使用远程克隆操作进行状态传输。在 MySQL 8.0.17 中添加。
  • group_replication_communication_debug_options: Group Replication 组件的调试消息级别。在 MySQL 8.0.3 中添加。
  • group_replication_communication_max_message_size: Group Replication 通信的最大消息大小,较大的消息将被分段。在 MySQL 8.0.16 中添加。
  • group_replication_communication_stack: 指定是使用 XCom 通信堆栈还是 MySQL 通信堆栈来建立成员之间的组通信连接。在 MySQL 8.0.27 中添加。
  • group_replication_consistency: 组提供的事务一致性保证类型。在 MySQL 8.0.14 中添加。
  • group_replication_exit_state_action: 实例在非自愿离开组时的行为。在 MySQL 8.0.12 中添加。
  • group_replication_flow_control_hold_percent: 保留未使用的组配额的百分比。在 MySQL 8.0.2 中添加。
  • group_replication_flow_control_max_quota: 组的最大流控配额。在 MySQL 8.0.2 中添加。
  • group_replication_flow_control_member_quota_percent: 计算配额时成员应该假定可用于自身的配额百分比。在 MySQL 8.0.2 中添加。
  • group_replication_flow_control_min_quota: 每个成员可以分配的最低流控配额。在 MySQL 8.0.2 中添加。
  • group_replication_flow_control_min_recovery_quota: 每个成员可以分配的最低配额,因为另一个组成员正在恢复。在 MySQL 8.0.2 中添加。
  • group_replication_flow_control_period: 定义流控迭代之间等待的秒数。在 MySQL 8.0.2 中添加。
  • group_replication_flow_control_release_percent: 当流控不再需要限制写入成员时,应如何释放组配额。在 MySQL 8.0.2 中添加。
  • group_replication_ip_allowlist: 允许连接到组的主机列表(MySQL 8.0.22 及更高版本)。在 MySQL 8.0.22 中添加。
  • group_replication_member_expel_timeout: 成员被怀疑失败和被从组中驱逐之间的时间,导致组成员重新配置。在 MySQL 8.0.13 中添加。
  • group_replication_member_weight: 该成员被选为主要成员的机会。在 MySQL 8.0.2 中添加。
  • group_replication_message_cache_size: 组通信引擎消息缓存(XCom)的最大内存。在 MySQL 8.0.16 中添加。
  • group_replication_paxos_single_leader: 在单主模式中使用单一共识领导者。在 MySQL 8.0.27 中添加。
  • group_replication_recovery_compression_algorithms: 用于传出恢复连接的允许压缩算法。在 MySQL 8.0.18 中添加。
  • group_replication_recovery_get_public_key: 是否接受从捐赠者获取公钥的偏好。在 MySQL 8.0.4 中添加。
  • group_replication_recovery_public_key_path: 接受公钥信息。在 MySQL 8.0.4 中添加。
  • group_replication_recovery_tls_ciphersuites: 当 TLSv1.3 用于与此实例作为客户端(加入成员)连接加密时,允许的密码套件。在 MySQL 8.0.19 中添加。
  • group_replication_recovery_tls_version: 作为客户端(加入成员)连接加密的允许 TLS 协议。在 MySQL 8.0.19 中添加。
  • group_replication_recovery_zstd_compression_level: 用于使用 zstd 压缩的恢复连接的压缩级别。在 MySQL 8.0.18 中添加。
  • group_replication_tls_source: Group Replication 的 TLS 材料来源。在 MySQL 8.0.21 中添加。
  • group_replication_unreachable_majority_timeout: 等待导致少数派离开组的网络分区的时间。在 MySQL 8.0.2 中添加。
  • group_replication_view_change_uuid: 视图更改事件 GTIDs 的 UUID。在 MySQL 8.0.26 中添加。
  • histogram_generation_max_mem_size: 创建直方图统计信息的最大内存。在 MySQL 8.0.2 中添加。
  • immediate_server_version: 作为即时复制源的服务器的 MySQL 服务器发布号。在 MySQL 8.0.14 中添加。
  • information_schema_stats_expiry: 缓存表统计信息的过期设置。在 MySQL 8.0.3 中添加。
  • init_replica: 当副本连接到源时执行的语句。在 MySQL 8.0.26 中添加。
  • innodb_buffer_pool_debug: 当缓冲池小于 1GB 时,允许多个缓冲池实例。MySQL 8.0.0 中添加。
  • innodb_buffer_pool_in_core_file: 控制将缓冲池页面写入核心文件。MySQL 8.0.14 中添加。
  • innodb_checkpoint_disabled: 禁用检查点,以便故意服务器退出始终启动恢复。MySQL 8.0.2 中添加。
  • innodb_ddl_buffer_size: DDL 操作的最大缓冲区大小。MySQL 8.0.27 中添加。
  • innodb_ddl_log_crash_reset_debug: 重置 DDL 日志崩溃注入计数器的调试选项。MySQL 8.0.3 中添加。
  • innodb_ddl_threads: 用于索引创建的最大并行线程数。MySQL 8.0.27 中添加。
  • innodb_deadlock_detect: 启用或禁用死锁检测。MySQL 8.0.0 中添加。
  • innodb_dedicated_server: 启用缓冲池大小、日志文件大小���刷新方法的自动配置。MySQL 8.0.3 中添加。
  • innodb_directories: 定义在启动时扫描表空间数据文件的目录。MySQL 8.0.4 中添加。
  • innodb_doublewrite_batch_size: 每批写入的双写页数。MySQL 8.0.20 中添加。
  • innodb_doublewrite_dir: 双写缓冲文件目录。MySQL 8.0.20 中添加。
  • innodb_doublewrite_files: 双写文件数。MySQL 8.0.20 中添加。
  • innodb_doublewrite_pages: 每个线程的双写页数。MySQL 8.0.20 中添加。
  • innodb_extend_and_initialize: 控制在 Linux 上分配新表空间页面的方式。MySQL 8.0.22 中添加。
  • innodb_fsync_threshold: 控制 InnoDB 在创建新文件时调用 fsync 的频率。MySQL 8.0.13 中添加。
  • innodb_idle_flush_pct: 当 InnoDB 空闲时限制 I/O 操作。MySQL 8.0.18 中添加。
  • innodb_log_checkpoint_fuzzy_now: 强制 InnoDB 写入模糊检查点的调试选项。MySQL 8.0.13 中添加。
  • innodb_log_spin_cpu_abs_lwm: 在等待刷新的重做时,用户线程不再自旋的最低 CPU 使用量。MySQL 8.0.11 中添加。
  • innodb_log_spin_cpu_pct_hwm: 在等待刷新的重做时,用户线程不再自旋的最大 CPU 使用量。MySQL 8.0.11 中添加。
  • innodb_log_wait_for_flush_spin_hwm: 超过平均日志刷新时间的最大值时,用户线程不再自旋等待刷新的重做。MySQL 8.0.11 中添加。
  • innodb_log_writer_threads: 启用专用的日志写入线程来写入和刷新重做日志。MySQL 8.0.22 中添加。
  • innodb_parallel_read_threads: 并行索引读取线程数。MySQL 8.0.14 中添加。
  • innodb_print_ddl_logs: 是否将 DDL 日志打印到错误日志中。MySQL 8.0.3 中添加。
  • innodb_redo_log_archive_dirs: 标记的重做日志归档目录。MySQL 8.0.17 中添加。
  • innodb_redo_log_capacity: 重做日志文件的大小限制。MySQL 8.0.30 中添加。
  • innodb_redo_log_encrypt: 控制加密表空间的重做日志数据的加密。MySQL 8.0.1 中添加。
  • innodb_scan_directories: 定义在 InnoDB 恢复期间扫描表空间文件的目录。MySQL 8.0.2 中添加。
  • innodb_segment_reserve_factor: 作为空页保留的表空间文件段页面的百分比。MySQL 8.0.26 中添加。
  • innodb_spin_wait_pause_multiplier: 用于确定自旋等待循环中 PAUSE 指令数量的乘数值。MySQL 8.0.16 中添加。
  • innodb_stats_include_delete_marked: 在计算持久 InnoDB 统计信息时包括删除标记记录。MySQL 8.0.1 中添加。
  • innodb_temp_tablespaces_dir: 会话临时表空间路径。MySQL 8.0.13 中添加。
  • innodb_tmpdir: 在线 ALTER TABLE 操作期间创建的临时表文件的目录位置。MySQL 8.0.0 中添加。
  • innodb_undo_log_encrypt: 控制加密表空间的撤销日志数据的加密。MySQL 8.0.1 中添加。
  • innodb_use_fdatasync: 当刷新数据到操作系统时,InnoDB 是否使用 fdatasync() 而不是 fsync()。在 MySQL 8.0.26 中添加。
  • innodb_validate_tablespace_paths: 启用启动时的表空间路径验证。在 MySQL 8.0.21 中添加。
  • internal_tmp_mem_storage_engine: 用于内部内存临时表的存储引擎。在 MySQL 8.0.2 中添加。
  • keyring-migration-destination: 密钥迁移目标密钥环插件。在 MySQL 8.0.4 中添加。
  • keyring-migration-host: 用于连接到正在运行的服务器进行密钥迁移的主机名。在 MySQL 8.0.4 中添加。
  • keyring-migration-password: 用于连接到正在运行的服务器进行密钥迁移的密码。在 MySQL 8.0.4 中添加。
  • keyring-migration-port: 用于连接到正在运行的服务器进行密钥迁移的 TCP/IP 端口号。在 MySQL 8.0.4 中添加。
  • keyring-migration-socket: 用于连接到正在运行的服务器进行密钥迁移的 Unix 套接字文件或 Windows 命名管道。在 MySQL 8.0.4 中添加。
  • keyring-migration-source: 密钥迁移源密钥环插件。在 MySQL 8.0.4 中添加。
  • keyring-migration-to-component: 密钥迁移是从插件到组件。在 MySQL 8.0.24 中添加。
  • keyring-migration-user: 用于连接到正在运行的服务器进行密钥迁移的用户名。在 MySQL 8.0.4 中添加。
  • keyring_aws_cmk_id: AWS 密钥环插件客户主密钥 ID 值。在 MySQL 8.0.11 中添加。
  • keyring_aws_conf_file: AWS 密钥环插件配置文件位置。在 MySQL 8.0.11 中添加。
  • keyring_aws_data_file: AWS 密钥环插件存储文件位置。在 MySQL 8.0.11 中添加。
  • keyring_aws_region: AWS 密钥环插件区域。在 MySQL 8.0.11 中添加。
  • keyring_encrypted_file_data: keyring_encrypted_file 插件数据文件。在 MySQL 8.0.11 中添加。
  • keyring_encrypted_file_password: keyring_encrypted_file 插件密码。在 MySQL 8.0.11 中添加。
  • keyring_hashicorp_auth_path: HashiCorp Vault AppRole 认证路径。在 MySQL 8.0.18 中添加。
  • keyring_hashicorp_ca_path: keyring_hashicorp CA 文件路径。在 MySQL 8.0.18 中添加。
  • keyring_hashicorp_caching: 是否启用 keyring_hashicorp 缓存。在 MySQL 8.0.18 中添加。
  • keyring_hashicorp_commit_auth_path: 使用的 keyring_hashicorp_auth_path 值。在 MySQL 8.0.18 中添加。
  • keyring_hashicorp_commit_ca_path: 使用的 keyring_hashicorp_ca_path 值。在 MySQL 8.0.18 中添加。
  • keyring_hashicorp_commit_caching: 使用的 keyring_hashicorp_caching 值。在 MySQL 8.0.18 中添加。
  • keyring_hashicorp_commit_role_id: 使用的 keyring_hashicorp_role_id 值。在 MySQL 8.0.18 中添加。
  • keyring_hashicorp_commit_server_url: 使用的 keyring_hashicorp_server_url 值。在 MySQL 8.0.18 中添加。
  • keyring_hashicorp_commit_store_path: 使用的 keyring_hashicorp_store_path 值。在 MySQL 8.0.18 中添加。
  • keyring_hashicorp_role_id: HashiCorp Vault AppRole 认证角色 ID。在 MySQL 8.0.18 中添加。
  • keyring_hashicorp_secret_id: HashiCorp Vault AppRole 认证秘密 ID。在 MySQL 8.0.18 中添加。
  • keyring_hashicorp_server_url: HashiCorp Vault 服务器 URL。在 MySQL 8.0.18 中添加。
  • keyring_hashicorp_store_path: HashiCorp Vault 存储路径。在 MySQL 8.0.18 中添加。
  • keyring_oci_ca_certificate: 用于对等身份验证的 CA 证书文件。在 MySQL 8.0.22 中添加。
  • keyring_oci_compartment: OCI compartment OCID。在 MySQL 8.0.22 中添加。
  • keyring_oci_encryption_endpoint: OCI 加密服务器端点。在 MySQL 8.0.22 中添加。
  • keyring_oci_key_file: OCI RSA 私钥文件。在 MySQL 8.0.22 中添加。
  • keyring_oci_key_fingerprint: OCI RSA 私钥文件指纹。在 MySQL 8.0.22 中添加。
  • keyring_oci_management_endpoint: OCI 管理服务器端点。在 MySQL 8.0.22 中添加。
  • keyring_oci_master_key: OCI 主密钥 OCID。在 MySQL 8.0.22 中添加。
  • keyring_oci_secrets_endpoint: OCI 秘密服务器端点。在 MySQL 8.0.22 中添加。
  • keyring_oci_tenancy: OCI 租户 OCID。在 MySQL 8.0.22 中添加。
  • keyring_oci_user: OCI 用户 OCID。在 MySQL 8.0.22 中添加。
  • keyring_oci_vaults_endpoint: OCI 保险库服务器端点。在 MySQL 8.0.22 中添加。
  • keyring_oci_virtual_vault: OCI 保险库 OCID。在 MySQL 8.0.22 中添加。
  • keyring_okv_conf_dir: Oracle Key Vault 密钥环插件配置目录。在 MySQL 8.0.11 中添加。
  • keyring_operations: 是否启用密钥环操作。在 MySQL 8.0.4 中添加。
  • lock_order: 是否在运行时启用 LOCK_ORDER 工具。在 MySQL 8.0.17 中添加。
  • lock_order_debug_loop: 当 LOCK_ORDER 工具遇到标记为循环的依赖关系时,是否引发调试断言。在 MySQL 8.0.17 中添加。
  • lock_order_debug_missing_arc: 当 LOCK_ORDER 工具遇到未声明的依赖关系时,是否引发调试断言。在 MySQL 8.0.17 中添加。
  • lock_order_debug_missing_key: 当 LOCK_ORDER 工具遇到未正确使用性能模式进行仪器化的对象时,是否引发调试断言。在 MySQL 8.0.17 中添加。
  • lock_order_debug_missing_unlock: 当 LOCK_ORDER 工具遇到仍在持有的锁被销毁时,是否引发调试断言。在 MySQL 8.0.17 中添加。
  • lock_order_dependencies: lock_order_dependencies.txt 文件的路径。在 MySQL 8.0.17 中添加。
  • lock_order_extra_dependencies: 第二个依赖文件的路径。在 MySQL 8.0.17 中添加。
  • lock_order_output_directory: LOCK_ORDER 工具写入日志的目录。在 MySQL 8.0.17 中添加。
  • lock_order_print_txt: 是否执行锁定顺序图分析并打印文本报告。在 MySQL 8.0.17 中添加。
  • lock_order_trace_loop: 当 LOCK_ORDER 工具遇到标记为循环的依赖关系时,是否打印日志文件跟踪。在 MySQL 8.0.17 中添加。
  • lock_order_trace_missing_arc: 当 LOCK_ORDER 工具遇到未声明的依赖关系时,是否打印日志文件跟踪。在 MySQL 8.0.17 中添加。
  • lock_order_trace_missing_key: 当 LOCK_ORDER 工具遇到未正确使用性能模式进行仪表化的对象时,是否打印日志文件跟踪。在 MySQL 8.0.17 中添加。
  • lock_order_trace_missing_unlock: 当 LOCK_ORDER 工具遇到仍在持有的锁被销毁时,是否打印日志文件跟踪。在 MySQL 8.0.17 中添加。
  • log_error_filter_rules: 错误日志记录的过滤规则。在 MySQL 8.0.2 中添加。
  • log_error_services: 用于错误日志记录的组件。在 MySQL 8.0.2 中添加。
  • log_error_suppression_list: 要抑制的警告/信息错误日志消息。在 MySQL 8.0.13 中添加。
  • log_replica_updates: 是否应该将副本的复制 SQL 线程执行的更新记录到自己的二进制日志中。在 MySQL 8.0.26 中添加。
  • log_slow_extra: 是否向慢查询日志文件写入额外信息。在 MySQL 8.0.14 中添加。
  • log_slow_replica_statements: 导致副本执行的慢查询被写入慢查询日志。在 MySQL 8.0.26 中添加。
  • mandatory_roles: 自动授予所有用户的角色。在 MySQL 8.0.2 中添加。
  • mysql_firewall_mode: MySQL 企业防火墙是否正在运行。在 MySQL 8.0.11 中添加。
  • mysql_firewall_trace: 是否启用防火墙跟踪。在 MySQL 8.0.11 中添加。
  • mysqlx: X 插件是否已初始化。在 MySQL 8.0.11 中添加。
  • mysqlx_compression_algorithms: 允许 X 协议连接使用的压缩算法。在 MySQL 8.0.19 中添加。
  • mysqlx_deflate_default_compression_level: X 协议连接上 Deflate 算法的默认压缩级别。在 MySQL 8.0.20 中添加。
  • mysqlx_deflate_max_client_compression_level: X 协议连接上 Deflate 算法的最大允许压缩级别。MySQL 8.0.20 中添加。
  • mysqlx_interactive_timeout: 等待交互式客户端超时的秒数。MySQL 8.0.4 中添加。
  • mysqlx_lz4_default_compression_level: X 协议连接上 LZ4 算法的默认压缩级别。MySQL 8.0.20 中添加。
  • mysqlx_lz4_max_client_compression_level: X 协议连接上 LZ4 算法的最大允许压缩级别。MySQL 8.0.20 中添加。
  • mysqlx_read_timeout: 等待阻塞读操作完成的秒数。MySQL 8.0.4 中添加。
  • mysqlx_wait_timeout: 等待连接活动的秒数。MySQL 8.0.4 中添加。
  • mysqlx_write_timeout: 等待阻塞写操作完成的秒数。MySQL 8.0.4 中添加。
  • mysqlx_zstd_default_compression_level: X 协议连接上 zstd 算法的默认压缩级别。MySQL 8.0.20 中添加。
  • mysqlx_zstd_max_client_compression_level: X 协议连接上 zstd 算法的最大允许压缩级别。MySQL 8.0.20 中添加。
  • named_pipe_full_access_group: 被授予对命名管道完全访问权限的 Windows 组名称。MySQL 8.0.14 中添加。
  • no-dd-upgrade: 防止启动时自动升级数据字典表。MySQL 8.0.4 中添加。
  • no-monitor: 不要为 RESTART 需要的监视进程分叉。MySQL 8.0.12 中添加。
  • original_commit_timestamp: 事务在原始源上提交的时间。MySQL 8.0.1 中添加。
  • original_server_version: 事务最初提交的 MySQL 服务器发布版本号。MySQL 8.0.14 中添加。
  • partial_revokes: 是否启用部分撤销。MySQL 8.0.16 中添加。
  • password_history: 在重复使用密码之前需要更改的次数。MySQL 8.0.3 中添加。
  • password_require_current: 密码更改是否需要当前密码验证。MySQL 8.0.13 中添加。
  • password_reuse_interval: 在重复使用密码之前需要经过的天数。MySQL 8.0.3 中添加。
  • performance-schema-consumer-events-statements-cpu: 配置语句 CPU 使用情况消费者。MySQL 8.0.28 中添加。
  • performance_schema_max_digest_sample_age: 查询重新采样的时间范围(秒)。MySQL 8.0.3 中添加。
  • performance_schema_show_processlist: 选择 SHOW PROCESSLIST 实现。MySQL 8.0.22 中添加。
  • persist_only_admin_x509_subject: 启用持久化受限制系统变量的 SSL 证书 X.509 主题。MySQL 8.0.14 中添加。
  • persist_sensitive_variables_in_plaintext: 服务器是否允许以未加密格式存储敏感系统变量的值。MySQL 8.0.29 中添加。
  • persisted_globals_load: 是否加载持久化配置设置。MySQL 8.0.0 中添加。
  • print_identified_with_as_hex: 对于 SHOW CREATE USER,以十六进制打印包含不可打印字符的哈希值。MySQL 8.0.17 中添加。
  • protocol_compression_algorithms: 用于传入连接的允许压缩算法。MySQL 8.0.18 中添加。
  • pseudo_replica_mode: 供内部服务器使用。MySQL 8.0.26 中添加。
  • regexp_stack_limit: 正则表达式匹配堆栈大小限制。MySQL 8.0.4 中添加。
  • regexp_time_limit: 正则表达式匹配超时时间。MySQL 8.0.4 中添加。
  • replica_checkpoint_group: 多线程复制处理的最大事务数,在调用检查点操作以更新进度状态之前。不支持 NDB Cluster。MySQL 8.0.26 中添加。
  • replica_checkpoint_period: 更新多线程复制的进度状态,并在此毫秒数后将中继日志信息刷新到磁盘。不受 NDB Cluster 支持。在 MySQL 8.0.26 中添加。
  • replica_compressed_protocol: 使用源/复制协议的压缩。在 MySQL 8.0.26 中添加。
  • replica_exec_mode: 允许在 IDEMPOTENT 模式(键和一些其他错误被抑制)和 STRICT 模式之间切换复制线程;STRICT 模式是默认的,除了 NDB Cluster,在那里始终使用 IDEMPOTENT。在 MySQL 8.0.26 中添加。
  • replica_load_tmpdir: 复制时复制应该将其临时文件放置的位置 LOAD DATA 语句。在 MySQL 8.0.26 中添加。
  • replica_max_allowed_packet: 可以从复制源服务器发送到复制品的数据包的最大大小(以字节为单位);覆盖 max_allowed_packet。在 MySQL 8.0.26 中添加。
  • replica_net_timeout: 等待来自源/复制连接的更多数据的秒数,然后中止读取。在 MySQL 8.0.26 中添加。
  • replica_parallel_type: 告诉复制使用时间戳信息(LOGICAL_CLOCK)或数据库分区(DATABASE)来并行化事务。在 MySQL 8.0.26 中添加。
  • replica_parallel_workers: 用于执行复制事务的应用程序线程数;当为 0 或 1 时,只有一个应用程序线程。NDB Cluster:请参阅文档。在 MySQL 8.0.26 中添加。
  • replica_pending_jobs_size_max: 持有尚未应用的事件的复制工作者队列的最大大小。在 MySQL 8.0.26 中添加。
  • replica_preserve_commit_order: 确保复制工作者的所有提交按照源上的顺序发生,以保持一致性在使用并行应用程序线程时。在 MySQL 8.0.26 中添加。
  • replica_skip_errors: 告诉复制线程在查询从提供的列表返回错误时继续复制。在 MySQL 8.0.26 中添加。
  • replica_sql_verify_checksum: 导致复制在从中继日志读取时检查校验和。在 MySQL 8.0.26 中添加。
  • replica_transaction_retries: 在事务由于死锁或超时而失败时,复制 SQL 线程重试事务的次数,然后放弃并停止。MySQL 8.0.26 中添加。
  • replica_type_conversions: 控制副本上的类型转换模式。值是以下列表中零个或多个元素的列表:ALL_LOSSY,ALL_NON_LOSSY。设置为空字符串以禁止源端和副本之间的类型转换。MySQL 8.0.26 中添加。
  • replication_optimize_for_static_plugin_config: 半同步复制的共享锁。MySQL 8.0.23 中添加。
  • replication_sender_observe_commit_only: 半同步复制的有限回调。MySQL 8.0.23 中添加。
  • require_row_format: 供内部服务器使用。MySQL 8.0.19 中添加。
  • resultset_metadata: 服务器是否返回结果集元数据。MySQL 8.0.3 中添加。
  • rewriter_enabled_for_threads_without_privilege_checks: 如果设置为 OFF,则对于执行时禁用权限检查的复制线程(PRIVILEGE_CHECKS_USER 为 NULL)跳过重写。MySQL 8.0.31 中添加。
  • rpl_read_size: 从二进制日志文件和中继日志文件中读取的最小数据量(以字节为单位)。MySQL 8.0.11 中添加。
  • rpl_semi_sync_replica_enabled: 副本是否启用半同步复制。MySQL 8.0.26 中添加。
  • rpl_semi_sync_replica_trace_level: 副本上的半同步复制调试跟踪级别。MySQL 8.0.26 中添加。
  • rpl_semi_sync_source_enabled: 源端是否启用半同步复制。MySQL 8.0.26 中添加。
  • rpl_semi_sync_source_timeout: 等待副本确认的毫秒数。MySQL 8.0.26 中添加。
  • rpl_semi_sync_source_trace_level: 源端上的半同步复制调试跟踪级别。MySQL 8.0.26 中添加。
  • rpl_semi_sync_source_wait_for_replica_count: 源端在继续之前必须收到每个事务的副本确认数。MySQL 8.0.26 中添加。
  • rpl_semi_sync_source_wait_no_replica: 是否源在没有副本的情况下等待超时。在 MySQL 8.0.26 中添加。
  • rpl_semi_sync_source_wait_point: 副本事务接收确认的等待点。在 MySQL 8.0.26 中添加。
  • rpl_stop_replica_timeout: STOP REPLICA 等待超时的秒数。在 MySQL 8.0.26 中添加。
  • schema_definition_cache: 可以在字典对象缓存中保留的模式定义对象的数量。在 MySQL 8.0.0 中添加。
  • secondary_engine_cost_threshold: 查询转移到辅助引擎的优化器成本阈值。在 MySQL 8.0.16 中添加。
  • select_into_buffer_size: 用于 OUTFILE 或 DUMPFILE 导出文件的缓冲区大小;覆盖 read_buffer_size。在 MySQL 8.0.22 中添加。
  • select_into_disk_sync: 在刷新 OUTFILE 或 DUMPFILE 导出文件的缓冲区后,与存储设备同步数据;OFF 禁用同步,是默认值。在 MySQL 8.0.22 中添加。
  • select_into_disk_sync_delay: 当 select_into_sync_disk = ON 时,设置每次同步 OUTFILE 或 DUMPFILE 导出文件缓冲区后的延迟时间(以毫秒为单位),否则不起作用。在 MySQL 8.0.22 中添加。
  • show-replica-auth-info: 在此源上的 SHOW REPLICAS 中显示用户名和密码。在 MySQL 8.0.26 中添加。
  • show_create_table_skip_secondary_engine: 是否从 SHOW CREATE TABLE 输出中排除 SECONDARY ENGINE 子句。在 MySQL 8.0.18 中添加。
  • show_create_table_verbosity: 是否在 SHOW CREATE TABLE 中显示 ROW_FORMAT,即使它具有默认值。在 MySQL 8.0.11 中添加。
  • show_gipk_in_create_table_and_information_schema: 是否在 SHOW 语句和 INFORMATION_SCHEMA 表中显示生成的不可见主键。在 MySQL 8.0.30 中添加。
  • skip-replica-start: 如果设置,则在副本服务器启动时不会自动启动复制。在 MySQL 8.0.26 中添加。
  • source_verify_checksum: 导致源在从二进制日志读取时检查校验和。在 MySQL 8.0.26 中添加。
  • sql_generate_invisible_primary_key: 是否为在此服务器上创建的任何没有显式主键的 InnoDB 表生成不可见主键。MySQL 8.0.30 中添加。
  • sql_replica_skip_counter: 复制应跳过的源事件数量。与 GTID 复制不兼容。MySQL 8.0.26 中添加。
  • sql_require_primary_key: 表是否必须有主键。MySQL 8.0.13 中添加。
  • ssl_fips_mode: 是否在服务器端启用 FIPS 模式。MySQL 8.0.11 中添加。
  • ssl_session_cache_mode: 是否启用服务器生成会话票据。MySQL 8.0.29 中添加。
  • ssl_session_cache_timeout: SSL 会话超时值(秒)。MySQL 8.0.29 中添加。
  • sync_source_info: 每 # 个事件后同步源信息。MySQL 8.0.26 中添加。
  • syseventlog.facility: syslog 消息的设施。MySQL 8.0.13 中添加。
  • syseventlog.include_pid: 是否在 syslog 消息中包含服务器 PID。MySQL 8.0.13 中添加。
  • syseventlog.tag: syslog 消息中服务器标识符的标记。MySQL 8.0.13 中添加。
  • table_encryption_privilege_check: 启用 TABLE_ENCRYPTION_ADMIN 权限检查。MySQL 8.0.16 中添加。
  • tablespace_definition_cache: 可以保存在字典对象缓存中的表空间定义对象的数量。MySQL 8.0.0 中添加。
  • temptable_max_mmap: TempTable 存储引擎可以从内存映射临时文件中分配的最大内存量。MySQL 8.0.23 中添加。
  • temptable_max_ram: 定义在数据存储在磁盘之前 TempTable 存储引擎可以占用的最大内存量。MySQL 8.0.2 中添加。
  • temptable_use_mmap: 定义当达到 temptable_max_ram 阈值时,TempTable 存储引擎是否分配内存映射文件。MySQL 8.0.16 中添加。
  • terminology_use_previous: 在不兼容更改的情况下使用指定版本之前的术语。MySQL 8.0.26 中添加。
  • thread_pool_algorithm: 线程池算法。MySQL 8.0.11 中添加。
  • thread_pool_dedicated_listeners: 在每个线程组中专门指定一个监听线程以监听网络事件。MySQL 8.0.23 中添加。
  • thread_pool_high_priority_connection: 当前会话是否为高优先级。MySQL 8.0.11 中添加。
  • thread_pool_max_active_query_threads: 每个组的活动查询线程的最大允许数量。MySQL 8.0.19 中添加。
  • thread_pool_max_transactions_limit: 线程池操作期间允许的最大事务数。MySQL 8.0.23 中添加。
  • thread_pool_max_unused_threads: 最大允许的未使用线程数。MySQL 8.0.11 中添加。
  • thread_pool_prio_kickup_timer: 语句移至高优先级执行前的时间。MySQL 8.0.11 中添加。
  • thread_pool_query_threads_per_group: 每个线程组的最大查询线程数。MySQL 8.0.31 中添加。
  • thread_pool_size: 线程池中线程组的数量。MySQL 8.0.11 中添加。
  • thread_pool_stall_limit: 语句被定义为停滞之前的时间。MySQL 8.0.11 中添加。
  • thread_pool_transaction_delay: 线程池执行新事务之前的延迟时间。MySQL 8.0.31 中添加。
  • tls_ciphersuites: 用于加密连接的 TLSv1.3 密码套件。MySQL 8.0.16 中添加。
  • upgrade: 控制启动时的自动升级。MySQL 8.0.16 中添加。
  • use_secondary_engine: 是否使用辅助引擎执行查询。MySQL 8.0.13 中添加。
  • validate-config: 验证服务器配置。MySQL 8.0.16 中添加。
  • validate_password.changed_characters_percentage: 新密码所需更改字符的最低百分比。MySQL 8.0.34 中添加。
  • validate_password.check_user_name: 是否检查密码与用户名是否匹配。MySQL 8.0.4 中添加。
  • validate_password.dictionary_file: validate_password 字典文件。在 MySQL 8.0.4 中添加。
  • validate_password.dictionary_file_last_parsed: 上次解析字典文件的时间。在 MySQL 8.0.4 中添加。
  • validate_password.dictionary_file_words_count: 字典文件中的单词数量。在 MySQL 8.0.4 中添加。
  • validate_password.length: validate_password 要求的密码长度。在 MySQL 8.0.4 中添加。
  • validate_password.mixed_case_count: validate_password 要求的大写/小写字符数量。在 MySQL 8.0.4 中添加。
  • validate_password.number_count: validate_password 要求的数字字符数量。在 MySQL 8.0.4 中添加。
  • validate_password.policy: validate_password 密码策略。在 MySQL 8.0.4 中添加。
  • validate_password.special_char_count: validate_password 要求的特殊字符数量。在 MySQL 8.0.4 中添加。
  • version_compile_zlib: 编译的 zlib 库版本。在 MySQL 8.0.11 中添加。
  • windowing_use_high_precision: 是否计算窗口函数以高精度。在 MySQL 8.0.2 中添加。
MySQL 8.0 中已弃用的选项和变量

以下系统变量、状态变量和选项已在 MySQL 8.0 中弃用。

  • Compression: 客户端连接是否在客户端/服务器协议中使用压缩。在 MySQL 8.0.18 中已弃用。
  • Slave_open_temp_tables: 复制 SQL 线程当前打开的临时表数量。在 MySQL 8.0.26 中已弃用。
  • Slave_rows_last_search_algorithm_used: 此副本最近用于定位行以进行基于行的复制(索引、表或哈希扫描)的搜索算法。在 MySQL 8.0.26 中已弃用。
  • abort-slave-event-count: 用于调试和测试复制的 mysql-test 使用的选项。在 MySQL 8.0.29 中已弃用。
  • admin-ssl: 启用连接加密。在 MySQL 8.0.26 中已弃用。
  • audit_log_connection_policy: 连接相关事件的审计日志策略。在 MySQL 8.0.34 中已弃用。
  • audit_log_exclude_accounts: 不需要审计的账户。在 MySQL 8.0.34 中已弃用。
  • audit_log_include_accounts: 需要审计的账户。在 MySQL 8.0.34 中已弃用。
  • audit_log_policy: 审计日志策略。在 MySQL 8.0.34 中已弃用。
  • audit_log_statement_policy: 语句相关事件的审计日志策略。在 MySQL 8.0.34 中已弃用。
  • authentication_fido_rp_id: FIDO 多因素认证的 Relying party ID。在 MySQL 8.0.35 中已弃用。
  • binlog_format: 指定二进制日志的格式。在 MySQL 8.0.34 中已弃用。
  • binlog_transaction_dependency_tracking: 从中评估副本的多线程应用程序可以并行执行哪些事务的依赖信息来源(提交时间戳或事务写入集)。在 MySQL 8.0.35 中已弃用。
  • character-set-client-handshake: 在握手期间不忽略客户端字符集值。在 MySQL 8.0.35 中已弃用。
  • daemon_memcached_enable_binlog: . 在 MySQL 8.0.22 中已弃用。
  • daemon_memcached_engine_lib_name: 实现 InnoDB memcached 插件的共享库。在 MySQL 8.0.22 中已弃用。
  • daemon_memcached_engine_lib_path: 包含实现 InnoDB memcached 插件的共享库的目录。在 MySQL 8.0.22 中已弃用。
  • daemon_memcached_option: 在启动时传递给底层 memcached 守护程序的以空格分隔的选项。在 MySQL 8.0.22 中已弃用。
  • daemon_memcached_r_batch_size: 在开始新事务之前执行多少个 memcached 读操作。在 MySQL 8.0.22 中已弃用。
  • daemon_memcached_w_batch_size: 在开始新事务之前执行多少个 memcached 写操作。在 MySQL 8.0.22 中已弃用。
  • default_authentication_plugin: 默认认证插件。在 MySQL 8.0.27 中已弃用。
  • disconnect-slave-event-count: 用于调试和测试复制的 mysql-test 选项。在 MySQL 8.0.29 中已弃用。
  • expire_logs_days: 在这么多天后清除二进制日志。在 MySQL 8.0.3 中已弃用。
  • group_replication_ip_whitelist: 允许连接到组的主机列表。在 MySQL 8.0.22 中已弃用。
  • group_replication_primary_member: 当组以单主模式运行时的主要成员 UUID。如果组以多主模式运行,则为空字符串。在 MySQL 8.0.4 中已弃用。
  • group_replication_recovery_complete_at: 在状态传输后处理缓存事务时的恢复策略。在 MySQL 8.0.34 中已弃用。
  • have_openssl: mysqld 是否支持 SSL 连接。在 MySQL 8.0.26 中已弃用。
  • have_ssl: mysqld 是否支持 SSL 连接。在 MySQL 8.0.26 中已弃用。
  • init_slave: 当复制连接到源时执行的语句。在 MySQL 8.0.26 中已弃用。
  • innodb_api_bk_commit_interval: 多久自动提交使用 InnoDB memcached 接口的空��连接,单位为秒。在 MySQL 8.0.22 中已弃用。
  • innodb_api_disable_rowlock: . 在 MySQL 8.0.22 中已弃用。
  • innodb_api_enable_binlog: 允许使用 InnoDB memcached 插件与 MySQL 二进制日志。在 MySQL 8.0.22 中已弃用。
  • innodb_api_enable_mdl: 锁定 InnoDB memcached 插件使用的表,以防止通过 SQL 接口的 DDL 删除或更改。在 MySQL 8.0.22 中已弃用。
  • innodb_api_trx_level: 允许控制由 memcached 接口处理的查询的事务隔离级别。在 MySQL 8.0.22 中已弃用。
  • innodb_log_file_size: 日志组中每个日志文件的大小。在 MySQL 8.0.30 中已弃用。
  • innodb_log_files_in_group: 日志组中的 InnoDB 日志文件数。在 MySQL 8.0.30 中已弃用。
  • innodb_undo_tablespaces: 回滚段分布在的表空间文件数。在 MySQL 8.0.4 中已弃用。
  • keyring_encrypted_file_data: keyring_encrypted_file 插件数据文件。在 MySQL 8.0.34 中已弃用。
  • keyring_encrypted_file_password: keyring_encrypted_file 插件密码。在 MySQL 8.0.34 中已弃用。
  • keyring_file_data: keyring_file 插件数据文件。在 MySQL 8.0.34 中已弃用。
  • keyring_oci_ca_certificate: 用于对等身份验证的 CA 证书文件。在 MySQL 8.0.31 中已弃用。
  • keyring_oci_compartment: OCI 隔间 OCID。在 MySQL 8.0.31 中已弃用。
  • keyring_oci_encryption_endpoint: OCI 加密服务器端点。在 MySQL 8.0.31 中已弃用。
  • keyring_oci_key_file: OCI RSA 私钥文件。在 MySQL 8.0.31 中已弃用。
  • keyring_oci_key_fingerprint: OCI RSA 私钥文件指纹。在 MySQL 8.0.31 中已弃用。
  • keyring_oci_management_endpoint: OCI 管理服务器端点。在 MySQL 8.0.31 中已弃用。
  • keyring_oci_master_key: OCI 主密钥 OCID。在 MySQL 8.0.31 中已弃用。
  • keyring_oci_secrets_endpoint: OCI 秘密服务器端点。在 MySQL 8.0.31 中已弃用。
  • keyring_oci_tenancy: OCI 租户 OCID。在 MySQL 8.0.31 中已弃用。
  • keyring_oci_user: OCI 用户 OCID。在 MySQL 8.0.31 中已弃用。
  • keyring_oci_vaults_endpoint: OCI vaults 服务器端点。在 MySQL 8.0.31 中已弃用。
  • keyring_oci_virtual_vault: OCI 保险库 OCID。在 MySQL 8.0.31 中已弃用。
  • log_bin_trust_function_creators: 如果等于 0(默认值),那么当使用 --log-bin 时,只有具有 SUPER 特权的用户才允许存储函数创建,并且只有在创建的函数不会破坏二进制日志记录时才允许。在 MySQL 8.0.34 中已弃用。
  • log_bin_use_v1_row_events: 服务器是否使用版本 1 的二进制日志行事件。在 MySQL 8.0.18 中已弃用。
  • log_slave_updates: 复制是否应该将其复制 SQL 线程执行的更新记录到自己的二进制日志中。在 MySQL 8.0.26 中已弃用。
  • log_slow_slave_statements: 导致副本执行的慢查询被写入慢查询日志。在 MySQL 8.0.26 中已弃用。
  • log_statements_unsafe_for_binlog: 禁用写入错误日志的错误 1592 警告。在 MySQL 8.0.34 中已弃用。
  • log_syslog: 是否将错误日志写入 syslog。在 MySQL 8.0.2 中已弃用。
  • master-info-file: 记录源和 I/O 复制线程在源二进制日志中位置的文件位置和名称。在 MySQL 8.0.18 中已弃用。
  • master_info_repository: 是否将连接元数据存储库写入文件或表,其中包含源信息和源二进制日志中复制 I/O 线程位置。在 MySQL 8.0.23 中已弃用。
  • master_verify_checksum: 导致源在读取二进制日志时检查校验和。在 MySQL 8.0.26 中已弃用。
  • max_length_for_sort_data: 排序记录中的最大字节数。在 MySQL 8.0.20 中已弃用。
  • myisam_repair_threads: 修复 MyISAM 表时要使用的线程数。1 表示禁用并行修复。在 MySQL 8.0.29 中已弃用。
  • new: 使用非常新的,可能是“不安全”的功能。在 MySQL 8.0.35 中已弃用。
  • no-dd-upgrade: 防止在启动时自动升级数据字典表。在 MySQL 8.0.16 中已弃用。
  • old: 导致服务器恢复到旧版本中存在的某些行为。在 MySQL 8.0.35 中已弃用。
  • old-style-user-limits: 启用旧式用户限制(在 5.0.3 之前,用户资源是按每个用户+主机计算而不是按账户计算)。在 MySQL 8.0.30 中已弃用。
  • performance_schema_show_processlist: 选择 SHOW PROCESSLIST 的实现。在 MySQL 8.0.35 中已弃用。
  • pseudo_slave_mode: 供内部服务器使用。在 MySQL 8.0.26 中已弃用。
  • query_prealloc_size: 用于查询解析和执行的持久缓冲区。在 MySQL 8.0.29 中已弃用。
  • relay_log_info_file: 应用程序元数据存储库的文件名,副本在其中记录有关中继日志的信息。在 MySQL 8.0.18 中已弃用。
  • relay_log_info_repository: 是否将复制 SQL 线程的位置写入中继日志到文件或表中。在 MySQL 8.0.23 中已弃用。
  • replica_parallel_type: 告诉复制使用时间戳信息(LOGICAL_CLOCK)或数据库分区(DATABASE)来并行化事务。在 MySQL 8.0.29 中已弃用。
  • rpl_stop_slave_timeout: STOP REPLICA 或 STOP SLAVE 在超时之前等待的秒数。在 MySQL 8.0.26 中已弃用。
  • safe-user-create: 不允许没有对 mysql.user 表具有写权限的用户创建新用户;此选项已弃用并被忽略。在 MySQL 8.0.11 中已弃用。
  • show-slave-auth-info: 在此源上在 SHOW REPLICAS 和 SHOW SLAVE HOSTS 中显示用户名和密码。在 MySQL 8.0.26 中已弃用。
  • skip-character-set-client-handshake: 在握手期间忽略客户���端发送的字符集值。在 MySQL 8.0.35 中已弃用。
  • skip-host-cache: 不缓存主机名。在 MySQL 8.0.30 中已弃用。
  • skip-new: 不使用新的、可能错误的例程。在 MySQL 8.0.35 中已弃用。
  • skip-slave-start: 如果设置,当复制服务器启动时不会自动启动复制。在 MySQL 8.0.26 中已弃用。
  • slave-skip-errors: 告诉复制线程在查询从提供的列表返回错误时继续复制。在 MySQL 8.0.26 中已弃用。
  • slave_checkpoint_group: 在调用检查点操作更新进度状态之前,多线程复制处理的最大事务数。不支持 NDB Cluster。在 MySQL 8.0.26 中已弃用。
  • slave_checkpoint_period: 在此毫秒数后更新多线程复制的进度状态,并将中继日志信息刷新到磁盘。不支持 NDB Cluster。在 MySQL 8.0.26 中已弃用。
  • slave_compressed_protocol: 使用源/复制协议的压缩。在 MySQL 8.0.18 中已弃用。
  • slave_load_tmpdir: 复制 LOAD DATA 语句时,复制应将临时文件放置的位置。在 MySQL 8.0.26 中已弃用。
  • slave_max_allowed_packet: 可以从复制源服务器发送到复制品的数据包的最大大小(以字节为单位);覆盖 max_allowed_packet。在 MySQL 8.0.26 中已弃用。
  • slave_net_timeout: 等待源/复制连接中更多数据的秒数,然后中止读取。在 MySQL 8.0.26 中已弃用。
  • slave_parallel_type: 告诉复制使用时间戳信息(LOGICAL_CLOCK)或数据库分区(DATABASE)来并行化事���。在 MySQL 8.0.26 中已弃用。
  • slave_parallel_workers: 用于并行执行复制事务的应用程序线程数;0 或 1 禁用复制多线程。NDB Cluster:请参阅文档。在 MySQL 8.0.26 中已弃用。
  • slave_pending_jobs_size_max: 持有尚未应用的事件的复制工作者队列的最大大小。在 MySQL 8.0.26 中已弃用。
  • slave_preserve_commit_order: 确保复制工作者的所有提交按照源上的顺序发生,以保持一致性,当使用并行应用程序线程时。在 MySQL 8.0.26 中已弃用。
  • slave_rows_search_algorithms: 确定用于复制更新批处理的搜索算法。从此列表中选择任意 2 或 3 个:INDEX_SEARCH,TABLE_SCAN,HASH_SCAN。在 MySQL 8.0.18 中已弃用。
  • slave_sql_verify_checksum: 导致复制时从中继日志读取时检查校验和。在 MySQL 8.0.26 中已弃用。
  • slave_transaction_retries: 复制 SQL 线程在事务失败(死锁或已过锁等待超时)时重试事务的次数,然后放弃并停止。在 MySQL 8.0.26 中已弃用。
  • slave_type_conversions: 控制复制上的类型转换模式。值是此列表中零个或多个元素:ALL_LOSSY,ALL_NON_LOSSY。设置为空字符串以禁止源和复制之间的类型转换。在 MySQL 8.0.26 中已弃用。
  • sql_slave_skip_counter: 复制应跳过的源事件数。与 GTID 复制不兼容。在 MySQL 8.0.26 中已弃用。
  • ssl: 启用连接加密。在 MySQL 8.0.26 中已弃用。
  • ssl_fips_mode: 是否在服务器端启用 FIPS 模式。在 MySQL 8.0.34 中已弃用。
  • symbolic-links: 允许 MyISAM 表使用符号链接。在 MySQL 8.0.2 中已弃用。
  • sync_master_info: 每第#个事件后同步源信息。在 MySQL 8.0.26 中已弃用。
  • sync_relay_log_info: 每第#个事件后将 relay.info 文件同步到磁盘。在 MySQL 8.0.34 中已弃用。
  • temptable_use_mmap: 当 temptable_max_ram 阈值达到时,TempTable 存储引擎是否分配内存映射文件。在 MySQL 8.0.26 中已弃用。
  • transaction_prealloc_size: 用于存储二进制日志中事务的持久缓冲区。在 MySQL 8.0.29 中已弃用。
  • transaction_write_set_extraction: 定义在事务期间提取的写入哈希算法。在 MySQL 8.0.26 中已弃用。
在 MySQL 8.0 中已移除的选项和变量

以下系统变量、状态变量和选项已在 MySQL 8.0 中移除。

  • Com_alter_db_upgrade: ALTER DATABASE … UPGRADE DATA DIRECTORY NAME 语句的计数。在 MySQL 8.0.0 中已移除。
  • Innodb_available_undo_logs: InnoDB 回滚段的总数;与 innodb_rollback_segments 不同,后者显示活动回滚段的数量。在 MySQL 8.0.2 中已移除。
  • Qcache_free_blocks: 查询缓存中的空闲内存块数。在 MySQL 8.0.3 中已移除。
  • Qcache_free_memory: 查询缓存的空闲内存量。在 MySQL 8.0.3 中已移除。
  • Qcache_hits: 查询缓存命中次数。在 MySQL 8.0.3 中已移除。
  • Qcache_inserts: 查询缓存插入次数。在 MySQL 8.0.3 中已移除。
  • Qcache_lowmem_prunes: 由于缓存中内存不足而从查询缓存中删除的查询数量。在 MySQL 8.0.3 中已移除。
  • Qcache_not_cached: 非缓存查询的数量(不可缓存或由于 query_cache_type 设置而未缓存)。在 MySQL 8.0.3 中已移除。
  • Qcache_queries_in_cache: 查询缓存中注册的查询数量。在 MySQL 8.0.3 中已移除。
  • Qcache_total_blocks: 查询缓存中的总块数。在 MySQL 8.0.3 中已移除。
  • Slave_heartbeat_period: 复制的心跳间隔,单位为秒。在 MySQL 8.0.1 中已移除。
  • Slave_last_heartbeat: 显示最新心跳信号接收时间,格式为时间戳。在 MySQL 8.0.1 中已移除。
  • Slave_received_heartbeats: 自上次重置以来副本接收的心跳数。在 MySQL 8.0.1 中已移除。
  • Slave_retried_transactions: 自启动以来,复制 SQL 线程重试事务的总次数。在 MySQL 8.0.1 中已移除。
  • Slave_running: 该服务器作为副本的状态(复制 I/O 线程状态)。在 MySQL 8.0.1 中已移除。
  • bootstrap: mysql 安装脚本使用。在 MySQL 8.0.0 中已移除。
  • date_format: 日期格式(未使用)。在 MySQL 8.0.3 中移除。
  • datetime_format: DATETIME/TIMESTAMP 格式(未使用)。在 MySQL 8.0.3 中移除。
  • des-key-file: 从给定文件加载 des_encrypt()和 des_encrypt 的密钥。在 MySQL 8.0.3 中移除。
  • group_replication_allow_local_disjoint_gtids_join: 允许当前服务器加入组,即使它具有组中不存在的事务。在 MySQL 8.0.4 中移除。
  • have_crypt: crypt()系统调用的可用性。在 MySQL 8.0.3 中移除。
  • ignore-db-dir: 将目录视为非数据库目录。在 MySQL 8.0.0 中移除。
  • ignore_builtin_innodb: 忽略内置 InnoDB。在 MySQL 8.0.3 中移除。
  • ignore_db_dirs: 视为非数据库目录的目录。在 MySQL 8.0.0 中移除。
  • innodb_checksums: 启用 InnoDB 校验和验证。在 MySQL 8.0.0 中移除。
  • innodb_disable_resize_buffer_pool_debug: 禁用 InnoDB 缓冲池的调整大小。在 MySQL 8.0.0 中移除。
  • innodb_file_format: 新 InnoDB 表的格式。在 MySQL 8.0.0 中移除。
  • innodb_file_format_check: InnoDB 是否执行文件格式兼容性检查。在 MySQL 8.0.0 中移除。
  • innodb_file_format_max: 共享表空间中的文件格式标记。在 MySQL 8.0.0 中移除。
  • innodb_large_prefix: 启用更长的列前缀索引键。在 MySQL 8.0.0 中移除。
  • innodb_locks_unsafe_for_binlog: 强制 InnoDB 不使用 next-key 锁定,而只使用行级锁定。在 MySQL 8.0.0 中移除。
  • innodb_scan_directories: 定义在 InnoDB 恢复期间扫描表空间文件的目录。在 MySQL 8.0.4 中移除。
  • innodb_stats_sample_pages: 用于索引分布统计的样本页数。在 MySQL 8.0.0 中移除。
  • innodb_support_xa: 启用 InnoDB 对 XA 两阶段提交的支持。在 MySQL 8.0.0 中移除。
  • innodb_undo_logs: InnoDB 使用的撤销日志(回滚段)数量;innodb_rollback_segments 的别名。在 MySQL 8.0.2 中移除。
  • internal_tmp_disk_storage_engine: 内部临时表的存储引擎。在 MySQL 8.0.16 中移除。
  • log-warnings: 将一些非关键警告写入日志文件。在 MySQL 8.0.3 中移除。
  • log_builtin_as_identified_by_password: 是否以向后兼容的方式记录 CREATE/ALTER USER、GRANT。在 MySQL 8.0.11 中移除。
  • log_error_filter_rules: 错误日志过滤规则。在 MySQL 8.0.4 中移除。
  • log_syslog: 是否将错误日志写入 syslog。在 MySQL 8.0.13 中移除。
  • log_syslog_facility: syslog 消息的设施。在 MySQL 8.0.13 中移除。
  • log_syslog_include_pid: 是否在 syslog 消息中包含服务器 PID。在 MySQL 8.0.13 中移除。
  • log_syslog_tag: syslog 消息中服务器标识符的标记。在 MySQL 8.0.13 中移除。
  • max_tmp_tables: 未使用。在 MySQL 8.0.3 中移除。
  • metadata_locks_cache_size: 元数据锁缓存的大小。在 MySQL 8.0.13 中已移除。
  • metadata_locks_hash_instances: 元数据锁哈希数。在 MySQL 8.0.13 中已移除。
  • multi_range_count: 在范围选择期间一次发送给表处理程序的最大范围数。在 MySQL 8.0.3 中已移除。
  • myisam_repair_threads: 修复 MyISAM 表时要使用的线程数。1 禁用并行修复。在 MySQL 8.0.30 中已移除。
  • old_passwords: 为 PASSWORD() 选择密码哈希方法。在 MySQL 8.0.11 中已移除。
  • partition: 启用(或禁用)分区支持。在 MySQL 8.0.0 中已移除。
  • query_cache_limit: 不缓存大于此大小的结果。在 MySQL 8.0.3 中已移除。
  • query_cache_min_res_unit: 为结果分配空间的最小单位大小(在写入所有结果数据后修剪最后一个单位)。在 MySQL 8.0.3 中已移除。
  • query_cache_size: 用于存储旧查询结果的内存分配。在 MySQL 8.0.3 中已移除。
  • query_cache_type: 查询缓存类型。在 MySQL 8.0.3 中已移除。
  • query_cache_wlock_invalidate: 在写入锁定时使查询缓存中的查询无效。在 MySQL 8.0.3 中已移除。
  • secure_auth: 禁止具有旧(4.1 之前)密码的帐户进行身份验证。在 MySQL 8.0.3 中已移除。
  • show_compatibility_56: 用于 SHOW STATUS/VARIABLES 的兼容性。在 MySQL 8.0.1 中已移除。
  • skip-partition: 不启用用户定义的分区。在 MySQL 8.0.0 中已移除。
  • sync_frm: 在创建时将 .frm 同步到磁盘。默认情况下启用。在 MySQL 8.0.0 中已移除。
  • temp-pool: 使用此选项会导致大多数创建的临时文件使用一组小的名称,而不是为每个新文件使用唯一名称。在 MySQL 8.0.1 中已移除。
  • time_format: TIME 格式(未使用)。在 MySQL 8.0.3 中已移除。
  • tx_isolation: 默认事务隔离级别。在 MySQL 8.0.3 中已移除。
  • tx_read_only: 默认事务访问模式。在 MySQL 8.0.3 中已移除。

1.5 如何报告错误或问题

原文:dev.mysql.com/doc/refman/8.0/en/bug-reports.html

在报告关于问题的错误之前,请尝试验证它是否是一个错误,并且尚未被报告过:

  • 首先在dev.mysql.com/doc/上搜索 MySQL 在线手册。我们会经常更新手册,以解决新发现的问题。此外,手册附带的发布说明可能特别有用,因为很可能新版本包含了解决你问题的方法。发布说明可以在手册给出的位置找到。
  • 如果对 SQL 语句出现解析错误,请仔细检查语法。如果你找不到任何问题,那么极有可能是你当前的 MySQL 服务器版本不支持你正在使用的语法。如果你正在使用当前版本且手册没有涵盖你正在使用的语法,那么 MySQL 服务器不支持你的语句。 如果手册涵盖了你正在使用的语法,但你使用的是旧版本的 MySQL 服务器,你应该查看 MySQL 更改历史,看看语法是何时实现的。在这种情况下,你可以选择升级到较新版本的 MySQL 服务器。
  • 对于一些常见问题的解决方案,请参见 Section B.3, “Problems and Common Errors”。
  • bugs.mysql.com/的错误数据库中搜索,看看该错误是否已被报告并修复。
  • 你也可以使用www.mysql.com/search/来搜索位于 MySQL 网站上的所有网页(包括手册)。

如果在手册、错误数据库或邮件列表存档中找不到答案,请咨询你当地的 MySQL 专家。如果你仍然找不到问题的答案,请使用以下报告错误的准则。

报告错误的常规方式是访问bugs.mysql.com/,这是我们错误数据库的地址。这个数据库是公开的,任何人都可以浏览和搜索。如果你登录系统,你可以输入新的报告。

bugs.mysql.com/的错误数据库中,对于给定版本已经修正的错误会在发布说明中有所记录。

如果你发现 MySQL 服务器中的安全漏洞,请立即通过电子邮件发送消息至<secalert_us@oracle.com>告知我们。例外:支持客户应将所有问题(包括安全漏洞)报告给 Oracle 支持团队,网址为support.oracle.com/

要与其他用户讨论问题,你可以使用MySQL 社区 Slack

撰写一个好的错误报告需要耐心,但第一次就做对可以为我们和您节省时间。一个好的错误报告,包含了错误的完整测试用例,使我们很有可能在下一个版本中修复错误。本节帮助您正确撰写报告,以便您不会浪费时间做一些可能对我们没有太大帮助或根本没有帮助的事情。请仔细阅读本节,并确保您的报告中包含了这里描述的所有信息。

最好在发布之前使用最新的生产或开发版本的 MySQL 服务器测试问题。任何人都应该能够通过在您的测试用例上使用mysql test < script_file或运行您在错误报告中包含的 shell 或 Perl 脚本来重现错误。我们能够重复的任何错误都有很高的机会在下一个 MySQL 版本中修复。

当错误报告中包含问题的良好描述时,这是最有帮助的。也就是说,给出导致问题的所有操作的良好示例,并详细描述问题本身。最好的报告是那些包含了展示如何重现错误或问题的完整示例的报告。请参阅第 7.9 节,“调试 MySQL”。

请记住,我们可以回应包含太多信息的报告,但无法回应包含太少信息的报告。人们经常省略事实,因为他们认为他们知道问题的原因,并假设一些细节并不重要。一个好的原则是,如果您对陈述某事感到犹豫,请陈述。在您的报告中写几行比等待更长时间以便我们要求您提供初始报告中缺少的信息更快且不麻烦。

在错误报告中最常见的错误是(a)没有包括您使用的 MySQL 发行版的版本号,以及(b)没有完全描述 MySQL 服务器安装在哪个平台上(包括平台类型和版本号)。这些是非常相关的信息,在 100 次中有 99 次,没有这些信息的错误报告是没有用的。我们经常收到类似的问题,“为什么这对我不起作用?”然后我们发现所请求的功能没有在那个 MySQL 版本中实现,或者报告中描述的错误已经在更新的 MySQL 版本中修复。错误通常是与平台相关的。在这种情况下,如果不知道操作系统和平台版本号,我们几乎不可能修复任何问题。

如果你从源代码编译 MySQL,请记得提供与问题相关的编译器信息。通常人们会在编译器中发现错误,并认为问题与 MySQL 相关。大多数编译器一直在不断发展,版本逐渐变得更好。为了确定你的问题是否取决于编译器,我们需要知道你使用的编译器是什么。请注意,每个编译问题都应视为错误并相应报告。

如果程序产生了错误消息,将消息包含在报告中非常重要。如果我们尝试从存档中搜索某些内容,最好是错误消息与程序产生的消息完全匹配。 (甚至要注意大小写。)最好将整个错误消息复制粘贴到报告中。永远不要试图从记忆中重现消息。

如果你在使用 Connector/ODBC(MyODBC)时遇到问题,请尝试生成一个跟踪文件并将其与报告一起发送。请参阅 如何报告 Connector/ODBC 问题或错误。

如果你的报告包含使用 mysql 命令行工具运行的测试用例的长查询输出行,你可以通过使用 --vertical 选项或 \G 语句终止符使输出更易读。本节后面的 EXPLAIN SELECT 示例演示了 \G 的使用。

请在你的报告中包含以下信息:

你正在使用的 MySQL 发行版的版本号(例如,MySQL 5.7.10)。你可以通过执行 mysqladmin version 来查看你正在运行的版本。mysqladmin 程序可以在你的 MySQL 安装目录下的 bin 目录中找到。

你遇到问题的计算机的制造商和型号。

操作系统的名称和版本。如果你使用 Windows,通常可以通过双击“我的电脑”图标并下拉“帮助/关于 Windows”菜单来获取名称和版本号。对于大多数类 Unix 操作系统,你可以通过执行命令 uname -a 来获取这些信息。

有时内存(实际和虚拟)的数量是相关的。如果有疑问,请包含这些值。

docs/INFO_BIN 文件的内容来自于你的 MySQL 安装。这个文件包含了关于 MySQL 配置和编译的信息。

如果你使用 MySQL 软件的源代码发行版,请包含你使用的编译器的名称和版本号。如果你有一个二进制发行版,请包含发行版名称。

如果问题发生在编译过程中,请包含确切的错误消息,以及出错代码周围的几行上下文,这些代码位于发生错误的文件中。

如果mysqld崩溃,您还应报告导致mysqld意外退出的语句。通常可以通过启用查询日志运行mysqld,然后在mysqld退出后查看日志来获取此信息。请参阅第 7.9 节“调试 MySQL”。

如果数据库表与问题有关,请在错误报告中包含SHOW CREATE TABLE *db_name*.*tbl_name*语句的输出。这是获取数据库中任何表定义的非常简单的方法。这些信息有助于我们创建与您经历的情况相匹配的情况。

发生问题时的 SQL 模式可能很重要,请报告sql_mode系统变量的值。对于存储过程、存储函数和触发器对象,相关的sql_mode值是创建对象时有效的值。对于存储过程或函数,SHOW CREATE PROCEDURESHOW CREATE FUNCTION语句显示相关的 SQL 模式,或者您可以查询INFORMATION_SCHEMA获取信息:

代码语言:javascript
复制
SELECT ROUTINE_SCHEMA, ROUTINE_NAME, SQL_MODE
FROM INFORMATION_SCHEMA.ROUTINES;

对于触发器,您可以使用以下语句:

代码语言:javascript
复制
SELECT EVENT_OBJECT_SCHEMA, EVENT_OBJECT_TABLE, TRIGGER_NAME, SQL_MODE
FROM INFORMATION_SCHEMA.TRIGGERS;

对于与性能相关的错误或SELECT语句的问题,您应该始终包含EXPLAIN SELECT ...的输出,以及SELECT语句产生的行数。您还应该包含每个涉及的表的SHOW CREATE TABLE *tbl_name*的输出。您提供的关于您情况的信息越多,别人就越有可能帮助您。

以下是一个非常好的错误报告示例。这些语句是使用mysql命令行工具运行的。请注意对于本来会提供非常长的输出行且难以阅读的语句,使用\G语句终止符。

代码语言:javascript
复制
mysql> SHOW VARIABLES;
mysql> SHOW COLUMNS FROM ...\G
       *<output from SHOW COLUMNS>*
mysql> EXPLAIN SELECT ...\G
       *<output from EXPLAIN>*
mysql> FLUSH STATUS;
mysql> SELECT ...;
       *<A short version of the output from SELECT,
       including the time taken to run the query>*
mysql> SHOW STATUS;
       *<output from SHOW STATUS>*

如果在运行mysqld时出现错误或问题,请尝试提供一个可重现异常的输入脚本。此脚本应包括任何必要的源文件。脚本能够更紧密地重现您的情况,效果就会更好。如果您能制作一个可重现的测试用例,应将其上传以附加到错误报告。

如果您无法提供脚本,至少应在报告中包含mysqladmin variables extended-status processlist的输出,以提供有关系统性能的一些信息。

如果您无法仅使用少量行生成测试用例,或者测试表太大而无法包含在错误报告中(超过 10 行),则应使用mysqldump转储您的表,并创建一个描述问题的README文件。使用targzipzip创建您文件的压缩存档。在bugs.mysql.com/为我们的错误数据库启动错误报告后,在错误报告中单击“文件”选项卡以获取有关将存档上传到错误数据库的说明。

如果您认为 MySQL 服务器从一个语句中产生了奇怪的结果,请不仅包括结果,还包括您认为结果应该是什么以及解释描述您观点基础的说明。

当您提供问题示例时,最好使用实际情况中存在的表名、变量名等,而不是想出新名称。问题可能与表名或变量名有关。这种情况可能很少,但安全起见总是好过后悔。毕竟,您提供一个使用实际情况的示例应该更容易,对我们来说也更好。如果您有不希望在错误报告中对其他人可见的数据,可以按照之前描述的方法使用“文件”选项卡上传它。如果信息真的是绝密的,甚至您也不想向我们展示,那就使用其他名称提供一个示例,但请将其视为最后选择。

尽可能包含给相关程序的所有选项。例如,指示您启动mysqld服务器时使用的选项,以及运行任何 MySQL 客户端程序时使用的选项。对于诸如mysqldmysql以及configure脚本等程序的选项通常是解决问题的关键,并且非常相关。包含它们从来不是一个坏主意。如果您的问题涉及使用 Perl 或 PHP 等语言编写的程序,请包括语言处理器的版本号,以及程序使用的任何模块的版本。例如,如果您有一个使用DBIDBD::mysql模块的 Perl 脚本,请包括 Perl、DBIDBD::mysql的版本号。

如果您的问题与权限系统有关,请包含mysqladmin reload的输出,以及尝试连接时收到的所有错误消息。在测试权限时,您应该执行mysqladmin reload version并尝试使用导致问题的程序进行连接。

如果您有一个用于修复错误的补丁,请包含它。但不要假设补丁是我们需要的全部,或者如果您没有提供一些必要信息,比如显示您的补丁修复的错误的测试用例。我们可能会发现您的补丁存在问题,或者我们可能根本无法理解它。如果是这样,我们无法使用它。

如果我们无法验证补丁的确切目的,我们将不使用它。测试用例在这里对我们有帮助。展示补丁处理可能发生的所有情况。如果我们发现边界情况(即使是罕见的情况)补丁无法工作,那么它可能是无用的。

猜测错误是什么,为什么会发生,或者它依赖于什么通常是错误的。即使 MySQL 团队也不能在使用调试器确定错误的真正原因之前猜测这些事情。

在您的错误报告中指出您已经检查了参考手册和邮件存档,以便其他人知道您已经尝试自己解决问题。

如果您的数据看起来损坏或者在访问特定表格时出现错误,请首先使用CHECK TABLE检查您的表格。如果该语句报告任何错误:

  • InnoDB 崩溃恢复机制在服务器被杀死后重新启动时处理清理工作,因此在典型操作中不需要“修复”表格。如果遇到InnoDB表格错误,请重新启动服务器并查看问题是否仍然存在,或者错误是否仅影响内存中的缓存数据。如果磁盘上的数据损坏,请考虑启用innodb_force_recovery选项重新启动,以便您可以转储受影响的表格。
  • 对于非事务性表格,请尝试使用REPAIR TABLEmyisamchk进行修复。参见第七章,MySQL 服务器管理

如果您正在运行 Windows,请使用SHOW VARIABLES LIKE 'lower_case_table_names'语句验证lower_case_table_names的值。此变量影响服务器处理数据库和表格名称的大小写。对于给定值的影响应如第 11.2.3 节,“标识符大小写敏感性”中描述的那样。

如果你经常遇到损坏的表格,你应该尝试找出这种情况发生的时间和原因。在这种情况下,MySQL 数据目录中的错误日志可能包含一些关于发生了什么的信息(这是带有.err后缀的文件)。请在您的错误报告中包含来自此文件的任何相关信息。通常情况下,如果没有被中断更新的情况,mysqld 永远不应该损坏表格。如果你能找到mysqld死亡的原因,那么我们就能更容易地为你提供解决问题的方法。参见 Section B.3.1, “How to Determine What Is Causing a Problem”。

如果可能的话,请下载并安装最新版本的 MySQL 服务器,并检查是否解决了你的问题。所有版本的 MySQL 软件都经过了彻底测试,应该可以正常工作。我们相信尽可能使一切向后兼容,你应该能够轻松切换 MySQL 版本。参见 Section 2.1.2, “Which MySQL Version and Distribution to Install”。

1.6 MySQL 标准兼容性

原文:dev.mysql.com/doc/refman/8.0/en/compatibility.html

1.6.1 MySQL 对标准 SQL 的扩展

1.6.2 MySQL 与标准 SQL 的差异

1.6.3 MySQL 如何处理约束

本节描述了 MySQL 与 ANSI/ISO SQL 标准的关系。MySQL Server 对 SQL 标准有许多扩展,在这里您可以找到它们是什么以及如何使���它们。您还可以找到有关 MySQL Server 缺失功能的信息,以及如何解决其中一些差异。

SQL 标准自 1986 年以来一直在不断发展,存在多个版本。在本手册中,“SQL-92” 指的是 1992 年发布的标准。“SQL:1999”、“SQL:2003”、“SQL:2008” 和 “SQL:2011” 分别指的是相应年份发布的标准版本,最后一个是最新版本。我们使用短语 “SQL 标准” 或 “标准 SQL” 来表示任何时候 SQL 标准的当前版本。

我们的产品的主要目标之一是继续努力遵守 SQL 标准,但不会牺牲速度或可靠性。如果这大大提高了 MySQL Server 对我们大部分用户群体的可用性,我们不会害怕添加 SQL 扩展或非 SQL 功能的支持。HANDLER 接口就是这种策略的一个例子。请参阅 第 15.2.5 节,“HANDLER 语句”。

我们继续支持事务性和非事务性数据库,以满足关键任务的 24/7 使用和大量 Web 或日志使用。

MySQL Server 最初设计用于在小型计算机系统上处理中等大小的数据库(10-100 百万行,或每个表约 100MB)。如今,MySQL Server 处理 TB 级别大小的数据库。

我们不针对实时支持,尽管 MySQL 复制功能提供了重要的功能。

MySQL 支持 ODBC 0 到 3.51 级别。

MySQL 支持使用 NDBCLUSTER 存储引擎进行高可用性数据库集群。请参阅 第二十五章,“MySQL NDB Cluster 8.0”。

我们实现了支持大部分 W3C XPath 标准的 XML 功能。请参阅 第 14.11 节,“XML 函数”。

MySQL 支持由 RFC 7159 定义的本机 JSON 数据类型,并基于 ECMAScript 标准(ECMA-262)。请参阅 第 13.5 节,“JSON 数据类型”。MySQL 还实现了 SQL:2016 标准的一个预发布草案中指定的 SQL/JSON 函数子集;更多信息请参阅 第 14.17 节,“JSON 函数”。

选择 SQL 模式

MySQL 服务器可以在不同的 SQL 模式下运行,并且可以根据 sql_mode 系统变量的值为不同的客户端应用这些模式。数据库管理员可以将全局 SQL 模式设置为符合站点服务器操作要求的模式,每个应用程序可以将其会话 SQL 模式设置为其自身的要求。

模式影响 MySQL 支持的 SQL 语法和执行的数据验证检查。这使得在不同环境中使用 MySQL 以及与其他数据库服务器一起使用 MySQL 更容易。

有关设置 SQL 模式的更多信息,请参阅 Section 7.1.11, “Server SQL Modes”。

在 ANSI 模式下运行 MySQL

要在 ANSI 模式下运行 MySQL 服务器,请使用 --ansi 选项启动 mysqld。在 ANSI 模式下运行服务器与以下选项启动它相同:

代码语言:javascript
复制
--transaction-isolation=SERIALIZABLE --sql-mode=ANSI

要在运行时实现相同的效果,请执行以下两个语句:

代码语言:javascript
复制
SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET GLOBAL sql_mode = 'ANSI';

您可以看到将 sql_mode 系统变量设置为 'ANSI' 会启用所有与 ANSI 模式相关的 SQL 模式选项,如下所示:

代码语言:javascript
复制
mysql> SET GLOBAL sql_mode='ANSI';
mysql> SELECT @@GLOBAL.sql_mode;
        -> 'REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI'

使用 --ansi 在 ANSI 模式下运行服务器与将 SQL 模式设置为 'ANSI' 不完全相同,因为 --ansi 选项还设置了事务隔离级别。

请参阅 Section 7.1.7, “Server Command Options”。

1.6.1 MySQL 对标准 SQL 的扩展

原文:dev.mysql.com/doc/refman/8.0/en/extensions-to-ansi.html

MySQL 服务器支持一些其他 SQL DBMS 中不太可能找到的扩展。请注意,如果您使用它们,您的代码很可能无法在其他 SQL 服务器上移植。在某些情况下,您可以编写包含 MySQL 扩展的代码,但仍然是可移植的,方法是使用以下形式的注释:

代码语言:javascript
复制
/*! *MySQL-specific code* */

在这种情况下,MySQL 服务器会解析并执行注释中的代码,就像执行任何其他 SQL 语句一样,但其他 SQL 服务器应该忽略这些扩展。例如,MySQL 服务器会识别以下语句中的STRAIGHT_JOIN关键字,但其他服务器不应该:

代码语言:javascript
复制
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...

如果在!字符后添加版本号,则仅当 MySQL 版本大于或等于指定版本号时才执行注释中的语法。以下注释中的KEY_BLOCK_SIZE子句仅在 MySQL 5.1.10 或更高版本的服务器上执行:

代码语言:javascript
复制
CREATE TABLE t1(a INT, KEY (a)) /*!50110 KEY_BLOCK_SIZE=1024 */;

以下描述列出了按类别组织的 MySQL 扩展。

数据在磁盘上的组织

MySQL 服务器将每个数据库映射到 MySQL 数据目录下的一个目录,并将数据库中的表映射到数据库目录中的文件名。因此,在具有区分大小写文件名的操作系统上(例如大多数 Unix 系统),MySQL 服务器中的数据库和表名称是区分大小写的。请参阅 Section 11.2.3, “Identifier Case Sensitivity”。

通用语言语法

  • 默认情况下,字符串可以用"'括起来。如果启用了ANSI_QUOTES SQL 模式,则字符串只能用'括起来,服务器会将用"括起来的字符串解释为标识符。
  • \是字符串中的转义字符。
  • 在 SQL 语句中,您可以使用*db_name.tbl_name*语法访问不同数据库中的表。一些 SQL 服务器提供相同的功能,但称其为User space。MySQL 服务器不支持像这样使用表空间的语句:CREATE TABLE ralph.my_table ... IN my_tablespace

SQL 语句语法

  • ANALYZE TABLECHECK TABLEOPTIMIZE TABLEREPAIR TABLE语句。
  • CREATE DATABASEDROP DATABASEALTER DATABASE语句。参见第 15.1.12 节,“CREATE DATABASE Statement”,第 15.1.24 节,“DROP DATABASE Statement”和第 15.1.2 节,“ALTER DATABASE Statement”。
  • DO语句。
  • EXPLAIN SELECT以获取查询优化器如何处理表格的描述。
  • FLUSHRESET语句。
  • SET语句。参见第 15.7.6.1 节,“SET Syntax for Variable Assignment”。
  • SHOW语句。参见第 15.7.7 节,“SHOW Statements”。许多特定于 MySQL 的SHOW语句产生的信息可以通过使用SELECT查询INFORMATION_SCHEMA来更标准地获取。参见第二十八章,“INFORMATION_SCHEMA Tables”。
  • 使用LOAD DATA语句。在许多情况下,此语法与 Oracle 的LOAD DATA兼容。参见第 15.2.9 节,“LOAD DATA Statement”。
  • 使用RENAME TABLE语句。参见第 15.1.36 节,“RENAME TABLE Statement”。
  • 使用REPLACE代替DELETEINSERT。参见第 15.2.12 节,“REPLACE Statement”。
  • ALTER TABLE语句中使用CHANGE *col_name*DROP *col_name*,或DROP INDEXIGNORERENAME。在ALTER TABLE语句中使用多个ADDALTERDROPCHANGE子句。参见第 15.1.9 节,“ALTER TABLE Statement”。
  • CREATE TABLE 语句中使用索引名称、列前缀上的索引,以及使用 INDEXKEY。参见 第 15.1.20 节,“CREATE TABLE Statement”。
  • CREATE TABLE 中使用 TEMPORARYIF NOT EXISTS
  • DROP TABLEDROP DATABASE 中使用 IF EXISTS
  • 使用单个 DROP TABLE 语句删除多个表的能力。
  • UPDATEDELETE 语句的 ORDER BYLIMIT 子句。
  • INSERT INTO *tbl_name* SET *col_name* = ... 语法。
  • INSERTREPLACE 语句的 DELAYED 子句。
  • INSERTREPLACEDELETEUPDATE 语句的 LOW_PRIORITY 子句。
  • SELECT 语句中使用 INTO OUTFILEINTO DUMPFILE。参见 第 15.2.13 节,“SELECT Statement”。
  • SELECT 语句中的选项,如 STRAIGHT_JOINSQL_SMALL_RESULT
  • GROUP BY 子句中不需要命名所有选定的列。这对于一些非常特定但相当常见的查询可以提供更好的性能。参见 第 14.19 节,“聚合函数”。
  • 您可以在 GROUP BY 中指定 ASCDESC,而不仅仅是在 ORDER BY 中。
  • 使用 := 赋值运算符在语句中设置变量的能力��参见 第 11.4 节,“用户定义变量”。

数据类型

  • MEDIUMINT - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT")、SETENUM 数据类型,以及各种 BLOBTEXT 数据类型。
  • AUTO_INCREMENTBINARYNULLUNSIGNEDZEROFILL 数据类型属性。

函数和运算符

为了方便从其他 SQL 环境迁移的用户,MySQL Server 支持许多函数的别名。例如,所有字符串函数都支持标准 SQL 语法和 ODBC 语法。

MySQL Server 理解 ||&& 运算符表示逻辑 OR 和 AND,就像 C 编程语言中一样。在 MySQL Server 中,||OR 是同义词,&&AND 也是同义词。由于这种良好的语法,MySQL Server 不支持标准 SQL 中用于字符串连接的 || 运算符;请使用 CONCAT()。由于 CONCAT() 接受任意数量的参数,因此很容易将 || 运算符的用法转换为 MySQL Server。

value_list 具有多个元素的情况下使用 COUNT(DISTINCT *value_list*)

字符串比较默认不区分大小写,排序顺序由当前字符集的排序规则决定,默认为 utf8mb4。要执行区分大小写的比较,应该使用 BINARY 属性声明列或使用 BINARY 转换,这将导致使用基��字符代码值而不是词法排序进行比较。

% 运算符是 MOD() 的同义词。也就是说,*N* % *M* 等同于 MOD(*N*,*M*)% 支持 C 程序员和与 PostgreSQL 的兼容性。

=, <>, <=, <, >=, >, <<, >>, <=>, AND, OR, 或 LIKE 运算符可以在SELECT语句中的输出列列表(FROM的左侧)中使用。例如:

代码语言:javascript
复制
mysql> SELECT col1=1 AND col2=2 FROM my_table;

LAST_INSERT_ID() 函数返回最近的 AUTO_INCREMENT 值。参见 Section 14.15, “Information Functions”。

在数字值上允许使用LIKE

REGEXPNOT REGEXP 扩展正则表达式运算符。

CONCAT()CHAR() 函数的一个参数或两个以上参数。(在 MySQL Server 中,这些函数可以接受可变数量的参数。)

BIT_COUNT()CASEELT()FROM_DAYS()FORMAT()IF()MD5()PERIOD_ADD()PERIOD_DIFF()TO_DAYS()WEEKDAY() 函数。

使用 TRIM() 函数修剪子字符串。标准 SQL 仅支持删除单个字符。

GROUP BY 函数 STD()BIT_OR()BIT_AND()BIT_XOR()GROUP_CONCAT()。参见 第 14.19 节,“聚合函数”。

1.6.2 MySQL 与标准 SQL 的差异

原文:dev.mysql.com/doc/refman/8.0/en/differences-from-ansi.html

1.6.2.1 SELECT INTO TABLE 差异

1.6.2.2 UPDATE 差异

1.6.2.3 外键约束的差异

1.6.2.4 ‘–’ 作为注释的起始

我们努力使 MySQL Server 遵循 ANSI SQL 标准和 ODBC SQL 标准,但在某些情况下,MySQL Server 的操作方式有所不同:

  • MySQL 和标准 SQL 权限系统之间存在几个不同之处。例如,在 MySQL 中,当你删除一个表时,该表的权限不会自动被撤销。你必须明确地发出一个REVOKE语句来撤销表的权限。更多信息,请参见 Section 15.7.1.8, “REVOKE Statement”。
  • CAST()函数不支持转换为REAL - FLOAT, DOUBLE")或BIGINT - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT")。请参见 Section 14.10, “Cast Functions and Operators”。

原文:dev.mysql.com/doc/refman/8.0/en/ansi-diff-select-into-table.html

1.6.2.1 SELECT INTO TABLE 差异

MySQL Server 不支持SELECT ... INTO TABLE Sybase SQL 扩展。相反,MySQL Server 支持标准 SQL 语法INSERT INTO ... SELECT,基本上是相同的事情。参见 Section 15.2.7.1, “INSERT … SELECT Statement”。例如:

代码语言:javascript
复制
INSERT INTO tbl_temp2 (fld_id)
    SELECT tbl_temp1.fld_order_id
    FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;

或者,您可以使用SELECT ... INTO OUTFILECREATE TABLE ... SELECT

您可以使用带有用户定义变量的SELECT ... INTO。相同的语法也可以在使用游标和本地变量的存储过程中使用。参见 Section 15.2.13.1, “SELECT … INTO Statement”。

原文:dev.mysql.com/doc/refman/8.0/en/ansi-diff-update.html

1.6.2.2 UPDATE 差异

如果在表达式中访问要更新的表中的列,UPDATE 会使用列的当前值。以下语句中的第二个赋值将col2设置为当前(更新后)的col1值,而不是原始的col1值。结果是col1col2具有相同的值。这种行为与标准 SQL 不同。

代码语言:javascript
复制
UPDATE t1 SET col1 = col1 + 1, col2 = col1;

原文:dev.mysql.com/doc/refman/8.0/en/ansi-diff-foreign-keys.html

1.6.2.3 外键约束的差异

MySQL 对外键约束的实现与 SQL 标准在以下关键方面有所不同:

如果父表中有多行具有相同的引用键值,InnoDB会像其他具有相同键值的父行不存在一样执行外键检查。例如,如果定义了RESTRICT类型的约束,并且有一个子行具有多个父行,InnoDB不允许删除任何父行。

如果ON UPDATE CASCADEON UPDATE SET NULL递归更新相同表,它会像RESTRICT一样操作。这意味着不能使用自引用的ON UPDATE CASCADEON UPDATE SET NULL操作。这是为了防止由级联更新导致的无限循环。另一方面,自引用的ON DELETE SET NULL是可能的,就像自引用的ON DELETE CASCADE一样。级联操作不能嵌套超过 15 层。

在插入、删除或更新多行的 SQL 语句中,外键约束(如唯一约束)会逐行检查。在执行外键检查时,InnoDB会在必须检查的子记录或父记录上设置共享的行级锁。MySQL 会立即检查外键约束;检查不会延迟到事务提交。根据 SQL 标准,默认行为应该是延迟检查。也就是说,只有在整个 SQL 语句被处理完之后才会检查约束。这意味着不可能使用外键删除引用自身的行。

没有存储引擎,包括InnoDB,识别或执行引用完整性约束定义中使用的MATCH子句。使用显式的MATCH子句不会产生指定的效果,并且会导致ON DELETEON UPDATE子句被忽略。应避免指定MATCH

SQL 标准中的MATCH子句控制如何处理复合(多列)外键中的NULL值,当与引用表中的主键进行比较时。MySQL 基本上实现了MATCH SIMPLE定义的语义,允许外键全部或部分为NULL。在这种情况下,包含这种外键的(子表)行可以被插入,即使它与引用(父表)中的任何行都不匹配。(可以使用触发器实现其他语义。)

出于性能原因,MySQL 要求引用的列被索引。然而,MySQL 不强制要求引用的列是UNIQUE或声明为NOT NULL

引用非UNIQUE键的FOREIGN KEY约束不是标准 SQL,而是InnoDB的扩展。另一方面,NDB存储引擎要求在任何作为外键引用的列上显式唯一键(或主键)。

对于包含非唯一键或包含NULL值的外键引用的处理对于诸如UPDATEDELETE CASCADE等操作并不明确定义。建议您使用仅引用UNIQUE(包括PRIMARY)和NOT NULL键的外键。

对于不支持外键的存储引擎(如MyISAM),MySQL 服务器解析并忽略外键规范。

MySQL 解析但忽略“内联REFERENCES规范”(如 SQL 标准中定义的),其中引用是作为列规范的一部分定义的。MySQL 仅在作为单独的FOREIGN KEY规范的一部分指定时才接受REFERENCES子句。

定义一个列使用REFERENCES *tbl_name*(col_name)子句实际上没有任何效果,仅仅作为一个备忘录或注释,告诉您当前正在定义的列意图引用另一个表中的列。在使用这种语法时,重要的是要意识到:

  • MySQL 不执行任何检查以确保col_name实际存在于tbl_name中(甚至tbl_name本身是否存在)。
  • MySQL 不对tbl_name执行任何操作,例如根据您定义的表中的行所采取的操作删除行;换句话说,这种语法根本不引起任何ON DELETEON UPDATE行为。(尽管您可以将ON DELETEON UPDATE子句编写为REFERENCES子句的一部分,但它也会被忽略。)
  • 这种语法创建了一个;它创建任何索引或键。

您可以将创建的列用作连接列,如下所示:

代码语言:javascript
复制
CREATE TABLE person (
    id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    name CHAR(60) NOT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE shirt (
    id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    style ENUM('t-shirt', 'polo', 'dress') NOT NULL,
    color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL,
    owner SMALLINT UNSIGNED NOT NULL REFERENCES person(id),
    PRIMARY KEY (id)
);

INSERT INTO person VALUES (NULL, 'Antonio Paz');

SELECT @last := LAST_INSERT_ID();

INSERT INTO shirt VALUES
(NULL, 'polo', 'blue', @last),
(NULL, 'dress', 'white', @last),
(NULL, 't-shirt', 'blue', @last);

INSERT INTO person VALUES (NULL, 'Lilliana Angelovska');

SELECT @last := LAST_INSERT_ID();

INSERT INTO shirt VALUES
(NULL, 'dress', 'orange', @last),
(NULL, 'polo', 'red', @last),
(NULL, 'dress', 'blue', @last),
(NULL, 't-shirt', 'white', @last);

SELECT * FROM person;
+----+---------------------+
| id | name                |
+----+---------------------+
|  1 | Antonio Paz         |
|  2 | Lilliana Angelovska |
+----+---------------------+

SELECT * FROM shirt;
+----+---------+--------+-------+
| id | style   | color  | owner |
+----+---------+--------+-------+
|  1 | polo    | blue   |     1 |
|  2 | dress   | white  |     1 |
|  3 | t-shirt | blue   |     1 |
|  4 | dress   | orange |     2 |
|  5 | polo    | red    |     2 |
|  6 | dress   | blue   |     2 |
|  7 | t-shirt | white  |     2 |
+----+---------+--------+-------+

SELECT s.* FROM person p INNER JOIN shirt s
   ON s.owner = p.id
 WHERE p.name LIKE 'Lilliana%'
   AND s.color <> 'white';

+----+-------+--------+-------+
| id | style | color  | owner |
+----+-------+--------+-------+
|  4 | dress | orange |     2 |
|  5 | polo  | red    |     2 |
|  6 | dress | blue   |     2 |
+----+-------+--------+-------+

当以这种方式使用时,REFERENCES子句不会显示在SHOW CREATE TABLEDESCRIBE的输出中:

代码语言:javascript
复制
SHOW CREATE TABLE shirt\G
*************************** 1\. row ***************************
Table: shirt
Create Table: CREATE TABLE `shirt` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`style` enum('t-shirt','polo','dress') NOT NULL,
`color` enum('red','blue','orange','white','black') NOT NULL,
`owner` smallint(5) unsigned NOT NULL,
PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

有关外键约束的信息,请参阅第 15.1.20.5 节,“FOREIGN KEY Constraints”。

原文:dev.mysql.com/doc/refman/8.0/en/ansi-diff-comments.html

1.6.2.4 '--' 作为注释的起始

标准 SQL 使用 C 语法/* 这是一个注释 */作为注释,MySQL 服务器也支持这种语法。MySQL 还支持这种语法的扩展,允许将 MySQL 特定的 SQL 嵌入到注释中;参见第 11.7 节,“注释”。

MySQL 服务器还使用#作为起始注释字符。这是非标准的。

标准 SQL 还使用“--”作为起始注释序列。MySQL 服务器支持--注释风格的变体;--起始注释序列被接受为这样,但必须跟随一个空格字符,如空格或换行符。这个空格旨在防止生成的 SQL 查询出现问题,使用以下结构,更新余额以反映一个费用:

代码语言:javascript
复制
UPDATE account SET balance=balance-charge
WHERE account_id=user_id

charge为负值时会发生什么,比如-1,这可能是在向账户存入金额时的情况。在这种情况下,生成的语句如下:

代码语言:javascript
复制
UPDATE account SET balance=balance--1
WHERE account_id=5752;

balance--1是有效的标准 SQL,但--被解释为注释的起始,并且表达式的一部分被丢弃。结果是语句的含义完全不同于预期:

代码语言:javascript
复制
UPDATE account SET balance=balance
WHERE account_id=5752;

这个语句根本不会改变值。为了防止这种情况发生,MySQL 要求在--后面跟随一个空格字符,以便在 MySQL 服务器中被识别为起始注释序列,这样像balance--1这样的表达式总是安全的使用。

1.6.3 MySQL 如何处理约束

原文:dev.mysql.com/doc/refman/8.0/en/constraints.html

1.6.3.1 主键和唯一索引约束

1.6.3.2 外键约束

1.6.3.3 对无效数据强制执行的约束

1.6.3.4 枚举和集合约束

MySQL 允许您同时使用允许回滚的事务表和不允许回滚的非事务表。因此,在 MySQL 中,约束处理与其他数据库管理系统有些不同。当在非事务表中插入或更新了大量行且发生错误时,无法回滚更改时,我们必须处理这种情况。

基本理念是,MySQL 服务器尝试为解析要执行的语句中可以检测到的任何内容生成错误,并尝试从执行语句时发生的任何错误中恢复。在大多数情况下,我们会这样做,但还不是全部。

当 MySQL 发生错误时,其选项包括停止语句执行或尽可能从问题中恢复并继续。默认情况下,服务器遵循后一种方式。这意味着,例如,服务器可能会将无效值强制转换为最接近的有效值。

有几个 SQL 模式选项可用于更好地控制处理不良数据值的方式以及在发生错误时是否继续语句执行或中止。使用这些选项,您可以配置 MySQL 服务器以更传统的方式运行,类似于其他拒绝不当输入的数据库管理系统。SQL 模式可以在服务器启动时全局设置以影响所有客户端。各个客户端可以在运行时设置 SQL 模式,从而使每个客户端选择最适合其需求的行为。请参阅 第 7.1.11 节,“服务器 SQL 模式”。

以下各节描述了 MySQL 服务器如何处理不同类型的约束。

原文:dev.mysql.com/doc/refman/8.0/en/constraint-primary-key.html

1.6.3.1 主键和唯一索引约束

通常,数据更改语句(如 INSERTUPDATE)可能违反主键、唯一键或外键约束而导致错误。如果你使用事务性存储引擎如 InnoDB,MySQL 会自动回滚该语句。如果你使用非事务性存储引擎,MySQL 会在发生错误的行处停止处理该语句,并留下任何未处理的行。

MySQL 支持 IGNORE 关键字用于 INSERTUPDATE 等语句。如果使用它,MySQL 会忽略主键或唯一键违规,并继续处理下一行。请参阅你正在使用的语句的部分(15.2.7 “INSERT Statement”,15.2.17 “UPDATE Statement” 等)。

你可以使用 mysql_info() C API 函数获取实际插入或更新的行数信息。你也可以使用 SHOW WARNINGS 语句。参见 mysql_info(),以及 15.7.7.42 “SHOW WARNINGS Statement”。

InnoDBNDB 表支持外键。参见 1.6.3.2 “外键约束”。

原文:dev.mysql.com/doc/refman/8.0/en/constraint-foreign-key.html

1.6.3.2 外键约束

外键允许您在表之间交叉引用相关数据,而外键约束有助于保持这些分散的数据一致。

MySQL 支持在CREATE TABLEALTER TABLE语句中的ON UPDATEON DELETE外键引用。可用的引用操作包括RESTRICTCASCADESET NULLNO ACTION(默认)。

MySQL 服务器也支持SET DEFAULT,但当前被InnoDB拒绝为无效。由于 MySQL 不支持延迟约束检查,NO ACTION被视为RESTRICT。有关 MySQL 支持的外键的确切语法,请参见 Section 15.1.20.5, “FOREIGN KEY Constraints”。

MATCH FULLMATCH PARTIALMATCH SIMPLE是允许的,但应避免使用,因为它们会导致 MySQL 服务器忽略同一语句中使用的任何ON DELETEON UPDATE子句。MATCH选项在 MySQL 中没有其他效果,实际上全天候强制执行MATCH SIMPLE语义。

MySQL 要求外键列被索引;如果您创建了一个具有外键约束但在给定列上没有索引的表,将会创建一个索引。

你可以从信息模式KEY_COLUMN_USAGE表中获取有关外键的信息。这里展示了针对该表的查询示例:

代码语言:javascript
复制
mysql> SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME
     > FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
     > WHERE REFERENCED_TABLE_SCHEMA IS NOT NULL;
+--------------+---------------+-------------+-----------------+
| TABLE_SCHEMA | TABLE_NAME    | COLUMN_NAME | CONSTRAINT_NAME |
+--------------+---------------+-------------+-----------------+
| fk1          | myuser        | myuser_id   | f               |
| fk1          | product_order | customer_id | f2              |
| fk1          | product_order | product_id  | f1              |
+--------------+---------------+-------------+-----------------+
3 rows in set (0.01 sec)

有关InnoDB表上外键的信息也可以在INFORMATION_SCHEMA数据库中的INNODB_FOREIGNINNODB_FOREIGN_COLS表中找到。

InnoDBNDB表支持外键。

原文:dev.mysql.com/doc/refman/8.0/en/constraint-invalid-data.html

1.6.3.3 对无效数据的强制约束

默认情况下,MySQL 8.0 会拒绝无效或不当的数据值,并中止出现这些值的语句。可以通过禁用严格的 SQL 模式(参见第 7.1.11 节,“服务器 SQL 模式”)来改变这种行为,使服务器将其强制转换为有效值以便进行数据输入,但这并不推荐。

旧版本的 MySQL 默认采用宽容的行为;有关此行为的描述,请参阅对无效数据的约束。

原文:dev.mysql.com/doc/refman/8.0/en/constraint-enum.html

1.6.3.4 ENUM 和 SET 约束

ENUMSET列提供了一种有效的方式来定义只能包含给定一组值的列。请参阅第 13.3.5 节,“ENUM 类型”和第 13.3.6 节,“SET 类型”。

除非禁用严格模式(不建议,但请参阅第 7.1.11 节,“服务器 SQL 模式”),否则ENUMSET列的定义将作为对输入到列中的值的约束。对于不满足这些条件的值会发生错误:

  • ENUM值必须是列定义中列出的值之一,或其内部数值等效项。该值不能是错误值(即0或空字符串)。对于定义为ENUM('a','b','c')的列,诸如'''d''ax'之类的值是无效的并将被拒绝。
  • SET值必须是空字符串或仅由列定义中以逗号分隔的值组成。对于定义为SET('a','b','c')的列,诸如'd''a,b,c,d'之类的值是无效的并将被拒绝。

如果在严格模式下使用INSERT IGNOREUPDATE IGNORE,可以抑制无效值的错误。在这种情况下,将生成警告而不是错误。对于ENUM,该值将作为错误成员(0)插入。对于SET,该值将按原样插入,除非删除任何无效的子字符串。例如,'a,x,b,y'的结果是'a,b'

第二章 安装 MySQL

原文:dev.mysql.com/doc/refman/8.0/en/installing.html

目录

2.1 一般安装指导

2.1.1 支持的平台

2.1.2 安装哪个 MySQL 版本和发行版

2.1.3 如何获取 MySQL

2.1.4 使用 MD5 校验和或 GnuPG 验证软件包完整性

2.1.5 安装布局

2.1.6 编译器特定的构建特性

2.2 在 Unix/Linux 上使用通用二进制文件安装 MySQL

2.3 在 Microsoft Windows 上安装 MySQL

2.3.1 Microsoft Windows 上的 MySQL 安装布局

2.3.2 选择安装包

2.3.3 Windows 的 MySQL 安装程序

2.3.4 使用 noinstall ZIP 存档在 Microsoft Windows 上安装 MySQL

2.3.5 解决 Microsoft Windows 上 MySQL 服务器安装问题

2.3.6 Windows 安装后的程序

2.3.7 Windows 平台限制

2.4 在 macOS 上安装 MySQL

2.4.1 在 macOS 上安装 MySQL 的一般注意事项

2.4.2 使用本地软件包在 macOS 上安装 MySQL

2.4.3 安装和使用 MySQL 启动守护程序

2.4.4 安装和使用 MySQL 首选项窗格

2.5 在 Linux 上安装 MySQL

2.5.1 在 Linux 上使用 MySQL Yum 仓库安装 MySQL

2.5.2 在 Linux 上使用 MySQL APT 仓库安装 MySQL

2.5.3 在 Linux 上使用 MySQL SLES 仓库安装 MySQL

2.5.4 使用 Oracle 的 RPM 软件包在 Linux 上安装 MySQL

2.5.5 在 Linux 上使用 Oracle Debian 软件包安装 MySQL

2.5.6 使用 Docker 容器在 Linux 上部署 MySQL

2.5.7 从本地软件仓库在 Linux 上安装 MySQL

2.5.8 使用 Juju 在 Linux 上安装 MySQL

2.5.9 使用 systemd 管理 MySQL 服务器

2.6 使用 Unbreakable Linux Network (ULN) 安装 MySQL

2.7 在 Solaris 上安装 MySQL

2.7.1 使用 Solaris PKG 在 Solaris 上安装 MySQL

2.8 从源代码安装 MySQL

2.8.1 源码安装方法

2.8.2 源码安装先决条件

2.8.3 源码安装 MySQL 布局

2.8.4 使用标准源码分发安装 MySQL

2.8.5 使用开发源树安装 MySQL

2.8.6 配置 SSL 库支持

2.8.7 MySQL 源码配置选项

2.8.8 处理编译 MySQL 时的问题

2.8.9 MySQL 配置和第三方工具

2.8.10 生成 MySQL Doxygen 文档内容

2.9 安装后设置和测试

2.9.1 初始化数据目录

2.9.2 启动服务器

2.9.3 测试服务器

2.9.4 保护初始 MySQL 帐户

2.9.5 自动启动和停止 MySQL

2.10 Perl 安装注意事项

2.10.1 在 Unix 上安装 Perl

2.10.2 在 Windows 上安装 ActiveState Perl

2.10.3 使用 Perl DBI/DBD 接口时的问题

本章描述了如何获取和安装 MySQL。以下是程序概要,后续章节提供了详细信息。如果您计划将现有版本的 MySQL 升级到新版本而不是首次安装 MySQL,请参阅第三章,升级 MySQL,了解升级过程和升级前应考虑的问题。

如果您有兴趣从另一个数据库系统迁移到 MySQL,请参阅附录 A.8,“MySQL 8.0 FAQ:迁移”,其中包含有关迁移问题的一些常见问题的答案。

通常,MySQL 的安装遵循以下步骤:

  1. 确定 MySQL 是否在您的平台上运行并受支持。 请注意,并非所有平台都适合运行 MySQL,并且并非所有已知可运行 MySQL 的平台都得到 Oracle 公司的官方支持。有关官方支持的平台信息,请参阅 MySQL 网站上的www.mysql.com/support/supportedplatforms/database.html
  2. 选择要安装的发行版。 MySQL 提供了多个版本,大多数版本都有几种分发格式可供选择。您可以选择包含二进制(预编译)程序或源代码的预打包分发。如果有疑问,请使用二进制分发。Oracle 还为那些想要查看最新开发并测试新代码的人提供了访问 MySQL 源代码的途径。要确定应使用哪个版本和分发类型,请参阅第 2.1.2 节,“应安装哪个 MySQL 版本和分发”。
  3. 选择要安装的跟踪。 MySQL 提供了一个修复错误跟踪(例如 MySQL 8.0),以及一个创新跟踪(今天是 MySQL 8.3),每个跟踪都针对不同的用例。这两个跟踪都被认为是可用于生产环境的,并包括错误修复,而创新发布还包括新功能和可能的修改行为。 修复错误跟踪升级包括点版本,例如 MySQL 8.0.x 升级到 8.0.y,而创新跟踪发布通常只有次要版本,例如 MySQL 8.3.0 升级到 9.0.0。然而,创新跟踪确实偶尔有点版本发布。
  4. 下载要安装的分发。 有关说明,请参阅第 2.1.3 节,“如何获取 MySQL”。要验证分发的完整性,请使用第 2.1.4 节,“使用 MD5 校验和或 GnuPG 验证软件包完整性”中的说明。
  5. 安装分发。 要从二进制分发安装 MySQL,请使用第 2.2 节,“在 Unix/Linux 上使用通用二进制文件安装 MySQL”中的说明。或者,使用安全部署指南,该指南提供了部署 MySQL Enterprise Edition Server 通用二进制分发的程序,具有管理 MySQL 安装安全性功能的特性。 要从源代码分发或当前开发源代码树安装 MySQL,请使用第 2.8 节,“从源代码安装 MySQL”中的说明。
  6. 执行任何必要的安装后设置。 安装 MySQL 后,请参阅第 2.9 节,“安装后设置和测试”,了解确保 MySQL 服务器正常工作的信息。还请参考第 2.9.4 节,“保护初始 MySQL 帐户”中提供的信息。本节描述了如何保护初始的 MySQL root 用户帐户,该帐户在分配密码之前没有密码。无论您是使用二进制还是源代码分发安装 MySQL,本节都适用。
  7. 如果要运行 MySQL 基准测试脚本,则必须提供 Perl 支持。请参阅第 2.10 节,“Perl 安装说明”。

提供了在不同平台和环境上安装 MySQL 的说明,具体请参考各个平台:

  • Unix,Linux 有关在大多数 Linux 和 Unix 平台上使用通用二进制文件(例如.tar.gz包)安装 MySQL 的说明,请参阅第 2.2 节,“在 Unix/Linux 上使用通用二进制文件安装 MySQL”。 有关从源代码分发或源代码存储库构建 MySQL 的信息,请参阅第 2.8 节,“从源代码安装 MySQL”。 有关在特定平台上安装、配置和从源代码构建的帮助,请参阅相应平台部分:
    • Linux,包括特定发行版的安装方法,请参阅第 2.5 节,“在 Linux 上安装 MySQL”。
    • IBM AIX,请参阅第 2.7 节,“在 Solaris 上安装 MySQL”。
  • Microsoft Windows 有关在 Microsoft Windows 上安装 MySQL 的说明,可以使用 MySQL Installer 或 Zipped 二进制文件,请参阅第 2.3 节,“在 Microsoft Windows 上安装 MySQL”。 有关使用 Microsoft Visual Studio 从源代码构建 MySQL 的详细说明,请参阅第 2.8 节,“从源代码安装 MySQL”。
  • macOS 有关在 macOS 上安装 MySQL,包括使用二进制包和本机 PKG 格式,请参阅第 2.4 节,“在 macOS 上安装 MySQL”。 有关如何利用 macOS Launch Daemon 自动启动和停止 MySQL 的信息,请参阅第 2.4.3 节,“安装和使用 MySQL Launch Daemon”。 有关 MySQL Preference Pane 的信息,请参阅第 2.4.4 节,“安装和使用 MySQL Preference Pane”。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.4 MySQL 8.0 中新增、弃用或删除的服务器和状态变量和选项
    • MySQL 8.0 中新增的选项和变量
      • MySQL 8.0 中已弃用的选项和变量
        • 在 MySQL 8.0 中已移除的选项和变量
        • 1.5 如何报告错误或问题
        • 1.6 MySQL 标准兼容性
          • 选择 SQL 模式
            • 在 ANSI 模式下运行 MySQL
            • 1.6.1 MySQL 对标准 SQL 的扩展
            • 1.6.2 MySQL 与标准 SQL 的差异
            • 1.6.3 MySQL 如何处理约束
            • 第二章 安装 MySQL
            相关产品与服务
            云数据库 MySQL
            腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档