1章一般信息

目录

1.1关于本手册
1.2拼写和语法约定
1.3概述的MySQL数据库管理系统
1.3.1什么是MySQL?
1.3.2 MySQL的主要特点
1.3.3历史MySQL
1.4什么是新的MySQL 8
1.5服务器和状态变量和选项添加或删除时,使用在
1.6 MySQL的信息来源
1.6.1 MySQL网站
1.6.2 MySQL邮件列表
在MySQL论坛1.6.3 MySQL社区的支持
在互联网中继聊天(IRC)1.6.4 MySQL社区的支持
1.6.5 MySQL企业
1.7如何报告错误或问题
1.8 MySQL标准
1.8.1 MySQL扩展标准的SQL
1.8.2 MySQL区别于标准的SQL
1.8.3 MySQL如何处理约束
1.9学分
1.9.1贡献的MySQL
documenters 1.9.2 and;
1.9.3包支持MySQL
1.9.4工具被用来创建MySQL
1.8.5支持MySQL

MySQL?软件提供了一个非常快速、多线程、多用户,和强大的SQL(结构化查询语言)数据库服务器。MySQL服务器用于关键任务,重负荷生产系统以及嵌入到大规模部署的软件。Oracle是甲骨文公司的注册商标和/或其附属机构。MySQL是甲骨文公司的商标和/或其附属机构,不得利用客户没有甲骨文的书面授权。其他名称可能是其各自所有者的商标。

MySQL软件许可。用户可以选择使用MySQL软件的GNU通用公共许可证的条款下的一个开源产品(www.fsf.org http:/ / / /许可证)或可以从Oracle采购标准的商业许可证。看到www.mysql.com http:/ / / / / /公司法律事务在我们的许可策略的更多信息。

下面的列表描述了本手册中特别感兴趣的部分:

重要

报告问题或错误,请使用说明7节,“如何报告错误或问题”。如果你发现在MySQL服务器的敏感的安全问题,请立即告知发送电子邮件消息。例外:支持客户应报告所有的问题,包括安全漏洞,Oracle支持。

1.1关于本手册

这是MySQL数据库系统,参考手册8版,通过释放8.0.14。MySQL 8次要版本之间的差异是在参考的版本号本文指出(8。x)。的许可证信息,湖法律声明

本手册是不打算使用旧版本的由于许多功能和不同的MySQL 8和以前的版本的MySQL软件。如果您使用的是早期版本的MySQL软件,请参阅手册。例如,MySQL 5.7参考手册涵盖了MySQL软件的5.7系列发布。

因为这本手册作为参考,不提供SQL或关系数据库概念的用法。它也不会教你如何使用操作系统或命令行解释器。

MySQL数据库软件也在不断发展,并参考手册也经常更新。本手册的最新版本是可搜索的形式在网上提供http://dev.mysql.com DOC。也有其他格式,包括HTML,PDF,EPUB版本。

参考手册源文件是用DocBook XML格式。HTML版本和其他格式的自动生成,主要使用DocBook XSL样式表。关于DocBook,看docbook.org http:/ / /

MySQL本身的源代码包含内部文件写入使用Doxygen。它的内容是在生成http://dev.mysql.com / DOC / dev / / /最新的MySQL服务器。它也可以从本地一个使用说明,在MySQL源分布生成的内容第2.8.7,“生成MySQL doxygen文档内容”

如果你有关于使用MySQL的问题,你可以问他们使用我们的邮件列表或论坛。看到第1.6.2,MySQL邮件列表”,和第1.6.3,MySQL社区支持MySQL论坛”。如果你有关于补充或者改正的手册本身的建议,请发送到http:/ / / / / www.mysql.com公司接触

本手册最初是由David Axmark和米迦勒写的蒙蒂维德纽斯。它是由MySQL文档团队维护,包括Chris Cole,Paul DuBois,Margaret Fisher,Edward Gilmore,Stefan Hinz,David Moss,Philip Olson,Daniel Price,Daniel So,Jon Stephens。

1.2拼写和语法约定

本手册使用一定的排版约定:

  • Text in this style用于SQL语句;数据库,表,和列的名称;程序清单和源代码;和环境变量。例子:重新加载授权表,使用FLUSH PRIVILEGES声明

  • Text in this style指示输入您键入的例子。

  • 在这种风格的文本表示可执行程序和脚本的名称、实例MySQL(MySQL的命令行客户端程序)和mysqld(mysql服务器executable)。

  • Text in this style用于变量输入,你应该用自己的价值选择。

  • 在这种风格的文本是用的

  • 在这种风格的文本用于表的标题和表达特别强调。

  • Text in this style是用来表示一个程序的选项,会影响到程序的执行,或供应,是以某种方式功能的程序所需的信息。例子这个--host选择(短短)H)告诉MySQL客户端程序的主机名或IP地址的,它应该连接到MySQL服务器

  • 文件名和目录名是这样写的:全球my.cnf文件位于/etc目录

  • 字符序列是这样写的:要指定一个通配符,使用'%'人物

当命令表明,就是从在一个特定的程序的执行,及时发现前面的命令指示命令的使用。例如,shell>表示一个命令,你执行你的登录shell,根内核>类似但应执行root,和MySQL的>表明说明你执行的MySQL客户端程序:

shell> type a shell command here
root-shell> type a shell command as root here
mysql> type a mysql statement here

在一些地区,不同的系统可以相互区分显示命令应该在两个不同的环境中执行。例如,在复制的命令可能会以工作master奴隶

master> type a mysql command on the replication master here
slave> type a mysql command on the replication slave here

这个内核你的命令解释器。在Unix上,这是一个典型的程序如SHCSH,或猛击。在Windows中,相当于程序命令程序命令提示符通常,在控制台窗口中运行。

当你输入一个命令或语句的一个例子,不立即键入。

数据库、表和列名称必须被取代成报表。表明,这种替代是必要的,本手册使用db_nametbl_name,和col_name。例如,你可能会看到这样的陈述:

MySQL的>SELECT col_name FROM db_name.tbl_name;

这意味着,如果你进入一个类似的声明,你会提供您自己的数据库、表和列的名称,,也许是这样的:

mysql> SELECT author_name FROM biblio_db.author_list;

SQL关键字不区分大小写,可以写在任何lettercase。本手册使用大写字母。

在语法描述中,方括号([])表示可选的词或句。例如,在下面的语句,如果存在是可选的:

DROP TABLE [IF EXISTS] tbl_name

当一个语法元素组成的一个替代品,替代品是由竖线隔开(|)。当从一组选择一个成员五月被选择,选择是列在方括号([]):

修剪([ [ |领导|尾] [remstr] ]str

当从一组选择一个成员必须被选择,选择是列在括号({}):

{ \ fn方正黑体简体\ fs18 \ b1 \ 3cH2F2F2F } { \ 3cH202020 } { \tbl_namecol_name|wild]

省略号(...)表示语句部分的遗漏,通常提供一个较短的版本更复杂的语法。例如,SELECT ... INTO OUTFILE对速记的形式SELECT声明说,有一个到输出文件以下条款声明的其他部分。

省略号也可以表明前面的语法元素声明可以重复。在下面的例子中,多reset_option值可以是给定的,每个人在第一前面的逗号:

重置reset_option【,reset_option]…

设置shell变量命令显示使用Bourne shell的语法。例如,序列设置CC环境变量与管理配置命令看起来像这样在Bourne shell的语法:

shell> CC=gcc ./configure

如果你使用的是CSHtcsh,你必须发出命令有所不同:

shell> setenv CC gcc
shell> ./configure

1.3概述的MySQL数据库管理系统

1.3.1什么是MySQL?

最流行的开源的MySQL,SQL数据库管理系统,开发了分布式,并由甲骨文公司赞助。

MySQL的网站(www.mysql.com http:/ / /)提供了关于MySQL软件的最新信息。

  • MySQL是一个数据库管理系统。

    数据库是一个结构化的数据集合。它可以从一个简单的购物清单,一个画廊或海量信息在企业网络的任何东西。添加、访问,并存储在计算机的数据库中的数据,你需要一个如MySQL服务器的数据库管理系统。由于计算机在处理大量数据是非常好的,数据库管理系统在计算中发挥核心作用,作为独立的事业,或作为其他程序的一部分。

  • MySQL数据库是关系。

    关系数据库将数据存储在不同的表中而不是将所有数据放在一个大仓库。数据库的结构分为速度优化的物理文件。逻辑模型和对象,如数据库、表、视图、行和列,提供了一个灵活的编程环境。你建立的关系不同的数据字段之间的规则,如一对一、一对多的,独特的,必需的或可选的,和指针不同的表。数据库执行这些规则,因此,设计良好的数据库应用程序,你永远不会看到不一致的,重复的,孤儿,过时,或数据丢失。

    SQL的一部分MySQL代表结构化查询语言。SQL是用于访问数据库的最常用的语言规范。这取决于你的编程环境下,你可以直接输入SQL语句(例如,生成报告),嵌入SQL语句转换成另一种语言编写的代码,或使用特定语言的API,隐藏的SQL语法。

    SQL是由ANSI/ISO SQL标准定义。SQL标准已经发展1986以来的几个版本存在。本手册,SQL 92是指在1992发布的标准,SQL:1999年是指在1999发布的标准,和SQL:2003年指的是标准的当前版本。我们用短语SQL标准意味着在任何时间的SQL标准的版本。

  • MySQL软件是开源的。

    开源意味着任何人使用和修改软件,这是可能的。任何人都可以从互联网上下载使用MySQL软件而不付出什么。如果你愿意,你可以学习源代码,改变它以适合你的需要。MySQL软件使用GPL(GNU通用公共许可证),www.fsf.org http:/ / / /许可证,定义什么你可以和不可以做在不同情况下的软件。如果你感觉不舒服的GPL或需要将MySQL代码到商业应用,你可以从我们这里购买一个商业许可的版本。看MySQL许可证的更多信息(www.mysql.com http:/ / / / / /公司法律事务

  • MySQL数据库服务器是快速、可靠、可扩展、易用。

    如果这是你正在寻找的,你应该给它一个尝试。MySQL服务器可以运行在舒适的台式机或笔记本电脑,与您的其他应用程序,Web服务器,等等,需要很少或根本没有注意。如果你致力于MySQL的整个机器,你可以调整设置以充分利用所有的内存,CPU和I/O能力。MySQL也可以扩展到集群机,网络连接在一起。

    MySQL服务器最初是为处理大型数据库的速度更快,比现有的解决方案已成功应用于高要求的生产环境,几年来。虽然在不断发展,MySQL服务器今天提供了丰富的和有用的功能。它的连通性、速度、和安全使MySQL服务器非常适合在互联网上访问数据库。

  • MySQL服务器在客户机/服务器或嵌入式系统。

    MySQL数据库软件是一个包含多线程SQL服务器,支持不同的后端客户端/服务器系统,不同的客户程序和库、管理工具和广泛的应用程序编程接口(API)。

    我们还提供MySQL服务器作为嵌入式多线程库,你可以链接到您的应用程序得到一个更小,更快,更容易使用的产品。

  • 大量提供MySQL软件可用。

    MySQL服务器有一套实用的与用户密切合作开发的功能。很可能是你最喜欢的应用或语言支持MySQL数据库服务器。

发音的官方途径MySQL我的Ess Que Ell(不我的续集),但我们不介意你读它我的续集或其他一些本地化的方式。

1.3.2 MySQL的主要特点

这部分描述了一些对MySQL数据库软件的重要特征。在很多方面,路线图适用于所有版本的MySQL。有关功能,他们引入了MySQL一系列具体的基础上,看一言以蔽之适当的手段:

内部构件和可移植性

  • 用C和C

  • 与范围广泛的不同的编译器测试。

  • 在许多不同的平台上工作。看到http://www.mysql.com/support/supportedplatforms/database.html

  • 携带,使用CMake在MySQL 5.5和。以前的系列使用GNU autoconf和automake,经过。

  • 测试与净化(商业内存泄漏检测仪)以及Valgrind(GPL工具http:/ / / / sewardj developer.kde.org ~

  • 采用多层服务器独立模块设计。

  • 设计充分利用内核线程的多线程,轻松使用多个CPU可以的话。

  • 提供了事务性和非事务性存储引擎。

  • 用非常快的树盘表(MyISAM)和索引压缩

  • 为了使它比较容易添加其他存储引擎。如果你想提供一个内部的数据库SQL接口这是有用的。

  • 采用一个非常快的线程系统的内存分配。

  • 执行很快加入使用优化的嵌套循环连接。

  • 实现了内存中的哈希表作为临时表。

  • 实现了SQL函数使用高度优化的类库,应该尽可能的快。通常有没有在所有的内存分配后查询初始化。

  • 提供服务器作为客户端/服务器的网络环境下,一个单独的程序,和一个图书馆,可以嵌入(链接)为独立的应用程序。这样的应用程序可以单独使用或在环境中没有网络可用的地方。

数据类型

语句和函数

  • 完整的运算符和函数的支持SELECT列表哪里子句的查询。例如:

    mysql> SELECT CONCAT(first_name, ' ', last_name)
        -> FROM citizen
        -> WHERE income/dependents > 10000 AND age > 30;
    
  • SQL的全面支持GROUP BY顺序条款.群组功能支持(COUNT()AVG()STD()SUM()MAX()MIN(),和GROUP_CONCAT()

  • 支持LEFT OUTER JOIN右外部联接与标准的SQL和ODBC语法。

  • 在表和列的别名支持标准SQL所需的。

  • 支持DELETEINSERTREPLACE,和UPDATE返回的行数,分别改变(影响),或者返回匹配而不是通过设置标志连接服务器时的行数。

  • MySQL特定的支持SHOW语句检索信息的数据库,存储引擎,表和索引。支持的information_schema根据标准的SQL数据库,实现。

  • 一个EXPLAIN声明显示了查询优化器。

  • 从表或列名称的函数名独立。例如,ABS是一个有效的列名称。唯一的限制是一个函数调用,没有空间的函数名和之间允许(跟随它。看到9.3节,“关键字和保留字”

  • 你可以在同一声明中从不同的数据库中的表。

安防

  • 特权和密码系统是非常灵活的,安全的,这使得基于主机的认证。

  • 密码安全的密码加密所有流量当你连接到服务器。

可扩展性和局限性

连接

  • 客户端可以连接到MySQL服务器使用多个协议:

    • 客户可以使用TCP/IP套接字连接在任何平台。

    • 在Windows系统中,客户可以使用命名管道如果服务器开始连接--enable-named-pipe选项Windows服务器也支持共享内存连接,如果开始的--shared-memory选项客户可以通过共享内存连接使用--protocol=memory选项

    • 在UNIX系统中,客户可以使用Unix域套接字文件连接。

  • MySQL客户端程序可以用多种语言。客户端库编写的C可写在C或C的客户,或任何提供C汇编语言。

  • API的C,C,埃菲尔,java,Perl,PHP,Python,Ruby,和TCL都可用,使MySQL客户端是用多种语言。看到27章,连接器和API

  • 连接器/ ODBC(MyODBC)接口提供的客户端程序,使用ODBC(开放数据库连接)支持MySQL的连接。例如,你可以使用MS Access连接到你的MySQL服务器。客户端可以运行在Windows或Unix。连接器/ ODBC数据源是可用的。所有的ODBC 2.5功能的支持,还有很多其他的。看到MySQL连接器/ ODBC开发指南

  • 连接器/ J接口提供java客户端程序,使用JDBC连接MySQL的支持。客户端可以运行在Windows或Unix。连接器/ J源是可用的。看到MySQL连接器/ J 5.1开发指南

  • MySQL连接器/净使开发人员能够轻松地创建.NET应用程序需要安全的、高性能的数据连接MySQL。它实现了所需的ADO.NET接口和集成到ADO.NET感知的工具。开发人员可以使用他们选择的网络语言构建应用程序。MySQL连接器/网是一个完全托管的ADO.NET驱动编写100%纯C #。看到MySQL连接器/网络开发者指南

定位

  • 服务器可以提供多种语言的客户错误信息。看到第4,“设置错误消息的语言”

  • 几个不同的字符集的全面支持,包括latin1(cp1252),德国big5ujisUnicode字符集,多,多。例如,在斯堪的纳维亚字符???在表名和列名允许

  • 所有的数据都是保存在所选择的字符集。

  • 排序和比较是根据默认字符集和整理了。有可能改变这个当MySQL服务器启动(见10.3.2节,“服务器字符集和整理”)。看到非常先进的排序的一个例子,看看捷克分类编码。MySQL服务器支持很多不同的字符集,可以指定在编译时和运行时。

  • 服务器的时区可以动态改变,以及个人客户可以指定自己的时区。看到第5.1.12,MySQL服务器的时区支持”

客户和工具

  • MySQL包括几个客户端实用程序。这些包括命令行程序如mysqldumpmysqladmin,和图形程序如MySQL Workbench

  • MySQL服务器SQL语句的查询,支持内置的优化,修复表。这些陈述都可以从命令行通过mysqlcheck客户MySQL还包括myisamchk用于执行这些操作,很快命令行实用程序MyISAM表看到第四章,MySQL的程序

  • MySQL程序可以调用的--help-?选项来获得在线帮助

1.3.3历史MySQL

我们开始与意图使用mSQL数据库系统连接到我们的表使用我们自己的快速低(ISAM)例程。然而,经过一些测试,我们得出的结论是mSQL不够快或灵活的满足我们的需要。这导致了一个新的SQL接口,我们的数据库,但几乎相同的API接口mSQL。这个API的目的是使第三方编写的代码使用mSQL很容易被移植用MySQL。

MySQL是命名的联合创始人Monty Widenius的女儿后,我。

的名称为“mysql海豚(我们的标志)Sakila,这是一个巨大的名单,我们建议用户选择名字的海豚竞赛获奖者提交的Ambrose Twebaze,一个来自斯威士兰的开源软件开发者,非洲。根据安布罗斯的说法,女性化的名字sakila起源于SiSwati,斯威士兰当地的语言。sakila也是在阿鲁沙,坦桑尼亚一个小镇的名字,靠近安布罗斯的原产国,乌干达。

1.4什么是新的MySQL 8

本节总结了已被添加到的,过时的,并从MySQL 8中移除。一个同伴部分列出MySQL服务器选项和变量已被添加,删除或弃用,MySQL 5.0。看到5节,“服务器状态变量和选项,使用MySQL 5.0或删除”

在MySQL 8的新增功能

以下的功能已被添加到MySQL 8:

  • 数据字典MySQL现在包含一个事务的数据字典存储关于数据库对象的信息。在以前的MySQL版本,字典数据存储在元数据文件和非事务表。有关更多信息,参见14章,MySQL数据词典

  • 原子数据定义语句(Atomic DDL)。一个原子的DDL语句将数据字典的更新,存储引擎的操作,和二进制日志写入相关的DDL操作成一个单一的原子事务。有关更多信息,参见第13.1.1,“原子数据定义语句的支持”

  • 安全帐户管理这些增强功能被添加到提高安全性和更大的灵活性使DBA帐户管理:

    • 一个新的caching_sha2_password“认证书”可供查阅。就像sha256_password插件,caching_sha2_password实现了SHA-256密码散列,但使用缓存来解决延迟问题在连接时间。它还支持更多的连接协议,不需要连接对OpenSSL的RSA密钥对的密码交换能力。看到第6.5.1.3,“缓存SHA-2认证”

      这个caching_sha2_passwordsha256_password身份验证插件提供更安全的密码加密比mysql_native_password插件,和caching_sha2_password提供了更好的性能比sha256_password。由于这些卓越的安全性和性能特点caching_sha2_password,它是目前首选的身份验证插件,也是默认的身份验证插件而不是mysql_native_password。关于这个默认插件更改服务器的操作和与客户及连接器服务器兼容性的影响的信息,参见caching_sha2_password作为首选的身份验证插件

    • MySQL现在支持的角色,即集合的特权。角色可以创建和删除。角色可以授予和撤销他们的特权。角色可以授予和撤销用户帐户。一个帐户的有效适用的角色可以从那些授予帐户选择,可以改变在会议期间该帐户。有关更多信息,参见第6.3.4,“角色”

    • MySQL现在保留密码历史信息,实现对密码重用以前的限制。DBA可以要求新密码不能与以前的密码选择一些密码更改或时期。有可能建立密码重用政策全球以及每个帐户的基础上。

      它也可能需要尝试更改帐户密码被指定要取代现有的密码验证。这使DBA能够防止用户改变密码没有证明他们知道当前密码。有可能建立密码验证政策全球以及每个帐户的基础上。

      这些新功能提供了更完整的控制数据库管理员密码管理。有关更多信息,参见第6.3.8,“密码管理”

    • MySQL现在支持FIPS模式,如果编译使用OpenSSL,和OpenSSL库和FIPS对象模块可在运行时。FIPS模式密码操作如更长的密钥长度的加密算法,在可接受的限制条件限制或要求。看到6.6节,“FIPS支持”

  • 资源管理MySQL现在支持的资源组的创建和管理,并允许分配的线程运行在服务器上的特定群体,线程执行根据可用的资源组。组属性使其资源控制,启用或限制资源消耗的线程组。DBA可以适合不同的工作负载,修改这些属性。目前,CPU时间是一个可管理的资源,通过概念的代表虚拟CPU作为一个术语,包括CPU核心,hyperthreads,硬件线程,等等。服务器确定在启动多少个虚拟CPU可用,并拥有适当权限的数据库管理员可以将这些CPU资源组分配的线程组。有关更多信息,参见第8.12.5,“资源组”

  • InnoDB的增强这些InnoDB添加了增强:

    • 当前最大的自动增加计数器的值写入到重做日志的每一次变化值,并保存到一个引擎私人系统表在每个检查点。这些变化使电流最大值自动递增计数器的值持续在服务器重新启动。此外:

      • 重新启动服务器不再取消的影响AUTO_INCREMENT = N表选项。如果你初始化自动递增计数器一个特定的值,或者如果您改变自动递增计数器的值到一个更大的价值,新的价值是坚持在服务器重新启动。

      • 重新启动服务器后立即ROLLBACK操作不再结果重用的自动增量值被分配到回滚事务。

      • 如果修改AUTO_INCREMENT一个值大于最大电流自动增量值的列的值(在UPDATE操作,例如),新的价值是坚持,和随后的INSERT操作将自动增加值从新的、更大的价值。

      有关更多信息,参见第15.8.1.5,”auto_increment InnoDB”处理,和InnoDB auto_increment计数器初始化

    • 当遇到索引树的腐败,InnoDB写一个腐败标志的重做日志,使腐败标志碰撞安全。InnoDB还写在记忆腐败标志数据引擎系统表在每个关卡的私人。在恢复过程中,InnoDB腐败的旗帜读取位置和合并结果标记在内存中的表和索引对象的腐败之前。

    • 这个InnoDBmemcached插件支持多get操作(读取多个键/值对的在一个单一的memcached查询和范围查询)。看到第15.19.4,“InnoDB Memcached多得到和范围查询的支持”

    • 一个新的动态配置选项,innodb_deadlock_detect,可用于禁用的死锁检测。在高并发系统中,死锁检测可以造成经济放缓时多线程等待同一个锁。有时,它可能是更有效地禁用死锁检测和依靠innodb_lock_wait_timeout设置事务回滚时,死锁发生。

    • 新的INFORMATION_SCHEMA.INNODB_CACHED_INDEXES表报告的索引页面缓存在数InnoDB每个索引缓冲池

    • 全部InnoDB临时表在共享临时表空间中创建,ibtmp1

    • 这个InnoDB表空间加密功能支持加密的日志和重做日志数据。看到重做日志数据加密,和UNDO日志数据加密

    • InnoDB支持不等待SKIP LOCKED选项选择分享SELECT ... FOR UPDATE锁定读语句不等待导致语句如果请求的行是由另一个事务锁定立即返回。SKIP LOCKED删除锁定的行的结果集。看到锁定读并发NOWAIT跳过锁定

      SELECT ... FOR SHARE取代选择锁在共享模式,但LOCK IN SHARE MODE仍然可以向后兼容。语句是等价的。然而,更新FOR SHARE支持不等待SKIP LOCKED,和tbl_name选项。See第13.2.10,选择“语法”

      OF tbl_name应用锁定查询命名表

    • ADD PARTITION删除分区COALESCE PARTITIONreorganize partition,和REBUILD PARTITIONALTER TABLE选择本地分区到位的API支持,可以使用ALGORITHM={COPY|INPLACE}LOCK条款.

      DROP PARTITIONALGORITHM=INPLACE删除存储在分区的分区数据,滴。然而,DROP PARTITIONALGORITHM=COPYold_alter_table=ON重建分区表和试图将数据从下降到另一个分区的分区与兼容分区…价值观定义不能移动到另一个分区的数据将被删除。

    • 这个InnoDB存储引擎现在使用MySQL数据字典而不是它自己的存储引擎的具体数据字典。关于数据字典信息,看14章,MySQL数据词典

    • mysql系统表和数据字典表现在创建一个单一的InnoDB表空间文件命名mysql.ibd在MySQL数据目录。此前,这些表是建立在个人InnoDB在表空间文件mysql数据库目录

    • 下面的undo表空间的变化介绍了MySQL 8:

      • 数撤销表空间可以在运行时修改,或当服务器重新启动时,使用innodb_undo_tablespaces配置选项。这一变化允许添加undo表空间和回滚段作为数据库的增长。

      • innodb_undo_log_truncate默认情况下启用。看到第15.7.9,“Truncating Undo Tablespaces”

      • 这个innodb_undo_tablespaces默认值是从0到2,这意味着回滚段是在两个单独的撤销表空间,而不是创造出来的InnoDB系统默认表空间。最小的两个撤销表空间是需要允许截断的UNDO日志。

        最小innodb_undo_tablespaces值是2,和设置innodb_undo_tablespaces0是不允许的。最小值2确保回滚段总是在撤销表空间而不是SYSTEM表空间。有关更多信息,参见第15.7.8”配置,撤销表空间”

      • 命名约定使用undo表空间文件是由undoNNNundo _NNN,在那里NNN是撤销空间数

      • 这个innodb_rollback_segments配置选项定义的数量的回滚段每undo表空间。以前,innodb_rollback_segments被指定的回滚段的总数为MySQL实例的全局设置。这种变化增加了可用的并发事务的回滚段的数目。更多的回滚段增加了并发事务使用单独的回滚段用于UNDO日志的可能性,导致更少的资源争用。

      • 这个innodb_undo_logs配置选项被删除。这个innodb_rollback_segments配置选项执行同样的功能,而应使用。

      • 这个Innodb_available_undo_logs状态变量被删除。可用回滚段表空间的每数可以检索使用显示变量的innodb_rollback_segments”;

    • 配置选项影响缓冲池preflushing冲洗行为默认值被修改:

      • 这个innodb_max_dirty_pages_pct_lwm默认值是10。以前的默认值为禁用缓冲池preflushing。10值使preflushing时的缓冲池中的脏页的比例超过10%。使preflushing提高性能的一致性。

      • 这个innodb_max_dirty_pages_pct默认值增加到75%到90%。InnoDB试图刷新数据从缓冲池,脏页的百分比不超过此值。增加默认值,允许一个更大的缓冲池中的脏页的百分比。

    • 默认的innodb_autoinc_lock_mode设置是2(交错)。交错的锁模式允许多行插入并行执行,从而提高了并发性和可扩展性。新的innodb_autoinc_lock_mode默认设置反映了从基于语句的复制基于行的复制在MySQL 5.7默认复制类型的变化。基于语句的复制需要连续自动增量锁定模式(以前的默认值)以确保自动增量值在可预测和可重复的顺序分配给SQL语句序列,而基于行的复制不到SQL语句的执行顺序的敏感。有关更多信息,参见InnoDB auto_increment锁模式

      系统使用基于语句的复制,新innodb_autoinc_lock_mode默认设置可能会破坏依赖顺序自动增量值的应用。恢复以前的默认设置innodb_autoinc_lock_mode1

    • 重命名一个表空间是由一般ALTER TABLESPACE ... RENAME TO语法

    • 新的innodb_dedicated_server配置选项,它默认是禁用的,可以用来InnoDB自动配置选项,根据服务器上检测到的内存量:

      该选项用于MySQL服务器实例运行在一个专用的服务器。有关更多信息,参见第15.6.13,“启用自动配置一个专用的MySQL服务器”

    • 新的INFORMATION_SCHEMA.INNODB_TABLESPACES_BRIEF视图提供了空间,名字,道路,标志,和空间类型数据InnoDB表空间

    • 这个zlib库版本捆绑MySQL版本1.2.3版刃了。MySQL实现的zlib库压缩的帮助。

      如果你使用InnoDB表压缩,这第2.10.1.2,影响升级到MySQL 5.0”变化有关升级的影响

    • 序列化的字典信息(SDI)是目前在所有InnoDB表空间文件除临时表空间和undo表空间文件。SDI是串行化的元数据表和表空间对象。SDI数据存在冗余提供元数据。例如,字典对象的元数据可以从文件中提取,如果数据字典表空间不可用。SDI提取使用的ibd2sdi工具SDI数据存储在JSON格式

      在表空间文件SDI数据列入增加表空间文件大小。一个SDI记录需要一个单独的索引页,这是16K大小默认。然而,SDI数据压缩存储时减少存储空间占用。

    • 这个InnoDB存储引擎现在支持原子DDL,这确保了DDL操作是完全提交或回滚,即使服务器停止运行期间。有关更多信息,参见第13.1.1,“原子数据定义语句的支持”

    • 表空间文件可以移动或恢复到一个新的位置当服务器脱机使用innodb_directories选项有关更多信息,参见第15.7.7,“移动表空间文件,当服务器脱机”

    • 下面的重做日志的优化实现:

      • 用户线程可以同时写日志缓冲区写入不同步。

      • 用户线程现在可以添加脏页表在一个轻松的顺序冲洗。

      • 一个专用的日志线程现在负责写日志缓冲系统的缓冲区,冲洗系统缓冲区写入磁盘,通知用户线程写得重做,保持轻松刷新列表订购所需的滞后,写检查。

      • 系统变量添加配置旋转延迟的用户线程等待使用刷新重做:

      • 这个innodb_log_buffer_size配置选项现在是动态的,可调整大小的日志缓存在服务器正在运行。

      有关更多信息,参见8.5.4节,“优化InnoDB重做日志”

    • 在MySQL 8.0.12,UNDO日志是小更新大型对象(LOB)数据支持,从而提高了LOB的更新,在尺寸或小于100字节的性能。此前,LOB更新规模最小的一个LOB页,这是比更新可能只修改几个字节的优化。这种增强是建立在支持MySQL 8.0.4添加部分取LOB数据更新。

    • 世纪之mysql 8.0.12,ALGORITHM=INSTANT是后续支持ALTER TABLE运营

      • 添加列。此功能也被称为即时ADD COLUMN. Apply限制。见第15.12.1,“在线DDL操作”

      • 添加或删除虚拟柱

      • 添加或删除列的默认值。

      • 修改一个定义ENUMSET专栏

      • Changing the索引类型。

      • 重命名一个表

      操作支持ALGORITHM=INSTANT只有修改数据字典中的元数据。没有元数据锁在表和表数据不受影响,使得操作瞬时。如果没有显式指定,ALGORITHM=INSTANT通过操作默认支持的应用。如果ALGORITHM=INSTANT但不支持指定的操作失败,立即用一个错误。

      更多关于操作,支持信息ALGORITHM=INSTANT,看到第15.12.1,“在线DDL操作”

  • 字符集的支持默认的字符集由latin1utf8mb4。这个utf8mb4字符集有几个新的排序规则,包括utf8mb4_ja_0900_as_cs,日本的第一语言特定的排序规则可用于Unicode数据库。有关更多信息,参见第10.10.1,“Unicode字符集”

  • JSON的增强以下增强功能或增加了MySQL的JSON的功能:

    • 添加->>(内嵌路径)算子,这相当于调用JSON_UNQUOTE()结果JSON_EXTRACT()

      这是一个完善的栏目路径算子->介绍了在MySQL 5.7;col->>"$.path"相当于JSON_UNQUOTE(col->"$.path")。内联路径运算符可以用于任何你可以使用json_unquote(json_extract()),这样的SELECT列清单,哪里HAVING条款,并顺序GROUP BY条款.有关更多信息,看到运营商的描述,以及第12.16.8,“JSON语法路径”

    • 增加了两个JSON聚合函数JSON_ARRAYAGG()JSON_OBJECTAGG()json _ arrayagg()以一列或表达式作为它的参数,和集料的结果作为一个单一的JSON阵列。表达可以评估任何MySQL数据类型;这不一定是一个JSON价值JSON_OBJECTAGG()以两列或表达式,它解释为一个键和一个值;它返回的结果作为一个单一的JSON目标更多的信息和例子,看12.19节,“总(组)功能”

    • 添加JSON的效用函数JSON_PRETTY(),输出一个现有的JSON值在一个易于阅读的格式;每一个JSON对象的成员或数组的值打印在单独的一行,和孩子的对象或数组的目的是2个空间相对于它的父。

      这个函数可以用一个字符串,可以解析为一个JSON值。

      更详细的信息和例子,看第12.16.7,“JSON的效用函数”

    • 当排序JSON在查询中使用的值顺序现在,每个值的排序键的长度可变的部分代表,而不是在一个固定的1000部分尺寸。在许多情况下,这可以减少过度使用;例如,一个标量INT甚至bigint价值实际上只需要很少的字节,所以,这个空间的其余部分(90%或更多)被填充。这种变化有以下好处的性能:

      • 排序缓冲区空间现在更有效的利用,使filesorts不用flush到磁盘的早期或经常与固定长度的排序关键字。这意味着更多的数据可以排序在内存中,避免不必要的磁盘访问。

      • 短按键可比更长的更迅速,在性能提供了一个明显的改善。这类表现完全在内存以及各种需要读写磁盘是真实的。

    • 在MySQL 8.0.2部分增加的支持,在位置更新JSON列的值,这比完全移除现有JSON值更加高效和写一个新的地方,以前做了当更新任何JSON专栏这个优化中得到应用,更新的应用必须使用JSON_SET()JSON_REPLACE(),或JSON_REMOVE()。新的元素不能被添加到JSON文档更新;值在文件不能比以前的更新更大的空间。看到JSON值部分更新,一个要求详细的讨论。

      JSON文件部分更新可以写入二进制日志,以记录完整的JSON文件更少的空间比。部分更新记录时总是这样基于语句的复制使用。这与基于行的复制工作,你必须先设置binlog_row_value_options=PARTIAL_JSON;看到这个变量的描述更多信息。

    • 添加JSON的实用功能JSON_STORAGE_SIZE()JSON_STORAGE_FREE()Json St . St . St . Sir Ssize()返回用于任何部分更新之前的JSON文档的二进制表示的字节的存储空间(见以前的项目)。JSON_STORAGE_FREE()显示类型表列中剩余的空间量JSON在它被部分更新使用JSORJSON_REPLACE();这是大于零,如果新值的二进制表示形式是低于前值。

      这些函数还接受一个JSON文档有效的字符串表示形式。这样的价值,JSON_STORAGE_SIZE()返回的二进制表示的空间在其一个JSON文档转换。一个变量包含一个JSON文件的字符串表示形式,Json St . Sstority Stock Ffree()返回零。无论是函数产生一个错误,如果它的(非空)参数不能被解析为一个有效的JSON文档,和NULL如果参数是无效的

      更多的信息和例子,看第12.16.7,“JSON的效用函数”

      JSON_STORAGE_SIZE()Json St . Sstority Stock Ffree()在MySQL 8.0.2实施。

    • 新增支持MySQL 8.0.2范围如$[1 to 5]在XPath表达式。还增加了支持这个版本的最后的关键词和相对寻址,这样$[last]总是选择上(最高编号)数组中的元素和[ 1 ]美元的孩子到最后一个元素的下一个。last和词语的使用也可以包括在范围定义;例如,[ last-2美元来last-1 ]返回最后一个元素只有一个数组。看到搜索和修改JSON值,提供更多的信息和例子。

    • 添加一个JSON合并功能要符合RFC 7396JSON_MERGE_PATCH()2、当使用JSON对象,将它们合并成一个单一的JSON对象具有下列设置联盟成员:

      • 对这一对象的每个成员有第二对象相同的关键成员不。

      • 在这第二对象的每个成员没有会员在第一个对象具有相同的键,其价值不是JSONnull字面意义的.

      • 每个成员都有一个关键的对象存在,而第二对象的价值不在于JSONnull字面意义的.

      作为这项工作的一部分,这JSON_MERGE()功能已改名JSON_MERGE_PRESERVE()JSson MERGE()仍然是公认的一个别名JSON_MERGE_PRESERVE()在MySQL软件,但现在已不再使用,须在未来版本的MySQL的去除。

      更多的信息和例子,看第12.16.4,”功能,修改JSON值”

    • 实施最后重复的关键胜利重复键正常化,符合RFC 7159和大多数JavaScript解析器。这种行为的一个例子是在这里显示,只有最右边的成员具有关键x保存:

      MySQL >选择JSON_OBJECT('x', '32', 'y', '[true, false]',>'x', '"abc"', 'x', '100') AS Result;|食用------------------------------------(| |食用------------------------------------:{“X”,“Y”“100”:“[假]真的,”|食用------------------------------------ } 1行集(0秒)

      值插入到MySQLJSON列也这样规范,如本例所示:

      MySQL的>CREATE TABLE t1 (c1 JSON);MySQL的>INSERT INTO t1 VALUES ('{"x": 17, "x": "red", "x": [3, 5, 7]}');MySQL的>SELECT c1 FROM t1;------------------ | C1 | ------------------ | {“X”:[ 3, 5, 7 ] | ------------------ }

      这是从以前的版本不兼容MySQL的变化,其中一个第一份关键胜利算法应用在这种情况下。

      看到规范化,合并,和autowrapping JSON值,更多的信息和例子

    • 添加JSON_TABLE()在MySQL 8.0.4功能。这个函数接受JSON数据返回为一个具有指定列的关系表。

      这个函数的语法JSON_TABLE(expr, path COLUMNS column_list) [AS] alias),在那里expr是返回的JSON数据的表达,path是一个JSON路径应用的源码,和column_list是一列列的定义。一个例子是在这里显示:

      MySQL的>SELECT *->FROM->JSON_TABLE(->'[{"a":3,"b":"0"},{"a":"3","b":"1"},{"a":2,"b":1},{"a":0},{"b":[1,2]}]',->"$[*]" COLUMNS(->rowid FOR ORDINALITY,->       ->xa INT EXISTS PATH "$.a",->xb INT EXISTS PATH "$.b",->           ->sa VARCHAR(100) PATH "$.a",->sb VARCHAR(100) PATH "$.b",->           ->ja JSON PATH "$.a",->jb JSON PATH "$.b"->)->) AS  jt1;————————————————————| XA,XB -------- | rowid | | |某人和你| | JB |————————————————| -------- | 1 1 1 3 | | | | |“0”0 3 2 1 1 | | | | | 3 1 | | |“1”“3”| | | 1 3 1 2 1 | | | | 2 1 4 1 | | | | | 0 0 0 0 | | | |零| | 5 0 1 | | | | |零零零|〔1,2〕——————————————————| --------

      JSON源表达式可以是任何表达式产生一个有效的JSON文档,包括JSON文本、表列,或一个函数调用返回的JSON等JSON_EXTRACT(t1, data, '$.post.comments')。有关更多信息,参见第12.16.6,“JSON表功能”

  • 数据类型的支持MySQL现在支持使用表达式作为数据类型的默认值。这包括使用表达式作为默认值BLOBTEXT几何,和JSON数据类型,其中以前无法分配的默认值在所有。详情见11.7节,“数据类型的默认值”

  • 优化器增加了这些算法的改进:

    • MySQL现在支持隐形指标。一个看不见的指标是不是在所有的优化使用,否则保持正常。指标是可见的默认。看不见的指标可以测试除对查询性能指标的影响,没有进行破坏性的变化,必须完成的指标应该成为必需。看到第8.3.12,“看不见的指标”

    • MySQL现在支持降序索引:DESC在索引定义不再被忽视而导致关键值存储在降序。此前,指标可按相反的顺序但在性能损失扫描。降序索引可以在向前的顺序扫描,这是更有效的。降序索引也有可能使优化器使用多列索引时最有效的扫描顺序将升为其他一些列降序顺序。看到第8.3.13,“降指标”

    • MySQL现在支持关键部件功能指数指数表达式的值而不是列的值创建。功能键部分使索引的值不能被索引,否则,如JSON价值观。详情见第13.1.14,“创建索引的语法”

  • 公用表表达式MySQL现在支持公用表表达式,都非递归和递归。公用表表达式可以使用命名的临时结果集,通过实施WITH条款前SELECT报表及其他报表。有关更多信息,参见第13.2.13,“语法(公用表表达式)”

  • 窗函数MySQL现在支持窗口的功能,为每一列的查询,使用该行相关行执行计算。这些包括的功能有:RANK()LAG(),和NTILE()。此外,现有的几种聚合函数现在可以作为窗函数;例如,SUM()AVG()。有关更多信息,参见12.20节,“窗口”功能

  • 正则表达式支持此前,MySQL使用Henry Spencer正则表达式库支持正则表达式运算符(REGEXPRLIKE)。正则表达式支持已重新使用Unicode国际成分(ICU),它提供了全面支持Unicode和多字节安全。这个REGEXP_LIKE()函数执行正则表达式匹配的方式REGEXPRLIKE运营商,现在是该函数的同义词。此外,该REGEXP_INSTR()REGEXP_REPLACE(),和REGEXP_SUBSTR()功能都可以找到匹配的岗位进行子串替换和提取,分别。这个regexp_stack_limitregexp_time_limit系统变量提供的比赛引擎的资源消耗控制。有关更多信息,参见第12.5.2,“正则表达式”。有关如何在使用正则表达式的应用程序可以通过实现变化的影响,看正则表达式的兼容性的考虑

  • 内部临时表这个TempTable存储引擎取代内存存储引擎作为默认的搜索引擎在内存内部临时表。这个TempTable存储引擎提供了高效的存储VARCHARVARBINARY专栏这个internal_tmp_mem_storage_engine会话变量定义的存储引擎在内存内部临时表。允许值诱人的(默认的),MEMORY。这个temptable_max_ram配置选项定义的最大内存量,诱人的存储引擎可以使用在数据存储到磁盘。

  • 登录中.错误日志记录被改写,使用MySQL的组件体系结构。传统的错误日志记录使用内置的组件实现,并记录使用系统日志是一个加载的组件实现。此外,一个可加载JSON写日志是可用的。控制日志组件启用,使用log_error_services系统变量。有关更多信息,参见5.4.2部分,“错误日志”

  • 备份锁一个新的备份锁式允许DML联机备份期间防止可能导致不一致的快照操作。新的备份锁支持LOCK INSTANCE FOR BACKUPUNLOCK INSTANCE语法。这个BACKUP_ADMIN特权是需要使用这些语句。

  • 复制.以下增强功能已作出MySQL复制:

    • MySQL复制现在支持局部更新的二进制日志使用一个紧凑的二进制格式JSON文件,节省空间,在日志上记录完整的JSON文件。这种紧凑的日志时自动完成语句基础测井是在使用中,可以通过设置新的功能binlog_row_value_options系统变量片名:杰森。有关更多信息,参见JSON值部分更新,以及描述binlog_row_value_options

特征中不推荐使用MySQL 8

以下是在MySQL 8的废弃,可能或将在未来的系列删除。在选择显示,应用程序应该更新为使用它们。

对于使用功能在MySQL 8中已被删除过时的应用MySQL系列高,陈述可能失败时,复制从MySQL 8掌握到一个更高的系列的奴隶,或可能对主人和奴隶的不同影响。为了避免这样的问题,使用功能过时的8应用应当修订,避免使用时可能的替代品。

功能删除MySQL 8

以下内容是过时的和已经在MySQL 8中移除。在选择显示,应用程序应该更新为使用它们。

MySQL 5.7应用程序使用功能删除MySQL 8,陈述可能失败时,复制从MySQL 5.7掌握MySQL 8的奴隶,或可能对主人和奴隶的不同影响。为了避免这样的问题,使用功能在MySQL 8中删除应用程序应该修改,避免使用时可能的替代品。

  • 这个information_schema_stats配置的选择,介绍了MySQL 8.0.0,被替换的information_schema_stats_expiry在8.0.3 MySQL。

    information_schema_stats_expiry定义一个过期设置缓存INFORMATION_SCHEMA统计表。有关更多信息,参见8.2.3章节,“优化information_schema查询”

  • 相关的旧代码InnoDB系统表中删除MySQL 8.0.3。INFORMATION_SCHEMA意见的基础上InnoDB系统表的数据字典表的内部系统的观点所取代。影响InnoDBINFORMATION_SCHEMA观点被改名:

    表1.1更名为InnoDB信息架构视图

    老字号新的名字
    INNODB_SYS_COLUMNSINNODB_COLUMNS
    INNODB_SYS_DATAFILESINNODB_DATAFILES
    INNODB_SYS_FIELDSINNODB_FIELDS
    INNODB_SYS_FOREIGNINNODB_FOREIGN
    INNODB_SYS_FOREIGN_COLSINNODB_FOREIGN_COLS
    INNODB_SYS_INDEXESINNODB_INDEXES
    INNODB_SYS_TABLESINNODB_TABLES
    INNODB_SYS_TABLESPACESINNODB_TABLESPACES
    INNODB_SYS_TABLESTATSINNODB_TABLESTATS
    INNODB_SYS_VIRTUALINNODB_VIRTUAL

    升级到MySQL 8.0.3或以后更新任何脚本,参考以前的InnoDBINFORMATION_SCHEMA视图名称

  • 以下功能,账户管理相关的已被删除:

  • 查询缓存已被删除。去除包括这些项目:

    这些过时的查询缓存项目仍然反对,但没有效果,并将在未来的MySQL版本中删除:

    • 这个SQL_CACHE没有任何东西SELECT改性剂

    • 这个ndb_cache_check_time系统变量

    这个have_query_cache系统变量是不赞成的,总是有一个值,并将在未来的MySQL版本中删除。

  • 数据字典提供了关于数据库对象的信息,所以服务器不再检查目录的名称在数据目录中找到数据库。因此,该--ignore-db-dir选项_ dB _ dirs ignore系统变量是多余的和已被删除。

  • 这个tx_isolationtx_read_only系统变量已被删除。使用transaction_isolationtransaction_read_only相反

  • 这个sync_frm系统变量已被删除,因为。FRM你有奖学金

  • 这个secure_auth系统变量-安全- auth客户选项已被删除。这个MYSQL_SECURE_AUTH选择的mysql_options()C API函数被删除。

  • 这个multi_range_count系统变量已被删除

  • 这个log_warnings系统变量警告-日志-服务器选项已被删除。使用log_error_verbosity系统变量来代替

  • 在全球范围内sql_log_bin系统变量已被删除sql_log_bin具有会话范围,并依靠访问应用程序@@global.sql_log_bin应调整

  • 这个metadata_locks_cache_sizemetadata_locks_hash_instances系统变量已被删除

  • 未使用的date_format_ datetime格式time_format,和最大_ _ TMP表系统变量已被删除

  • 这些不兼容的SQL模式已被删除:DB2MaxDBMSSQLmysql323MYSQL40OraclePOSTGRESQL无人驾驶飞机NO_KEY_OPTIONS无选择表。他们可以不再被分配到sql_mode系统变量或作为允许值为mysqldump--compatible选项

    去除MAXDB意味着TIMESTAMP数据类型CREATE TABLEALTER TABLE作为TIMESTAMP,而不再是作为DATETIME

  • 废弃的ASCdesc预选赛GROUP BY条款已被删除。查询以前依靠分类可能产生不同于以前的MySQL版本的结果。产生一个给定的排序顺序,提供ORDER BY条款.

  • 这个EXTENDED分区关键词的EXPLAIN声明已被删除。这些关键词都是不必要的因为他们的作用是始终启用。

  • 这些加密相关的项目已被删除:

    在删除加密功能:对ENCRYPT(),考虑使用SHA2()对于单向散列。对于其他人,可以考虑使用AES_ENCRYPT()AES_DECRYPT()相反

  • 在MySQL 5.7中,几个空间函数在多个名称可被使用在制造空间函数命名空间更一致的方向移动,目标是从每个功能空间的名字ST_如果执行一个精确的操作,或膜生物反应器如果执行基于最小边界矩形的操作。在MySQL 8中,废弃的功能是去除只有相应的离开ST_膜生物反应器功能:

    • 这些功能都有利于去除MBR姓名集装箱Disjoint()equals()Intersects()overlaps()Within()

    • 这些功能都有利于去除ST_姓名area()AsBinary()astext()AsWKB()aswkt(的)Buffer()centroid(的)ConvexHull()(种)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()俄罗斯联邦StartPoint()键()X()y()

    • GLength()有利于消除ST_Length()

  • 描述的功能第12.15.4,”功能,创建几何值从WKB近似值”此前接受要么WKB字符串或几何参数。几何参数不再允许产生一个错误。看到这段迁移远离几何参数查询使用指南。

  • 解析器不再把\N作为一个同义词无效的在SQL语句。使用NULL相反

    这个改变不影响文本文件导入或导出操作完成LOAD DATA INFILESELECT ... INTO OUTFILE,,无效的继续由\N。看到第13.2.7、“LOAD DATA INFILE语法”

  • PROCEDURE ANALYSE()语法是删除

  • 客户端--sslSSL服务器证书验证选项已被移除。使用--ssl-mode=REQUIRED而不是--ssl=1--enable-ssl。使用--ssl-mode=DISABLED而不是--ssl=0--skip-ssl,或-不可控制的。使用--ssl-mode=VERIFY_IDENTITY而不是SSL服务器证书验证选项。服务器端(the--ssl选择保持不变。)

    对于C API,MYSQL_OPT_SSL_ENFORCEMySQL的优化_ _ SSL服务器证书验证_ _ _选择mysql_options()对应的客户端——SSL--ssl-verify-server-cert选项已被删除。使用mysql_opt_ssl_mode一个期权价值SSL_MODE_REQUIREDssl_mode_verify_identity相反

  • 这个--temp-pool服务器选项已被移除

  • 这个--ignore-builtin-innodb服务器选项ignore_builtin_innodb系统变量已被删除

  • 服务器不再执行预MySQL5.1数据库名称中含有特殊字符5.1格式添加了转换#mysql50#前缀.由于这些转换的不再进行,-修复数据库名称--fix-table-names选项mysqlcheck,的UPGRADE DATA DIRECTORY NAME条款的ALTER DATABASE声明,和com_alter_db_upgrade状态变量已被删除

    支持升级只能从一个版本到另一个(例如,5到5.1,或5.1到5.5),所以应该有点剩余的需要年长5数据库名称MySQL版本转换。作为一种变通方法,升级MySQL 5安装MySQL 5.1升级到较新的版本之前。

  • 这个我的意思是程序已经删除MySQL分布。数据目录初始化要执行调用mysqld--initialize--initialize-insecure选项。此外,该——引导选项mysqld这是用我的意思是已被删除,和INSTALL_SCRIPTDIRCMake选择安装位置控制我的意思是已被删除

  • 通用的分割处理程序已从MySQL服务器上删除。为了支持分配给定的表,用于表的存储引擎现在必须提供自己的(本地的分解处理的)。the--partition跳过分区…选项已从MySQL服务器上删除,并分配相关条目不再输出显示SHOW PLUGINS或在INFORMATION_SCHEMA.PLUGINS

    两MySQL存储引擎目前提供本地分区支持—InnoDBNDB这些,只有这些InnoDB在MySQL 8的支持。任何试图创建分区表在MySQL 8中使用的任何其他存储引擎失灵。

    影响升级使用其他存储引擎的分区表直接升级InnoDB(如MyISAM)从MySQL 5.7(或更早)到MySQL 8是不支持的。有两个选项处理这样一个表:

    至少一个操作刚上市的必须为每个分区的非执行—InnoDB升级服务器,MySQL 8之前的表。否则,这种表无法使用升级后。

    由于创建表的语句会在分区表使用的存储引擎没有分区支持现在的失败与错误的结果(er_check_not_implemented),你必须确保在转储文件的任何陈述(如写的mysqldump)从旧版本的MySQL,你希望导入到MySQL 8的服务器上创建分区表也没有指定一个存储引擎等MyISAM没有本地分区处理。你可以通过执行以下:

    • 删除任何引用分区CREATE TABLE语句中使用的值存储引擎选择比其他InnoDB

    • 指定的存储引擎InnoDB,或允许InnoDB作为默认的表的存储引擎。

    有关更多信息,参见第22.6.2,分区限制有关存储引擎”

  • 系统状态变量的信息不再是保持在INFORMATION_SCHEMA。这些表已被删除:_全局变量SESSION_VARIABLES全球_地位SESSION_STATUS。使用相应的绩效模式表代替。看到第25.11.13,绩效模式系统变量表”,和第25.11.14,“性能模式状态变量表”。此外,该show_compatibility_56系统变量已被删除。它被用来在过渡期系统状态变量信息时information_schema桌子被移到性能模式表,并且不再需要。这些状态变量已被删除:Slave_heartbeat_periodslave_last_heartbeatSlave_received_heartbeatsslave_retried_transactionsSlave_running。他们提供的信息表现模式表是可用的;看迁移到性能模式系统和状态变量表

  • 性能模式setup_timers表已被删除,如有排在performance_timers

  • 这个libmysqld嵌入式服务器库已被删除,随着:

    • 这个mysql_options()mysql_opt_guess_connectionMYSQL_OPT_USE_EMBEDDED_CONNECTION使用MySQL _ _ _ _选择远程连接,和MYSQL_SET_CLIENT_IP选项

    • 这个_配置MySQL--libmysqld-libs嵌入式技术,和--embedded选项

    • 这个CMakeWITH_EMBEDDED_SERVERwith_embedded_shared_library,和INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR选项

    • 的(非法)MySQL--server-arg选项

    • 这个MySqlTest--embedded-server精氨酸-服务器,和--server-file选项

    • 这个mysqltest_embeddedmysql_client_test_embedded测试程序

  • 这个mysql_plugin本已被删除。选择包括加载插件在服务器启动时使用--plugin-load--plugin-load-add选项,或在运行时使用INSTALL PLUGIN声明

  • 以下服务器错误代码不使用已被删除。应用程序,专门为这些错误测试应更新。

    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_SCHEMAINNODB_LOCKSINNODB_LOCK_WAITS表已被删除。使用性能模式data_locksdata_lock_waits表代替

    笔记

    在MySQL 5.7的LOCK_TABLE列在INNODB_LOCKS表和locked_table列在sys图式innodb_lock_waitsx$innodb_lock_waits视图包含组合模式/表名称的值。在MySQL 8的data_locks表和系统架构视图包含单独的架构名称和表名称列。看到第26.4.3.9,“innodb_lock_waits和X innodb_lock_waits美元的看法”

  • InnoDB不再支持压缩临时表。什么时候innodb_strict_mode启用(默认),CREATE TEMPORARY TABLE返回一个错误如果ROW_FORMAT=COMPRESSEDKEY_BLOCK_SIZE指定。如果innodb_strict_mode是残疾人,发出警告和临时表是使用非压缩行格式创建。

  • InnoDB不再创造ISL文件(InnoDB符号链接文件)在创建表空间的数据文件的MySQL数据目录之外。这个innodb_directories选择现在支持定位表空间的数据文件的目录之外创建。

    这一变化,移动远程表空间当服务器脱机手动修改.isl文件不再支持。移动远程表空间文件现在支持的innodb_directories选项。这第15.7.7,“移动表空间文件,当服务器脱机”

  • 以下InnoDB文件格式的配置选项被移除:

    • innodb_file_format

    • innodb_file_format_check

    • innodb_file_format_max

    • innodb_large_prefix

    文件格式的配置选项创建与早期版本兼容表是必要的InnoDB在MySQL 5.1。现在,MySQL 5.1已经达到其产品生命周期结束时,这些选项都不再需要。

    这个FILE_FORMAT柱被撤INNODB_TABLESINNODB_TABLESPACES模式的信息

  • 这个innodb_support_xa系统变量,使支持两相在XA事务提交时,被删除。InnoDB支持两阶段提交在XA事务总是启用。

  • 支持DTrace已被删除。

  • 这个JSON_APPEND()功能已被删除。使用JSON_ARRAY_APPEND()相反

1.5服务器和状态变量和选项添加或删除时,使用在

本节列出服务器变量,状态变量,并选择添加的第一时间,已经被取消了,或者已经在MySQL 8中移除。

选项和变量引入MySQL 8

下面的系统变量,状态变量,并选择新的MySQL 8,并没有被包含在任何以前的版本系列。

选项和变量中不推荐使用MySQL 8

下面的系统变量,状态变量,并选择已在使用MySQL 8。

  • expire_logs_days二进制日志:清除后这几天。过时的MySQL 8.0.3。

  • innodb_undo_tablespaces:,回滚段表空间文件数分之间。过时的MySQL 8.0.4。

  • log_syslog:是否写入错误日志,系统日志。过时的MySQL 8.0.2。

  • symbolic-links:允许对MyISAM表的符号链接。过时的MySQL 8.0.2。

选择和剔除变量在MySQL 8

下面的系统变量,状态变量,并选择已在MySQL 8中移除。

1.6 MySQL的信息来源

本节列出了额外的信息来源,可能会对你有所帮助,如MySQL的网站、邮件列表、用户论坛和互联网中继聊天。

1.6.1 MySQL网站

MySQL的文档的主要网站http://dev.mysql.com DOC。在线和下载的文件格式可用于MySQL参考手册,MySQL连接器,和更多。

MySQL的开发者提供有关新的和即将到来的特征信息为MySQL服务器的博客

1.6.2 MySQL邮件列表

本节主要介绍MySQL邮件列表和提供指导如何表应使用。当你订阅一个邮件列表,你收到的所有贴子列表的电子邮件。你也可以把自己的问题和答案的清单。

订阅或退订的任何邮件列表本节所述,访问lists.mysql.com http:/ / /。对大部分人来说,你可以选择在你的个人消息列表的常规版本,或消化版本你每一天大的消息。

拜托发送订阅或取消订阅的邮件列表中的任何信息,因为这些信息自动分配到其他数千名用户。

您当地的网站可能有一个MySQL邮件列表的用户数量。如果是这样的话,该网站可能有一个本地的邮件列表,以便发出的邮件lists.mysql.com你的网站传播到本地列表。在这种情况下,请联系您的系统管理员可以添加或删除从本地MySQL。

有交通在邮件列表中去在邮件程序中一个单独的邮箱,设置一个过滤器基于消息头。您可以使用List-ID:交付:标题确定列表的邮件

MySQL邮件列表如下:

  • announce

    对于MySQL的新版本发布的名单和相关的程序。这是一个低量表所有的MySQL用户可以订阅。

  • mysql

    对于一般的MySQL的主要讨论列表。请注意,有些话题是更好的讨论更专业的列表。如果你发错误的列表,你可能不会得到一个答案。

  • bugs

    对于那些想了解自上次发布的MySQL或谁要积极参与bug和固定过程中报告的问题列表。看到7节,“如何报告错误或问题”

  • internals

    基于MySQL的代码工作的人的名单。这也是对MySQL开发讨论论坛和发布补丁。

  • mysqldoc

    在MySQL的文档工作的人的名单。

  • benchmarks

    任何性能问题感兴趣的列表。讨论集中在数据库性能(不限于MySQL),还包括更广泛的类别,如内核,性能文件系统、磁盘系统,等等。

  • packagers

    列表讨论打包和分发MySQL。这是通过分配维护用来包装MySQL和确保MySQL看起来尽可能在所有支持的平台和操作系统交流论坛。

  • java

    关于MySQL服务器,java的讨论列表。它主要是用来讨论JDBC驱动程序如MySQL连接器/ J.

  • win32

    关于微软操作系统的MySQL软件的所有主题的列表,如Windows 9x,我,NT,2000,XP,2003。

  • myodbc

    有关连接到ODBC的MySQL服务器的所有主题的列表。

  • gui-tools

    关于MySQL的图形用户界面工具如MySQL Workbench所有主题列表。

  • cluster

    对于MySQL集群的讨论列表。

  • dotnet

    对于MySQL服务器和讨论列表。NET平台。它是MySQL连接器/网主要是相关的。

  • plusplus

    关于编程的C API的MySQL的所有主题列表。

  • perl

    关于MySQL和Perl支持所有的主题列表DBD::mysql

如果你不能得到一个回答你的问题,从一个MySQL邮件列表或论坛,一个选择是从Oracle采购支持。这让你与MySQL开发者直接接触。

下面的MySQL邮件列表是英语以外的其他语言。这些列表不由Oracle。

1.6.2.1指南使用邮件列表

请不要发邮件从您的浏览器中打开HTML模式。许多用户不使用浏览器阅读邮件。

当你回答一个问题,发送到一个邮件列表,如果你认为你的回答要有广泛的兴趣,你可能想寄到列表而不是直接回答谁问个人。尽量让你的回答一般是不够的,除了楼主可能受益于它的人。当你的邮件列表,请确保你的回答是不重复以前的回答。

总结你的回答问题的重要组成部分。不要觉得有义务给整个原始消息。

当答案发送到你个人和不到邮件列表,它被认为是良好的礼仪总结答案并将汇总到邮件列表,其他人可能回应你收到的帮助你解决你的问题的好处。

在MySQL论坛1.6.3 MySQL社区的支持

论坛在http://forums.mysql.com是一种重要的社会资源。很多论坛都是可用的,分为一般类:

  • 迁移

  • MySQL的使用

  • MySQL连接器

  • 编程语言

  • 工具

  • 第三方应用程序

  • 存储引擎

  • MySQL技术

  • SQL标准

  • 商业

在互联网中继聊天(IRC)1.6.4 MySQL社区的支持

除了各种MySQL邮件列表和论坛,你可以找到丰富的互联网中继聊天(IRC)社区的人们。这是最好的网络渠道,目前我们已知的:

其中(见www.freenode.net http:/ / /服务器)

  • #mysql主要是对MySQL的问题,但其他数据库和SQL欢迎提问。关于PHP,Perl,C结合MySQL也很常见。

  • #workbench主要是对MySQL的工作台相关的问题和想法,也是一种满足MySQL Workbench开发的好地方。

1.6.5 MySQL企业

Oracle提供了技术支持,MySQL企业形式。对于依赖于关键业务生产应用的MySQL数据库的组织,MySQL企业是一个商业的订阅服务包括:

  • MySQL企业级服务器

  • MySQL企业监控器

  • 每月的快速更新和季度服务包

  • MySQL的基础知识

  • 全天候的技术支持和咨询

MySQL企业多层次是可用的,让您灵活地选择最符合您需要的服务水平。有关更多信息,参见MySQL企业

1.7如何报告错误或问题

在发布前一个问题的错误报告,请确认它是一个错误,它没有被报道已经:

  • 开始搜索MySQL在线手册http://dev.mysql.com DOC。我们试图通过更新它经常与解决新发现的问题不断的手动起。此外,释放的注释手册可以特别有用,因为它是非常有可能的,新版本包含一个解决你的问题。发行的纸币在给为手动位置是可用的。

  • 如果你得到一个错误的SQL语句,请检查你的语法关系密切。如果你不能找到它的毛病,它极有可能是你的当前版本的MySQL服务器不支持你的语法使用。如果你正在使用的当前版本和手动没有覆盖的语法,你使用MySQL服务器不支持你的说法。

    如果手动覆盖你所使用的语法,但你有一个旧版本的MySQL服务器,您应该检查MySQL改变历史时看到的句法实现。在这种情况下,你必须升级到更新版本的MySQL服务器的选择。

  • 对于一些常见问题的解决办法,看部分B,“问题和常见的错误”

  • 搜索的bug数据库bugs.mysql.com http:/ / /是否已经发现和修正错误。

  • 搜索MySQL邮件列表档案lists.mysql.com http:/ / /。看到第1.6.2,MySQL邮件列表”

  • 你也可以使用www.mysql.com http:/ / / /搜索搜索所有网页(包括手动),位于MySQL网站。

如果你不能在手册中找到答案,错误的数据库,或邮件列表档案,请与您当地的MySQL专家。如果您仍然无法找到你需要的答案,请使用以下准则报告的bug。

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

虫子贴在漏洞数据库bugs.mysql.com http:/ / /这是一个给定的释放是在发行说明中指出纠正。

如果你发现在MySQL服务器的敏感的安全问题,请立即告知发送电子邮件消息。例外:支持客户应报告所有的问题,包括安全漏洞,Oracle支持support.oracle.com http:/ / /

讨论与其他用户的问题,你可以用一个MySQL邮件列表。第1.6.2,MySQL邮件列表”

写一个好的bug报告需要耐心,但做正确的第一时间,节省了我们和你自己的时间。一个好的bug报告,包含错误的一个完整的测试案例,很可能我们将在下一个版本中修复的bug。这部分有助于你写你的报告正确的话,你不要浪费你的时间去做的事情,不可能帮助我们多或根本。请仔细阅读这个章节,并确保所有的信息,这里描述的是包含在您的报告。

优选地,你应该使用最新的开发或生产版本的MySQL服务器在发布前的测试问题。任何人都应该能够利用重复的bugmysql test < script_file在你的测试用例或你包括在报告bug的Shell和Perl脚本运行。任何错误,我们能够重复有很高的机会被固定在一个MySQL释放。

它是最有帮助的时候,一个好的问题描述包含在错误报告。这是给你的,是导致问题的一个很好的例子,说明一切,精确的细节,问题本身。最好的报道是那些包括一个完整的例子显示如何重现bug或问题。看到28.5节,“调试和移植MySQL”

记住,我们应对报表包含过多的信息,它是可能的,但不含太少。人们经常忽略的事实,因为他们认为他们知道问题的原因,认为一些细节并不重要。一个很好的遵循的原则是,如果你怀疑说,状态。这是更快和更难写一对夫妇在你的报告线比等待更长时间的答案,如果我们要求你提供从最初报告失踪的更多信息。

在错误报告中最常见的错误是(一)不包括你所使用的版本的mysql分布数,和(b)不能充分描述平台,MySQL服务器安装(包括平台的类型和版本号)。这些都是高度相关的信息,并在99例100,错误报告是无用的没有他们。我们经常会问这样的问题,为什么不为我工作吗?然后我们发现,要求不在MySQL版本实现的特征,或者说一个bug报告的描述已被固定在新的MySQL版本。错误往往依赖于平台。在这种情况下,它是我们解决任何不知道操作系统和平台的版本号不可能。

如果你编译MySQL从源,也请记住如果是与问题相关的信息提供有关编译器。人们经常发现漏洞在编译器和想问题是MySQL相关。大多数编译器都在发展的所有时间和版本成为更好的版本。确定你的问题取决于你的编译器,我们需要知道你使用的编译器。注意每个编译问题应被视为一个bug和相应报告。

如果一个程序产生错误消息,它包括在你的报告的信息很重要。如果我们试图寻找从档案的东西,这是错误的讯息,报道完全匹配一个程序产生更好的。(甚至lettercase应观察。)最好是复制并粘贴整个错误消息到你的报告。你不应该试图从记忆中重现消息。

如果你用连接器/ ODBC有问题(MyODBC),请尝试生成一个跟踪文件并将其发送你的报告。看到如何报告连接器/ ODBC问题或错误

如果你的报告包括长查询的输出线,您运行的测试用例MySQL命令行工具,可以使输出更具可读性的利用--vertical选择或G语句终止符。这个EXPLAIN SELECT例如在本节稍后演示使用G

请包括以下信息在您的报告:

  • 版本号的MySQL分配你使用(例如,MySQL 5.7.10)。你会发现你正在执行的版本mysqladmin版。这个mysqladmin程序中可以找到bin你的MySQL安装目录下的目录。

  • 该机在你遇到问题的制造商和型号。

  • 操作系统名称和版本。如果你使用Windows,你通常可以得到的名称和版本号,通过双击我的电脑图标,你拉帮助/关于Windows菜单大多数Unix操作系统,你可以通过执行命令得到这个信息uname -a

  • 有时候内存量(真实的和虚拟的)是相关的。如果有疑问,包括这些值。

  • 的内容docs/INFO_BIN从你的MySQL安装文件。此文件包含有关如何配置和编译MySQL。

  • 如果你使用的是MySQL软件的源分布,包括你的名字和编译版本号。如果你有一个二进制分配,包括分配的名字。

  • 如果在编译过程中出现的问题,包括确切的错误信息,也有一些线路在发生错误的文件大约有问题的代码的上下文。

  • 如果mysqld死了,你也应该报告声明坠毁mysqld。你通常可以通过运行得到这个信息mysqld查询启用日志记录,然后在登录后mysqld崩溃。看到28.5节,“调试和移植MySQL”

  • 如果一个数据库表是相关的问题,包括从输出SHOW CREATE TABLE db_name.tbl_name在bug报告。这是一个非常简单的方法来在数据库中获取任何表的定义。这些信息有助于我们创造一个情境匹配一个你所经历的。

  • SQL模式实际上在问题发生的可能很大,所以请报告的价值sql_mode系统变量。用于存储过程、存储功能,并触发物,有关sql_mode价值实际上是一个创建对象时。一个存储过程或函数的SHOW CREATE PROCEDURESHOW CREATE FUNCTION声明显示相关的SQL模式,或者你可以查询information_schema的信息:

    SELECT ROUTINE_SCHEMA, ROUTINE_NAME, SQL_MODE
    FROM INFORMATION_SCHEMA.ROUTINES;
    

    触发器,你可以用这句话:

    SELECT EVENT_OBJECT_SCHEMA, EVENT_OBJECT_TABLE, TRIGGER_NAME, SQL_MODE
    FROM INFORMATION_SCHEMA.TRIGGERS;
    
  • 性能相关的错误或问题SELECT陈述,你应该总是包括输出解释选择…至少,和行数,SELECT语句生成。你还应该包括输出显示创建表tbl_name每个表的参与。您提供的信息越多关于你的情况,更可能的是,有人可以帮你。

    以下是一个很好的错误报告为例。报表运行使用MySQL命令行工具。注意使用的\G语句终止语句,否则提供难读很长的输出线。

    MySQL的&#62;SHOW VARIABLES;MySQL的&#62;SHOW COLUMNS FROM ...\G<output from SHOW COLUMNS>MySQL的&#62;EXPLAIN SELECT ...\G<output from EXPLAIN>MySQL的&#62;FLUSH STATUS;MySQL的&#62;SELECT ...;<A short version of the output from SELECT,
           including the time taken to run the query>MySQL的&#62;SHOW STATUS;<output from SHOW STATUS>
  • 如果在运行时错误或问题mysqld,试图提供一个输入脚本,再现异常。这个脚本应该包括任何必要的源文件。更密切的脚本可以再现你的情况,更好的。如果你能让一个可重复的测试用例,你应该把它上传到被附加到错误报告。

    如果你不能提供一个脚本,你至少应该包括输出mysqladmin变量扩展状态列表在你提供一些对你的系统进行信息报告。

  • 如果你不能产生只有几行的一个测试用例,或者测试表太大被包含在错误报告(超过10行),你应该把你的表使用mysqldump创造一个README文件描述你的问题。创建一个压缩的存档文件使用焦油gzip拉链。在你开始为我们的错误错误报告数据库bugs.mysql.com http:/ / /,单击上载档案的漏洞数据库指令错误报告文件选项卡。

  • 如果你相信MySQL服务器从一个语句产生奇怪的结果,不仅包括结果,而且你的意见是什么结果是应该的,并解释你的观点的基础上,描述。

  • 当你提供问题的一个例子,它是更好地使用表名,变量名,等等,存在于你的实际情况比想出新的名字。这个问题可能是一个表或变量的名称相关。这些情况也许是罕见的,但它是更好的安全比抱歉。毕竟,它应该为你提供了一个例子,用你的实际情况更容易,它是通过各种手段对我们更好。如果您不想在bug报告中被其他人看到的数据,你可以上传使用文件选项卡如前所述。如果信息是最高机密,你不想让它甚至给我们,继续使用其他名称为例,但请把这作为最后的选择。

  • 包括所有给予相关程序的选项,如果可能的话。例如,表明您使用的选项,当你开始mysqld服务器,以及你使用运行MySQL客户端程序的选项。等项目的选项mysqldMySQL,并对配置剧本,往往是关键的解决问题,是非常重要的。它包括他们永远不会是一个坏主意。如果你的问题涉及到一个用语言如Perl或PHP程序,请包括语言处理器的版本号,以及任何模块,程序使用的版本。例如,如果你有一个Perl脚本,使用DBIDBD::MySQL模的版本,包括Perl for the numbers,DBI,和DBD::MySQL

  • 如果你的问题是特权制度有关,请包括输出mysqladmin重装所有的错误信息,当你试图连接。当你测试你的特权,你应该执行mysqladmin加载的版本尝试给你麻烦的程序连接。

  • 如果你有一个漏洞补丁,包括它。但是不要认为补丁都是我们所需要的,或者我们可以使用它,如果你不提供一些必要的信息,如测试用例显示错误,你的补丁修复。或者我们可能不懂我们可以找到与你的补丁问题。如果是这样的话,我们不能使用它。

    如果我们不能验证补丁的确切的目的,我们将不使用它。测试用例可以帮助我们在这里。表明该补丁可以处理所有可能发生的情况。如果我们发现一个疑似病例(甚至稀有),补丁将无法正常工作,它可能是无用的。

  • 关于什么是bug的猜测,为什么它会发生,或者说它取决于通常是错误的。即使MySQL团队无法猜测这样的事情而不首先使用调试器确定一个错误的真正原因。

  • 表明你的bug报告,你核对参考手册和邮件归档让别人知道你有试着自己解决问题。

  • 如果你的数据出现损坏或你的错误你访问一个特定的表时,首先检查你的表CHECK TABLE。如果声明的任何错误报告:

    • 这个InnoDB崩溃恢复机制处理清理当服务器被杀死后重新启动,所以在典型的操作是没有必要的修复表如果你遇到了一个错误InnoDB表,重新启动服务器,看是否还存在问题,或者是否只是在内存中缓存数据误差的影响。如果数据被损坏的磁盘,考虑重启与innodb_force_recovery启用选项使您可以将受影响的表。

    • 对于非事务表,尝试修复它们REPAIR TABLE或与myisamchk。看到5章,MySQL服务器管理

    如果您运行的是Windows,请验证价值lower_case_table_names使用显示变量的lower_case_table_names”声明。这个变量会影响服务器如何处理数据库和表的名称lettercase。对于一个给定的值的影响应描述第9.2.2,“标识符大小写敏感”

  • 如果你经常被损坏的表,你应该尝试找出什么时候和为什么会这样。在这种情况下,在MySQL数据目录的错误日志可能包含一些关于发生了什么信息。(这是与文件.err在后缀名看。)5.4.2部分,“错误日志”。请包括这个文件在您的错误报告任何相关信息。通常mysqld应该从未崩溃的表如果没有杀了它在更新中。如果你能找到原因mysqld死亡,是我们为您提供了一个解决问题容易得多。看到第b.5.1,“如何确定是什么原因造成的问题”

  • 如果可能的话,请下载并安装最新版本的MySQL服务器,检查它是否解决了你的问题。所有版本的MySQL软件进行彻底的测试,应该没有问题。我们相信一切为向后兼容的可能,你应该能够毫无困难的MySQL版本切换。看到2.1.1节,“MySQL版本和配置安装”

1.8 MySQL标准

本节介绍了MySQL如何涉及ANSI/ISO SQL标准。MySQL服务器对SQL标准的扩展,在这里你可以找到它们是什么和如何使用它们。你也可以找到的功能从MySQL服务器丢失的信息,以及如何解决一些差异。

SQL标准已经发展1986以来的几个版本存在。本手册,SQL 92是指在1992发布的标准。SQL:1999年SQL:2003年SQL:2008,和SQL:2011年指的是在相应的年发布的标准版本,最后用最新版本。我们用短语SQL标准标准的SQL意味着在任何时间的SQL标准的版本。

我们的产品主要的目标是继续努力与SQL标准符合性,而不牺牲速度或可靠性。我们不怕添加SQL扩展或非SQL功能支持如果这大大增加了我们的用户群大段大段的MySQL服务器的可用性。这个HANDLER接口是这一战略的一个例子。看到第13.2.4,“HANDLER Syntax”

我们继续支持事务和非事务性数据库来满足关键任务24/7使用Web或测井使用的重。

MySQL服务器最初设计的中型数据库(10-100万行,或100MB的每台)小型计算机系统。今天的MySQL服务器处理千兆字节大小的数据库。

我们的目标不是实时支持,虽然MySQL复制功能提供重要的功能。

MySQL支持ODBC的水平0至3.51。

MySQL支持数据库高可用性集群使用NDBCLUSTER存储引擎。看到7.5、MySQL NDB Cluster NDB簇7.6

我们实现了XML功能,支持大多数W3C XPath标准。看到12.11节,“XML功能”

MySQL支持原生JSON数据类型由RFC 7159定义,并基于ECMAScript标准(ECMA-262)。看到11.6节,“JSON数据类型”。MySQL也实现了由出版前起草的SQL指定SQL / JSON的功能的一个子集:2016年标准;看12.16节,“JSON功能”为更多的信息

选择SQL模式

MySQL服务器可以在不同的SQL模式操作,并能应用这些模式的不同,不同的客户,根据不同的价值sql_mode系统变量。数据库管理员可以设置全局SQL模式相匹配的网站服务器的操作要求,每个应用程序可以设置会话的SQL模式自身的要求。

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

有关设置SQL模式的更多信息,参见第5.1.10,”服务器的SQL模式”

在ANSI模式运行MySQL

运行在ANSI模式启动MySQL服务器,mysqld--ansi选项在标准模式下运行的服务器开始使用下列选项相同:

--transaction-isolation=SERIALIZABLE --sql-mode=ANSI

在运行时达到同样的效果,执行这两个语句:

SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET GLOBAL sql_mode = 'ANSI';

你可以看到,设置sql_mode系统变量“标准”使相关的ANSI方式为所有SQL模式选项:

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选项可以设置事务隔离级别。

看到第5.1.6、“服务器选项”

1.8.1 MySQL扩展标准的SQL

MySQL服务器支持一些扩展,你可能不会找到其他的SQL数据库管理系统。注意,如果你使用它们,你的代码将无法移植到其他SQL服务器。在某些情况下,您可以编写代码,包括MySQL扩展,但仍然是便携式,采用以下形式的评论:

/*! MySQL-specific code */

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

选择/ *!straight_join * / 2从表1,表2…

如果你添加一个版本号!性格,在注释语法只有MySQL版本大于或等于指定的版本号执行。这个key_block_size在下面评论条款只是从MySQL服务器执行5.1.10或更高:

CREATE TABLE t1(a INT, KEY (a)) /*!50110 KEY_BLOCK_SIZE=1024 */;

以下描述的MySQL扩展列表,按类别。

1.8.2 MySQL区别于标准的SQL

我们试图让MySQL服务器遵循ANSI SQL和ODBC SQL标准,但是MySQL服务器执行的操作不同,在某些情况下:

1.8.2.1选择到表的差异

MySQL服务器不支持SELECT ... INTO TABLESybase SQL扩展。相反,MySQL服务器支持INSERT INTO ... SELECT标准的SQL语法,这基本上是同一件事。看到第13.2.6.1,插入…选择“语法”。。。。。。。例如:

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用户定义的变量。相同的语法,也可以在存储过程使用游标变量和局部变量的使用。看到第13.2.10.1,“选择…为语法”

1.8.2.2更新差异

如果你访问一个栏目从桌子上是一个表达更新,UPDATE使用列的当前值。以下语句中设置第二分配COL2到目前(更新)col1价值,而不是原来的2值。结果是,col1COL2有相同的价值。这种行为不同于标准的SQL。

UPDATE t1 SET col1 = col1 + 1, col2 = col1;

1.8.2.3外键的差异

外键的mysql执行不同于在以下关键方面的SQL标准:

  • 如果有在父表中具有相同关键值引用几行,InnoDB行为在外键检查如果其他母行相同的键值不存在。例如,如果你定义了一个限制类型约束,并有几个父行子行,InnoDB不允许任何人父行删除。

    InnoDB进行级联操作通过深度优先算法,基于记录在对应的外键约束指标。

  • FOREIGN KEY引用非约束—独特关键的不是标准的SQL而是InnoDB扩展

  • 如果ON UPDATE CASCADE在更新设置空递归更新相同的表它曾在相同的级联更新,就像RESTRICT。这意味着你不能使用自我参照级联更新ON UPDATE SET NULL运营这是为了防止无限循环产生的级联更新。一个自我指涉删除设置空,另一方面,是可能的,是一种自我参照ON DELETE CASCADE。连锁经营不能嵌套超过15层。

  • 在一个SQL语句,插入,删除或更新多行,外键约束(如独特的约束)检查排排。执行外键检查时,InnoDB设置共享行级锁,孩子或父母的记录,它必须检查。MySQL外键约束立即检查;检查不推迟提交事务。根据SQL标准,违约行为应暂缓检查。那是,约束只检查后全部的SQL声明已被处理。这意味着它是不可能删除一行,是指本身使用外键。

有关如何InnoDB存储引擎处理外键,看第15.8.1.6,“InnoDB和外键约束”

——没有

标准的SQL使用C语法/* this is a comment */评论,和MySQL服务器支持这种语法以及。MySQL也支持这种语法,使MySQL特定的SQL嵌入注释扩展,如9.6节”中,语法”

使用标准的SQL--作为一个开始评论序列。MySQL服务器使用#当开始注释字符。MySQL服务器也支持的一个变种--评论风格。那是的——开始评论序列必须遵循的一个空间(或由一个控制字符,如换行符)。空间是需要防止与自动生成的SQL查询使用的构造等问题,我们在自动插入的支付价值payment

UPDATE account SET credit=credit-payment

考虑到如果发生什么payment有一个负价值如- 1

UPDATE account SET credit=credit--1

credit--1是SQL中的有效表达,但——被解释为注释的开始,表达式的一部分被丢弃。结果是一个声明,已经比预期的完全不同的含义:

UPDATE account SET credit=credit

声明在所有产生的价值没有变化。这说明,允许评论开始--会有严重的后果

使用我们的实施需要一个空间在--它被公认为MySQL服务器开始评论序列。因此,信用卡1使用安全

另一个安全的特点是:MySQL命令行客户端忽略行开始与--

1.8.3 MySQL如何处理约束

MySQL可以让你的工作与事务表允许回滚和非事务性表,不。因此,约束处理是一个有点不同,在MySQL中比在其他数据库管理系统。我们必须处理的情况下,当你插入或更新很多排在非事务表的更改不能回滚时发生错误。

基本的理念是,MySQL服务器尝试的事情,它可以检测分析的语句而产生错误,并试图恢复从发生的任何错误而执行语句。我们这样做,在大多数情况下,但不是所有。

选择MySQL发生错误时要站在中间或声明收回以及可能的问题和继续。默认情况下,服务器是后者。这意味着,例如,服务器可能会强迫无效的值最接近的有效值。

一些SQL模式可供选择,在坏数据处理和是否继续执行语句或中止错误发生时提供更大的控制。使用这些选项,您可以配置MySQL服务器采取更传统的方式,就像其他DBMS,拒绝不正确的输入。SQL模式可以设置在服务器启动影响所有客户。个人客户可以设置SQL模式运行时,使每一个客户选择最适合其要求的行为。看到第5.1.10,”服务器的SQL模式”

下面描述的是MySQL服务器处理不同类型的限制。

1.8.3.1主键和唯一索引约束

通常情况下,错误的发生数据更改语句(如INSERTUPDATE),将违反主键、唯一键,或外键约束。如果您使用的是事务性存储引擎等InnoDB,MySQL会自动回滚语句。如果您使用的是非事务性存储引擎,MySQL停止处理语句的行为发生错误留下任何剩余行生。

MySQL支持IGNORE关键词INSERTUPDATE,等等。如果你使用它,MySQL忽略主键或唯一键的违规行为并继续下一行的处理。看到部分的声明,你用的是(第13.2.6,“插入语法”第13.2.12,“更新语法”我知道,和四)

你可以得到关于实际插入或更新行的数量信息mysql_info()C API函数。你也可以使用SHOW WARNINGS声明。看到第27.7.7.36,MySQL _信息()”,和第13.7.6.40,“显示警告语法”

只有InnoDB支持外键的表。看到第15.8.1.6,“InnoDB和外键约束”

1.8.3.2对外键约束

外国的钥匙让你交叉引用相关数据表之间,和外资的关键约束有助于保持这种传播的数据一致。

MySQL支持ON UPDATE在删除外键引用CREATE TABLEALTER TABLE声明.可用的参考作用限制(默认),CASCADE设置空,和NO ACTION

SET DEFAULT也是由MySQL服务器支持但目前拒绝无效的InnoDB。因为MySQL不支持延迟约束检查,没有行动作为RESTRICT。通过外键MySQL支持精确的语法,看第13.1.18.6,“使用外键约束”

MATCH FULL部分匹配,和MATCH SIMPLE是允许的,但应避免使用,因为他们使MySQL服务器忽略任何在删除ON UPDATE使用同样的语句比赛选项不在MySQL中有任何其他的作用,这作用加强MATCH SIMPLE语义全职

MySQL要求外键列的索引;如果你创建外键约束的表没有索引在一个给定的列创建索引。

你可以从获得外键信息INFORMATION_SCHEMA.KEY_COLUMN_USAGE表举一个例子,查询该表所示:

MySQL的&#62;SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME&#62;FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE&#62;WHERE REFERENCED_TABLE_SCHEMA IS NOT NULL;-------------- --------------- ------------- ----------------- | table_schema | table_name | column_name | constraint_name | -------------- --------------- ------------- ----------------- FK1 | |中| myuser_id | F | FK1 | | product_order | customer_id | F2 | FK1 | | product_order | product_id | F1 | -------------- --------------- ------------- ----------------- 3行集(0.01秒)

关于对外键InnoDB表格也可以发现在INNODB_FOREIGNINNODB_FOREIGN_COLS表,在information_schema数据库

只有InnoDB支持外键的表。看到第15.8.1.6,“InnoDB和外键约束”,对具体信息的外键的支持InnoDB

而约束无效数据

默认情况下,MySQL是宽恕的无效或不当的数据值,并强迫他们为数据输入有效值。但是,您可以启用严格的SQL模式选择更传统的治疗坏值,服务器将拒绝和中止它们发生的声明。看到第5.1.10,”服务器的SQL模式”

本节描述了默认行为(原谅)MySQL,以及严格的SQL模式如何不同。

如果你不使用严格的模式,那么当你插入一个不正确的值的列,如NULL不为空柱或过大的数值为一个数值列,MySQL设置列的最佳价值而不是产生一个错误:下面的规则更详细地描述这是如何工作的:

  • 如果你试图保存的范围值为数值列,MySQL服务器而不是存储零,最小的可能值,或最大的可能值,取最接近的值无效。

  • 对于字符串,MySQL存储空字符串或尽可能多的字符串可以存储在列。

  • 如果你想存储一个字符串,不能以数字开头为数字列,MySQL服务器存储0。

  • 无效值ENUMSET列如处理第1.8.3.4,“枚举和约束”

  • MySQL允许你存储一些不正确的日期值DATEDATETIME列(如“2000-02-31”'2000-02-00')。在这种情况下,当一个应用程序没有启用严格的SQL模式,它在存储之前验证数据中的应用。如果MySQL可以存储和检索日期值完全相同的值,MySQL存储了。如果日期是完全错误的(在服务器的存储能力,特别是)日期值'0000-00-00'存储在列代替

  • 如果你去商店NULL成列,不需要无效的值,发生错误的单排INSERT报表。为多行INSERT语句或INSERT INTO ... SELECT报表,MySQL服务器存储列数据类型的隐式的默认值。总的来说,这是对于数值类型,空字符串('')为字符串类型,和日期和时间类型的值。隐式的默认值的讨论11.7节,“数据类型的默认值”

  • 如果一个INSERT语句指定一列没有值,MySQL插入默认值如果列定义包括一个明确的默认条款.如果没有这样的定义DEFAULT子句,MySQL插入的列的数据类型的隐式的默认值。

在非严格模式下使用前面的规则的原因是,我们不能检查这些条件直到语句开始执行。我们不能只回滚如果我们遇到一个问题更新几行后,因为存储引擎可能不支持回滚。终止语句的选择不是很好;在这种情况下,将更新成功的一半,这可能是最坏的情况。在这种情况下,它是更好的尽你所能做到最好然后继续若无其事

你可以选择更严格的处理的输入值,通过使用STRICT_TRANS_TABLESSTRICT_ALL_TABLESSQL模式:

SET sql_mode = 'STRICT_TRANS_TABLES';SET sql_mode = 'STRICT_ALL_TABLES';

STRICT_TRANS_TABLES使事务性存储引擎严格的模式,也在一定程度上为非事务性的引擎。它的工作原理是这样的:

  • 对于事务性存储引擎,坏数据值出现在一份声明中任何导致语句中止并回滚。

  • 对于非事务性存储引擎,声明中止如果错误发生在第一行被插入或更新。(排在第一位,出现错误时,声明可以中止离开桌子不变,只是作为一个事务表。)后的第一个不中止语句行的错误,因为表已由第一排了。相反,坏的数据值的调整导致警告而不是错误。换句话说,与STRICT_TRANS_TABLES一个错误的值,导致MySQL回滚到目前为止所做的所有更新,如果可以做到不改变表。但一旦表已经改变,进一步的错误导致的调整和警告。

更严格的检查,使STRICT_ALL_TABLES。这是一样的STRICT_TRANS_TABLES但对于非事务性存储引擎,错误终止语句甚至以下第一排成行的坏数据。这意味着,如果出现错误,通过多行插入或更新一个非事务表,一部分更新的结果。早期行插入或更新,但那些从错误的点都没有。为了避免这种对非事务表,可以使用单排的陈述或其他人使用STRICT_TRANS_TABLES如果转换的警告而不是错误是可接受的。为了避免在首位的问题,不要使用MySQL查询栏目内容。它是安全的(通常更快)让应用确保它只通过有效值数据库。

无论是严格的模式选项,你可以导致错误被视为警告用INSERT IGNORE更新忽略而不是INSERTUPDATE没有忽略

1.8.3.4枚举和约束

ENUMSET列提供定义只能包含一个给定的值的列的一个有效途径。看到第11.4.4,“类型”,和第11.4.5,“集合式”

严格模式启用(见第5.1.10,”服务器的SQL模式”),一个定义ENUMSET柱作为价值进入柱的约束。发生了一个错误的价值观,不满足这些条件:

  • 一个ENUM值必须是那些在列定义中列出,或内部的数值相等。该值不能误差值(即0或空字符串)。一列定义为ENUM('a','b','c')例如,值&#39; &#39;'d',或“斧”无效和被拒绝

  • SET值必须为空字符串或只包含在列定义中用逗号分隔值列值。一列定义为SET('a','b','c')例如,值“D”'a,b,c,d'无效和被拒绝

无效值误差可抑制严格模式如果你使用INSERT IGNORE更新忽略。在这种情况下,将生成警告,而不是一个错误。为ENUM,的值插入错误的成员()。是SET,值插入给定的除了任何无效的子串被删除。例如,一、X、B、Y”在一个价值的结果'a,b'

1.9学分

以下部分列出了开发商,贡献者,这有助于使今天的MySQL是支持者。

1.9.1贡献的MySQL

虽然甲骨文公司和/或其子公司拥有全部版权的MySQL serverMySQL手册我们要认识到,那些已经到了一种或另一种贡献MySQL distribution。作者列在这里,在一些随机的顺序:

  • gianmassimo vigazzola

    Win32 / NT初始端口。

  • 每Eric Olsson

    建设性的批评和动态记录格式测试。

  • 伊雷娜pancirov

    港口以及Borland Win32汇编。mysqlshutdown.exemysqlwatch.exe

  • 戴维J.休斯

    为了努力使一个共享SQL数据库。在TCX,MySQL AB的前身,我们开始mSQL,但发现它不能满足我们的目的,所以我们写了一个SQL接口应用程序生成器unireg。mysqladminMySQL客户是在很大程度上影响了他们的计划mSQL相对应的人.我们已经付出了很多努力,使MySQL语法的一个超集mSQL。许多API的想法是借用mSQL为了方便港自由mSQL程序MySQL API。MySQL软件不包含任何代码mSQL。分布在两个文件(_ test.c客户端/插入client/select_test.c)是基于相应的(noncopyrighted)中的文件mSQL分布,但改为例展示必要的转换代码的变化mSQL这是mysql服务器。(mSQL版权所有David J. Hughes。)

  • 林奇

    帮助我们获得www.mysql.com http:/ / /

  • 弗莱德林德伯格

    建立邮件处理MySQL邮件列表和令人难以置信的帮助我们管理MySQL邮件列表。

  • 伊戈尔罗曼年科

    mysqldump(以前msqldump,但移植和增强蒙蒂)。

  • 尤里达里奥

    为了保持和扩大MySQL OS / 2端口。

  • 提姆Bunce

    作者mysqlhotcopy

  • 泽科科莫克尼克

    斯洛文尼亚语言分类

  • “tamito”

    这个_MB字符集的宏和ujis和SJIS字符集。

  • 约书亚沙马

    并行插入底座,扩展数据的语法,调试NT,并回答在MySQL邮件列表。

  • 伊夫早

    mysqlaccess,程序显示一个用户的访问权限。

  • 琼斯(为科技有限公司)

    对于一个早期的JDBC驱动程序。

  • 朱博士江东骁坤开尔文

    一个早期的JDBC驱动程序和其他MySQL相关的java工具的进一步发展。

  • 詹姆斯·库珀

    建立一个可搜索的邮件列表归档在他的网站。

  • 瑞克mehalick

    xmysql,一个图形化的X客户端的MySQL服务器。

  • 道格西斯克

    提供MySQL的RPM包的Red Hat Linux。

  • diemand亚历山大v.

    在Red Hat Linux Alpha提供MySQL的RPM包。

  • 安东尼pamies橄榄

    提供大量的MySQL客户端和英特尔SPARC RPM版本。

  • 周杰伦沃斯

    提供MySQL 3.21 rpm版本。

  • 戴维面前的

    DNS主机名的想法,安全检查。

  • 魏柔陈

    中国一些支持(繁体)字。

  • 渭河

    很多中国人的功能(GBK)字符集。

  • 简pazdziora

    捷克的排序

  • 齐弗·苏拉斯基

    FROM_UNIXTIME()时间格式,ENCRYPT()功能,和野牛顾问.活跃的邮件列表成员。

  • 卢克·德波尔

    移植(和扩展)的基准测试套件DBI/介质阻挡放电。有很大的帮助crash-me运行基准测试。一些新的功能。这个_ setpermission MySQL脚本

  • 亚历克西斯mikhailov

    用户自定义函数(UDF);CREATE FUNCTIONDROP FUNCTION

  • 安德烈亚斯F. Bobak

    这个AGGREGATE用户定义的功能扩展

  • 罗斯Wakelin

    帮助建立InstallShield为mysql-win32。

  • 叶忒罗莱特III

    这个libmysql.dll图书馆

  • 杰姆斯pereria

    mysqlmanager,用于管理MySQL服务器Win32 GUI工具。

  • 科特桑普森

    移植到MIT pthreads NetBSD /α和NetBSD 1.3/i386。

  • 马丁ramsch

    在MySQL实例教程。

  • 史蒂夫·哈维

    制作mysqlaccess更安全

  • 建筑上的IA-64系统持久性中心私人有限公司

    帮助与MySQL服务器Win64的港口。

  • 艾伯特的下巴的年轻

    配置更新Tru64,大文件的支持和更好的TCP wrappers支持。

  • 约翰比勒尔

    仿真pthread_mutex()我们/ 2

  • 本杰明pflugmann

    扩展MERGE表处理插入。活跃的成员在MySQL邮件列表。

  • 乔斯林Fournier

    优秀的发现和报告无数错误(特别是在MySQL 4.1查询代码)。

  • 马克Liyanage

    保持OS X软件包和提供有价值的反馈如何创建OS X软件包。

  • 罗伯特·卢瑟福

    提供QNX港宝贵的信息和反馈。

  • 以前开发商NDB集群

    许多人以各种方式参与暑期学生、硕士论文的学生,员工。共有100多人在这里提及太多。值得注意的是Ataullah Dabaghi一直到1999贡献了第三的代码库周围。也特别感谢为它提供了很多的建筑基础积木NDB簇斧头系统开发商,信号和事故跟踪功能。也应该归功于那些相信的想法不够分配他们的开发预算从1992到现在的时间。

  • 谷歌公司

    我们要认识到谷歌公司的MySQL分配贡献:Mark Callaghan的SMP性能补丁和其他补丁。

其他设备:contributors,bugfinders和James H.汤普森,Maurizio Menghini针,tryc Wojciech,卢卡贝拉,zarko mocnik博尼斯哈尼克,WIM,艾玛,,Ted Deppner迈克,hyvatti Simons,杰克。

和错误报告/补丁从邮件列表上列出的许多人。

一个大的敬意去那些帮助我们回答对MySQL邮件列表的问题:

documenters 1.9.2 and;

下面的人帮我们写MySQL的文档和翻译文件或错误消息在MySQL。

  • 迪布瓦

    制作本手册正确理解持续的帮助。这包括重写蒙蒂和戴维试图在英语进入英语,其他人知道它。

  • 基姆aldale

    帮助改写蒙蒂和戴维的早期尝试英语翻译成英语。

  • 迈克尔J. Miller)。

    对于第一个MySQL手册。和许多拼写的常见问题/语言修复(变成手动很久以前MySQL)。

  • 燕蔡琳

    第一个翻译的MySQL参考手册简体中文2000年初,BIG5和HK编码的版本为基础。

  • Jay弗莱厄蒂

    大零件的PerlDBI/介质阻挡放电手册中的部分

  • 保罗吧,Ray Loyzaga

    手册的校对

  • 塞里恩吉尔伯特让-马克pouyot

    法国的错误消息

  • Petr Snajdr,

    捷克的错误信息

  • JarosLaw Lewandowsskic

    波兰error messages。

  • roiz Miguel Angel Fernandez

    西班牙error messages。

  • 罗伊-磁墨

    挪威错误消息和MySQL 3.21.xx测试。

  • 帖木儿一bakeyev

    俄罗斯error messages。

  • grassilli &#38;菲利普

    意大利错误消息

  • 德克munzinger

    德国error messages。

  • 比利克斯特凡

    Slovak Error Smessages .

  • 斯特凡saroiu

    罗马尼亚错误消息

  • 彼得费赫尔

    匈牙利-error messages。

  • serqueira罗伯托。

    portuguese error messages。

  • Carsten H.佩德森

    丹麦error messages。

  • 罗朗茨

    荷兰的错误信息,完成早期部分翻译(也是工作的一致性和拼写)。

1.9.3包支持MySQL

以下是一些最重要的API /包/应用创造者/维护人员名单,很多人用MySQL。

我们不能列出每一个可能的包在这里因为列表将方式很难维持。对于其他的软件包,请参阅软件门户在http:/ / / / solutions.mysql.com软件

  • Tim Bunce,鳄鱼笛卡尔

    对于DBD(Perl)接口

  • 安德烈亚斯科宁

    为神话服务器的垂直接口。

  • Jochen Wiedmann

    为了维护PerlDBD::mysql模块

  • Eugene Chan

    移植PHP MySQL服务器。

  • 格奥尔李希特

    MySQL 4.1的测试和bug。新的PHP 3.0mysqli扩展(API)使用及其后版本。

  • 乔凡尼maruzzelli

    移植iodbc(UNIX ODBC)。

  • 沙维尔勒鲁瓦

    占用率作者(由Linux MySQL服务器使用)。

1.9.4工具被用来创建MySQL

以下列出的是一些我们用来创建MySQL的工具。我们用这个来表达我们的感谢那些创造了他们没有这些我们不可能取得今天的MySQL是什么。

  • 自由软件基金会

    我们从他们那里得到了一个很好的编译器(GCC),一个优秀的调试器(GDBlibc图书馆(从我们借strto C得到一些代码工作在Linux)。

  • 自由软件基金会和XEmacs开发团队

    一个真正伟大的编辑/环境。

  • 朱利安西沃德

    作者valgrind一个优秀的内存检查工具,这有助于我们找到很多难以在MySQL中发现错误。

  • 多萝西娅lütkehaus和Andreas Zeller

    DDD(数据显示调试器)是一种优良的图形前端GDB

1.8.5支持MySQL

虽然甲骨文公司和/或其子公司拥有全部版权的MySQL serverMySQL手册我们要认识到,以下的公司,这有助于我们金融的发展MySQL server,如支付我们开发一个新的功能或给我们开发的硬件MySQL服务器

  • Van Linux / Andover.Van Linux

    基金复制

  • nusphere

    对MySQL手册编辑。

  • 鹳设计工作室

    在1998-2000年MySQL网站。

  • 因特尔

    有助于开发在Windows和Linux平台。

  • 康柏

    有助于在Linux /α-发展。

  • swsoft

    在嵌入式开发mysqld版本

  • futurequest

    这个--skip-show-database选项