MySQL中文参考手册MySQL学习教程_第1页
MySQL中文参考手册MySQL学习教程_第2页
MySQL中文参考手册MySQL学习教程_第3页
MySQL中文参考手册MySQL学习教程_第4页
MySQL中文参考手册MySQL学习教程_第5页
已阅读5页,还剩450页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MySQL中文参考手册(适用版本:MySQL3.23.7alpla)目录目录 11MySQL 的一般信息 121.1什么是 MySQL? 131.2关于本手册 141.2.1本手册中使用的约定 141.3MySQL 的历史 151.4MySQL 的主要特征 161.5MySQL的稳定性? 171.6顺应2000年(Year2000compliance) 191.7SQL一般信息和教程 211.8 有用的MySQL相关链接 221.8.1教程 221.8.2Perl相关链接 221.8.3MySQL

讨论论坛 221.8.4支持

MySQL

的商业应用 221.8.5SQL客户程序 221.8.6支持MySQL的Web

开发工具 231.8.7用

MySQL

支持的数据库设计工具 231.8.8使用MySQL工具的Web服务器 231.8.9对其他程序的扩充 241.8.10通过其他程序使用MySQL 241.8.11ODBC有关的链接 241.8.12API有关的链接 241.8.13其它MySQLx有关的链接 241.8.14SQL和数据库接口 25

1.8.15使用MySQL的例子 25

1.8.16

一般的数据库链接 262 MySQL邮件列表及如何提问或报告错误 262.1  MySQL 邮件列表 262.2 提问或报告错误 282.3 怎样报告错误或问题 282.4 在邮件列表上回答问题的指南 323  MySQL的许可证和技术支持 323.1  MySQL的许可证政策 323.2 MySQL使用的版权 33 3.2.1 可能的未来版权改变 343.3 MySQL商业性分发 343.4许可证实例 353.4.1销售使用MySQL的产品 353.4.2 销售MySQL相关的服务 363.4.3  ISP  MySQL 服务 363.4.4 运营一个使用 MySQL的Web服务器 363.5 MySQL的许可证和技术支持费用 373.5.1 付款信息 383.5.2 联系信息 393.6 商业性支持的类型 393.6.1 基本的电子邮件支持 393.6.2 扩展电子邮件支持 403.6.3 登录支持 403.6.4 扩展的登录支持 414安装MySQL 414.1怎样获得MySQL 414.2MySQL支持的操作系统 444.3使用MySQL哪个版本 444.4怎样和何时发布更新版本 464.5安装布局 474.6安装MySQL二进制代码分发 484.6.1LinuxRPM注意事项 504.6.2构造客户程序 514.6.3系统特定的问题 514.7安装MySQL源代码分发 544.7.1快速安装概述 544.7.2运用补丁 564.7.3典型的configure选项 574.8编译问题? 594.9MIT-pthreads注意事项 634.10Perl安装说明 654.10.1在Unix上安装Perl 654.10.2在Win32上安装ActiveStatePerl 664.10.3在Win32上安装MySQLPerl分发 664.10.4使用PerlDBI/DBD接口的问题 674.11系统特定的问题 684.11.1Solaris注意事项 684.11.2Solaris2.7注意事项 704.11.3Solarisx86注意事项 714.11.4SunOS4注意事项 724.11.5Linux注意事项(所有Linux版本) 724.11.6Alpha-DEC-Unix注意事项 774.11.7Alpha-DEC-OSF1注意事项 784.11.8SGI-Irix注意事项 794.11.9FreeBSD注意事项 804.11.10NetBSD注意事项 814.11.11OpenBSD2.5注意事项 814.11.12BSD/OS注意事项 814.11.13SCO注意事项 834.11.14SCOUnixware7.0注意事项 854.11.15IBM-AIX注意事项 864.11.16HP-UX注意事项 864.11.17MacOSX注意事项 874.12Win32注意事项 874.12.1在Win32上安装MySQL 874.12.2在Win95/Win98上启动MySQL 884.12.3在NT上启动MySQL 884.12.4在Win32上运行MySQL 904.12.5用SSH从Win32连接一个远程MySQL 914.12.6MySQL-Win32与UnixMySQL比较 924.13OS/2注意事项 944.14TcX二进制代码 954.15安装后期的设置和测试 964.15.1运行mysql_install_db的问题 1004.15.2启动MySQL服务器的问题 1024.15.3自动启动和停止MySQL 1044.15.4选项文件 1054.16升级/降级MySQL时有什么特别的事情要做? 1074.16.1从一个3.22版本升级到3.23 1084.16.2从一个3.21版本升级到3.22 1094.16.3从一个3.20版本升级到3.21 1094.16.4升级到其他体系结构 1105MySQL与标准的兼容性? 1125.1 MySQL对ANSISQL92扩充 1125.2以ANSI模式运行MySQL 1145.3MySQL相比ANSISQL92的差别 1145.4MySQL缺乏的功能 1155.4.1子选择 1155.4.2SELECTINTOTABLE 1165.4.3事务处理 1165.4.4存储过程和触发器 1165.4.5外键 1165.4.6视图 1175.4.7'--'作为一个注释的开始 1175.5MySQL遵循什么标准? 1185.6怎样处理没有COMMIT/ROLLBACK 1186MySQL存取权限系统 1216.1权限系统做什么 1216.2MySQL用户名和口令 1216.3与MySQL服务器连接 1216.4使你的口令安全 1236.5 MySQL提供的权限 1246.6权限系统工作原理 1266.7存取控制,阶段1:连接证实 1296.8存取控制,阶段2:请求证实 1326.9权限更改何时生效 1346.10建立初始的MySQL权限 1346.11向MySQL增加新用户权限 1366.12怎样设置口令 1396.13Accessdenied错误的原因 1406.14怎样使MySQL安全以对抗解密高手 1437MySQL语言参考 1457.1文字:怎么写字符串和数字 1457.1.1字符串 1457.1.2数字 1477.1.3十六进制值 1487.1.4NULL值 1487.1.5数据库、表、索引、列和别名的命名 1487.2用户变量 1507.3列类型 1517.3.1列类型存储需求 1547.3.2数字类型 1547.3.3日期和时间类型 1547.3.4串类型 1557.3.5数字类型 1557.3.6日期和时间类型 1577.3.7字符串类型 1637.3.8为列选择正确的类型 1687.3.9列索引 1687.3.10多列索引 1687.3.11使用来自其他数据库引擎的列类型 1707.4用在SELECT和WHERE子句中的函数 1707.4.1分组函数 1717.4.2常用的算术操作 1717.4.3位函数 1727.4.4逻辑运算 1737.4.5比较运算符 1747.4.6字符串比较函数 1777.4.7类型转换运算符 1797.4.8控制流函数 1807.4.9数学函数 1817.4.10字符串函数 1877.4.11日期和时间函数 1957.4.12其他函数 2037.4.13与GROUPBY子句一起使用的函数 2077.5CREATEDATABASE句法 2097.6DROPDATABASE句法 2097.7CREATETABLE句法 2097.7.1隐含的列说明改变 2157.8ALTERTABLE句法 2157.9OPTIMIZETABLE句法 2187.10DROPTABLE句法 2187.11DELETE句法 2197.12SELECT句法 2197.13JOIN句法 2237.14INSERT句法 2257.15REPLACE句法 2287.16LOADDATAINFILE句法 2287.17UPDATE句法 2357.18USE句法 2357.19FLUSH句法(清除缓存) 2367.20KILL句法 2377.21SHOW句法(得到表,列等的信息) 2377.22EXPLAIN句法(得到关于SELECT的信息) 2437.23DESCRIBE句法(得到列的信息) 2477.24LOCKTABLES/UNLOCKTABLES句法 2487.25SETOPTION句法 2497.26GRANT和REVOKE句法 2517.27CREATEINDEX句法 2547.28DROPINDEX句法 2557.29注释句法 2557.30CREATEFUNCTION/DROPFUNCTION句法 2567.31MySQL对保留词很挑剔吗? 2568MySQL教程 2598.1连接与断开服务者 2598.2输入查询 2608.3常用查询的例子 2648.3.1列的最大值 2658.3.2拥有某个列的最大值的行 2658.3.3列的最大值:按组:只有值 2668.3.4拥有某个字段的组间最大值的行 2668.3.5使用外键 2688.4创造并使用一个数据库 2708.4.1创建并选用一个数据库 2718.4.2创建一个数据库表 2728.4.3将数据装入一个数据库表 2738.4.4从一个数据库表检索信息 2758.4.5使用多个数据库表 2918.5获得数据库和表的信息 2938.6以批处理模式使用mysql 2948.7双胞胎项目的查询(实例) 2968.7.1找出所有非独处的双胞胎 2968.7.2显示关于双胞胎近况的表 2999MySQL服务器功能 3009.1MySQL支持哪些语言? 3009.1.1用于数据和排序的字符集 3009.1.2增加一个新的字符集 3019.1.3多字节字符支持 3029.2更新日志 3039.3MySQL数据库表可以有多大? 3039.4MySQL数据库表类型 30410从MySQL得到最大的性能 30610.1优化概述 30610.2系统/编译时和启动参数的调节 30710.2.1编译和链接怎样影响MySQL的速度 30710.2.2磁盘问题 30810.2.3调节服务器参数 31010.2.4MySQL怎样打开和关闭数据库表 31410.2.5在同一个数据库中创建大量数据库表的缺点 31410.2.6为什么有这么多打开的表? 31510.2.7MySQL怎样使用内存 31510.2.8MySQL怎样锁定数据库表 31610.2.9数据库表级锁定的问题 31710.3使你的数据尽可能小 31810.4MySQL索引的使用 31910.5存取或更新数据的查询速度 32010.5.1估计查询性能 32110.5.2SELECT查询的速度 32210.5.3MySQL怎样优化WHERE子句 32210.5.4MySQL怎样优化LEFTJOIN 32410.5.5MySQL怎样优化LIMIT 32410.5.6INSERT查询的速度 32510.5.7UPDATE查询的速度 32610.5.8DELETE查询的速度 32710.6选择一种表类型 32710.6.1静态(定长)表的特点 32810.6.2动态表的特点 32810.6.3压缩表的特点 32910.6.4内存表的特点 33010.7其他优化技巧 33010.8使用你自己的基准测试 33210.9设计选择 33210.10MySQL设计局限/折衷 33310.11可移植性 33310.12我们已将MySQL用在何处? 33411MySQL基准套件 33512MySQL实用程序 33712.1各种MySQL程序概述 33712.2管理一个MySQL服务器 33912.3从MySQL数据库和表中倒出结构和数据 34012.4从文本文件导入数据 34312.5MySQL压缩只读表生成器 34513维护MySQL安装 35313.1使用myisamchk进行表的维护和崩溃恢复 35313.1.1myisamchk调用语法 35413.1.2myisamchk内存使用 35613.2建立一个数据库表维护规范 35613.3获得关于一个表的信息 35713.4使用myisamchk进行崩溃恢复 36413.4.1怎样检查表的错误 36513.4.2怎样修复表 36513.4.3表优化 36713.5日志文件维护 36714为MySQL增加新函数 36814.1增加一个新的用户定义函数 36814.1.1UDF的调用顺序 36914.1.2参数处理 37114.1.3返回值和出错处理 37214.1.4编译并安装用户定义函数 37314.2增加一个新的原生函数 37415为MySQL增加新过程 37615.1analyse过程 37615.2编写一个过程 37616MySQL对ODBC的支持 37616.1MyODBC支持的操作系统 37616.2怎样报告MyODBC的问题 37716.3已知可用MyODBC工作的程序 37716.4怎样填写ODBC管理程序的各种域 37916.5怎样在ODBC中获得一个AUTO_INCREMENT列的值 38016.6报告MyODBC的问题 38117与一些常用程序一起使用MySQL 38117.1与Apache一起使用MySQL 38118问题和常见错误 38218.1如果MySQL总是崩溃怎么办 38218.2使用MySQL时的一些常见错误 38318.2.1MySQLserverhasgoneaway错误 38318.2.2Can'tconnectto[local]MySQLserver错误 38418.2.3Host'...'isblocked错误 38618.2.4Toomanyconnections错误 38618.2.5Outofmemory错误 38718.2.6Packettoolarge错误 38718.2.7Thetableisfull错误 38718.2.8Commandsoutofsyncinclient错误 38818.2.9Ignoringuser错误 38818.2.10Table'xxx'doesn'texist错误 38818.3MySQL怎样处理一个溢出的磁盘 38918.4如何从一个文本文件运行SQL命令 38918.5MySQL在哪儿存储临时文件 38918.6怎样保护“/tmp/mysql.sock”不被删除 39018.7Accessdenied错误 39018.8怎样作为一个一般用户运行MySQL 39018.9怎样重新设置一个忘记的口令 39118.10文件许可权限问题 39218.11文件没找到 39218.12使用DATE列的问题 39318.13时区问题 39418.14在搜索中的大小写敏感性 39418.15NULL值问题 39418.16alias问题 39518.17从关联的表中删除行 39618.18解决没有匹配行的问题 39618.19与ALTERTABLE有关的问题 39718.20怎样改变一张表中列的顺序 39819用MySQL解决一些常见问题 39819.1数据库复制 39819.2数据库备份 39919.3在同一台机器上运行多个MySQL服务器 40020MySQL客户工具和API 40120.1MySQLCAPI 40220.2CAPI数据类型 40220.3CAPI函数概述 40520.4CAPI函数描述 40920.4.1mysql_affected_rows() 40920.4.2mysql_close() 41020.4.3mysql_connect() 41120.4.4mysql_change_user() 41120.4.5mysql_create_db() 41320.4.6mysql_data_seek() 41320.4.7mysql_debug() 41420.4.8mysql_drop_db() 41420.4.9mysql_dump_debug_info() 41520.4.10mysql_eof() 41620.4.11mysql_errno() 41820.4.12mysql_error() 41820.4.13mysql_escape_string() 41920.4.14mysql_fetch_field() 42020.4.15mysql_fetch_fields() 42120.4.16mysql_fetch_field_direct() 42220.4.17mysql_fetch_lengths() 42320.4.18mysql_fetch_row() 42420.4.19mysql_field_count() 42520.4.20mysql_field_seek() 42720.4.21mysql_field_tell() 42720.4.22mysql_free_result() 42820.4.23mysql_get_client_info() 42820.4.24mysql_get_host_info() 42820.4.25mysql_get_proto_info() 42920.4.26mysql_get_server_info() 42920.4.27mysql_info() 43020.4.28mysql_init() 43120.4.29mysql_insert_id() 43120.4.30mysql_kill() 43220.4.31mysql_list_dbs() 43220.4.32mysql_list_fields() 43320.4.33mysql_list_processes() 43420.4.34mysql_list_tables() 43520.4.35mysql_num_fields() 43520.4.36mysql_num_rows() 43720.4.37mysql_options() 43820.4.38mysql_ping() 43920.4.39mysql_query() 44020.4.40mysql_real_connect() 44120.4.41mysql_real_query() 44320.4.42mysql_reload() 44420.4.43mysql_row_seek() 44420.4.44mysql_row_tell() 44520.4.45mysql_select_db() 44520.4.46mysql_shutdown() 44620.4.47mysql_stat() 44720.4.48mysql_store_result() 44720.4.49mysql_thread_id() 44820.4.50mysql_use_result() 44920.4.51为什么在mysql_query()返回成功后,mysql_store_result()有时返回NULL? 45020.4.52我能从查询中得到什么结果? 45120.4.53我怎样能得到最后插入的行的唯一ID? 45120.4.54链接CAPI的问题 45220.4.55怎样制作一个线程安全的客户 45220.5MySQLPerlAPI 45320.5.1DBI与DBD::mysql 45320.5.2DBI接口 45320.5.3更多的DBI/DBD信息 46020.6MySQLEiffel包装 46020.7MySQLJava连接(JDBC) 46020.8MySQLPHPAPI 46120.9MySQLC++APIs 46120.10MySQLPythonAPI 46120.11MySQLTCLAPI 46121怎样对比MySQL与其他数据库 46121.1怎样对比MySQL与mSQL 46121.1.1怎样将mSQL的工具转换到MySQL 46421.1.2mSQL和MySQL的客户机/服务器通讯协议有何不同 46421.1.3mSQL2.0的SQL句法与MySQL有何不同 46521.2怎样对比MySQL与PostgreSQL 4681MySQL 的一般信息这是MySQL参考手册;它记载了MySQL版本3.23.7-alpha。MySQL

是一个快速、多线程、多用户和强壮的SQL数据库服务器。对Unix和

OS/2

平台,MySQL基本上是免费的;但对微软平台,你在30

天的试用期后必须获得一个MySQL

许可证。详见第三节MySQL许可证和技术支持。MySQL 主页提供有关MySQL的最新信息。对于MySQL能力的讨论,详见1.4MySQL 的主要特征。对于安装指南,见4安装 MySQL。对于有关移植MySQL到新机器或操作系统的技巧,参见G对移植到其他系统的说明。有关从

3.21

版升级的信息,详见4.16.2从一个 3.21 版本升级到 3.22 。MySQL的入门教程,见8MySQL 教程。SQL和基准信息的例子,见基准目录(在分发中的'sql-bench'目录)。对于新特征和错误修复一个历史记录,见DMySQL的变迁。对于当前已知错误和功能缺陷的一张列表,见EMySQL已知错误和设计缺陷。未来计划,见F我们想要在未来加入到MySQL 的计划表( TODO )。这个计划的所有贡献者的名单,见CMySQL 的贡献者。重要:将臭虫(错误)报告、问提和建议发到邮件列表(原文未提供)。对源代码分发,mysqlbug

脚本可在‘scripts’目录下找到。对二进制的分发,mysqlbug可在‘bin’目录下找到。如果你有任何关于这本手册的增补或修正的任何建议,请将它们发给手册小组(docs@ )。1.1什么是 MySQL?MySQL是一个真正的多用户、多线程SQL数据库服务器。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用SQL语言为一个网站检索产品信息及存储顾客信息,同时MySQL也足够快和灵活以允许你存储记录文件和图像。MySQL

主要目标是快速、健壮和易用。最初是因为我们需要这样一个SQL服务器,它能处理与任何可不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度更快,MySQL就开发出来。自1996年以来,我们一直都在使用MySQL,其环境有超过

40

个数据库,包含

10,000个表,其中500多个表超过7百万行,这大约有100

个吉字节(GB)的关键应用数据。MySQL建立的基础是业已用在高要求的生产环境多年的一套实用例程。尽管MySQL仍在开发中,但它已经提供一个丰富和极其有用的功能集。MySQL的官方发音是“MyEssQueEll”(不是

MY-SEQUEL

)。1.2关于本手册目前这本手册有Texinfo、普通文本、Info、HTML、PostScript和

PDF

等格式的版本。因为它们的长度,PostScript和

PDF

版本没有包括在主要的MySQL分发中,但是可从 获得单独的下载。主要的文档是Texinfo文件,

HTML版本自动地用一个texi2html改进版本生成。普通文本和Info版本用makeinfo生成。Postscript版本由texi2dvi和dvips生成。PDF

版本用pdftex生成。本手册由DavidAxmark,Michael(Monty)Widenius,PaulDuBoisandKimAldale维护。而其他的贡献者,见CMySQL贡献者。1.2.1本手册中使用的约定这本手册使用了一定文字格式的约定:constant/固定宽度固定宽度字体用于命令名字和选择、SQL语句、数据库、表和列命名、C

Perl

代码、环境变量。例如:“为了了解mysqladmin如何工作,用--help选项调用它”。'文件名'有包围引号的固定宽度字体用于文件名和路径。例如:“发行版本被安装在'/usr/local/'目录下”。'c'有包围引号的固定宽度字体也用于指明字符序列。例如:“要指定一个通配符,使用'%'字符”。斜体斜体的字体被用于强调,likethis。粗体

粗体用于存取权限名字(例如,“不要轻易授权process权限”)并表达特别强调。当命令显示出准备由一个特定的程序执行时,程序由命令所显示的提示符指出。例如,shell>表明你从你的登录外壳执行一个命令,而mysql>表明你从mysql客户执行命令:shell>在这键入一个shell命令mysql>在这里键入一个mysql命令shell命令用

Bourne

shell语法显示。如果你正在使用csh风格的外壳,你可能需要用略微不同的方式发出命令。例如,设置一个环境变量和运行一个命令的序列在

Bourne

shell语法看起来像这样:shell>VARNAME=valuesome_command对于csh,你将执行这样的序列:shell>setenvVARNAMEvalueshell>some_command数据库、表和列名字经常必须被代入命令中。为表明这种代入是必要的,本手册使用db_name、tbl_name和col_name。例如,你可能看到象这样的语句:mysql>SELECTcol_nameFROMdb_name.tbl_name;这意味着如果你想输入类似的语句,你将提供你自己数据库、表和列的名字,也许像这样:mysql>SELECTauthor_nameFROMbiblio_db.author_list;SQL语句可以写成大写或小写的。当本手册显示SQL语句时,如果讨论这些关键字,大写被用于特定的关键字(强调它们)而小写被用于语句的其他部分。因此你可能在讨论SELECT语句时看到如下显示:mysql>SELECTcount(*)FROMtbl_name;另一方面,在讨论COUNT()函数时,语句将写成这样:mysql>selectCOUNT(*)fromtbl_name;如果不有意地特别强调,所有的关键字一律写成大写。在句法描述中,方括号('['和']')被用来表示任选的词或子句:DROPTABLE[IFEXISTS]tbl_name当一个语法元素由很多选择组成时,各选择用垂直线分开('|')。当可能从一组选择中选择一个成员时,选择在方括号内被列出。当必须从一组选择中选择一个成员时,选择在花括号内被列出('{'和'}'):TRIM([[BOTH|LEADING|TRAILING][remstr]FROM]str){DESCRIBE|DESC}tbl_name{col_name|wild}1.3MySQL 的历史我们曾经开始打算利用mSQL用我们自己的快速底层(ISAM)实用程序连接我们的数据库表,然而,在一些测试以后我们得到出结论:mSQL对我们的需求来说不够快速和灵活。这导致了一个连接我们数据库的新SQL接口,但它几乎有与mSQL相同的应用编程接口。选择这个应用编程接口以方便第三方的代码移植。MySQL名字的由来不是非常清楚。我们的基目录和很多的库和工具具有前缀“my”已超过10年历史,然而,Monty的女儿(年轻几岁的)也被命名"my"。因此其中哪一个原因给MySQL起了这个名字仍然是一个谜,甚至对我们。1.4MySQL 的主要特征下表描述MySQL一些重要的特征:使用核心线程的完全多线程。这意味着它能很容易地利用多CPU(如果有)。C

、C++、

Eiffel

Java、

Perl、

PHP、Python、和

TCL

API。见20MySQL 客户工具和 API。可运行在不同的平台上,见4.2MySQL支持的操作系统。多种列类型:1、

2、

3、4、和

8

字节长度的有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、TIMESTAMP、YEAR、SET和ENUM类型。见7.3列类型。利用一个优化的一遍扫描多重联结(one-sweepmulti-join)非常快速地进行联结(join)。在查询的SELECT和WHERE部分支持全部运算符和函数,例如:mysql>SELECTCONCAT(first_name,"",last_name)FROMtbl_nameWHEREincome/dependents>10000ANDage>30;通过一个高度优化的类库实现SQL函数库并且像他们能达到的一样快速,通常在查询初始化后不应该有任何内存分配。全面支持SQL的GROUPBY和ORDERBY子句,支持聚合函数(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。支持ANSISQL的LEFTOUTERJOIN和ODBC语法。你可以在同一查询中混用来自不同数据库的表。(与版本

3.22一样

)。一个非常灵活且安全的权限和口令系统,并且它允许基于主机的认证。口令是安全的,因为当与一个服务器连接时,所有的口令传送被加密。ODBCforWindiws95。所有的

ODBC

2

.

5

函数和其他许多函数。例如,你可以用Access连接你的

MySQL服务器。见16MySQL  ODBC 支持。具备索引压缩的快速B树磁盘表。每个表允许有16个索引。每个索引可以由1~16个列或列的一部分组成。最大索引长度是

256

个字节(在编译MySQL时,它可以改变)。一个索引可以使用一个CHAR或VARCHAR字段的前缀。定长和变长记录。用作临时表的内存散列表。大数据库处理。我们正在对某些包含

50,000,000

个记录的数据库使用MySQL。所有列都有缺省值,你可以用INSERT插入一个表列的子集,那些没用明确给定值的列设置为他们的缺省值。为了可移植性使用

GNU

Automake

,

Autoconf

和libtool。用C和C++编写,并用大量不同的编译器测试。一个非常快速的基于线程的内存分配系统。没有内存漏洞。用一个商用内存漏洞监测程序测试过(purify)。包括myisamchk,一个检查、优化和修复数据库表的快速实用程序,详见13维护 MySQL安装。全面支持ISO-8859-1

Latin1

字符集。例如,斯堪的纳维亚的字符@ringaccent{a},@"aand@"o

在表和列名字被允许。所有数据以

ISO-8859-1

Latin1

格式保存。所有正常的字符串比较是忽略大小写的。根据

ISO-8859-1

Latin1

字符集进行排序(目前瑞典语的方式)。通过在源代码中增加排序顺序数组可以改变它。为了理解一个更高级的排序例子,看一看捷克语的排序代码。MySQL支持可在编译时指定的很多不同的字符集。表和列的别名符合

SQL92

标准。DELETE、INSERT、REPLACE和UPDATE返回有多少行被改变(受影响)。函数名不会与表或列名冲突。例如ABS是一个有效的列名字。对函数调用的唯一限制是函数名与随后的“(”不能有空格。详见7.31MySQL对保留字很挑剔吗?。所有MySQL程序可以用选项--help或-?获得联机帮助。服务器能为客户提供多种语言的出错消息,详见9.1MySQL支持哪些语言?。客户端使用TCP/IP

连接或Unix套接字(socket)或NT下的命名管道连接MySQL。MySQL特有的SHOW命令可用来检索数据库、表和索引的信息,EXPLAIN命令可用来确定优化器如何解决一个查询。1.5MySQL的稳定性?本小节回答这样的问题:“MySQL的稳定程度?”和“我能在本项目中依赖MySQL吗?”。这里我们将试图澄清一些问题并且回答似乎很多人关心的更重要的问题。本节已经与从邮件列表(它在报导错误是很活跃的)收集了的信息综合在一起。对TcX,MySQL在我们自1996中期开始的计划中运行没有发生任何问题。当MySQL被更公开地发布时,我们注意到了有一些

“未测试代码”片断很快地被不同于我们的查询方式的新用户发现。每个新版本比前一个都有更少的可移植性问题(尽管每个发行有许多新功能),并且我们希望有可能把下一个版本之一标记为“稳定”的。每个MySQL的发行都是可用的,并且只有当用户使用从“灰色地带”来的代码时才有问题,当然,不知情的用户不能知道灰色地带是什么;本小节尝试揭示我们目前已知的东西。这里的描述涉及MySQL3.

22.x

版本。所有已知和报告的错误都会在最新的版本被更正,除了在错误小节中列出的与“设计n”有关的错误。详见EMySQL已知的错误和设计缺陷。MySQL以多层结构和不同的独立模块编写,这些模块列举在下面以表明它们中的每一个是如何很好地被测试过:ISAM表处理器--稳定它管理所有在MySQL3.22和早期版本中的数据的存储和检索。在所有MySQL版本中,代码中已经没有一个单独(报告的)错误。得到一个损坏的数据库表的唯一已知方法是在一个更新中途杀死服务器,即使这样也不大可能破坏任何数据而不能挽救,因为所有数据在每个查询之间被倒入(flush)到磁盘,而且从来没有一个有关由于MySQL中的错误而丢失数据的错误报告。MyISAM

表处理器--

Beta

这是

MySQL

3.23的新功能,它大部分是基于ISAM表代码但有很多新的有用的功能。语法处理器和词法分析器

--稳定很长时间没有一个在这个系统中的错误报告。C

客户代码--稳定没有已知的问题。在早期的

3.

20版本中,在发送/接收缓冲器的大小上有一些限制。

3.21.x后,现在缓冲器的大小是动态的,可到一个24M的缺省值。标准客户程序--稳定这些包括mysql、mysqladmin和mysqlshow、mysqldump及mysqlimport。基本结构式查询语言--稳定基本SQL函数系统、字符串类和动态内存处理,本系统中未见单独报告的错误。查询优化程序--稳定范围优化程序--

Gamma

Join优化器--稳定锁定--

Gamma

这是非常依赖于系统的,在某些系统上,用标准操作系统锁定(fcntl())有很大问题,在这些情况下,你应该用选项--skip-locking运行MySQL守护程序。当使用NFS挂载的文件系统,已知在一些

Linux

系统上和SunOS上出现问题。Linux

线程--

Gamma

唯一发现的问题式fcntl()调用,它通过使用mysqld的--skip-locking选项解决。一些人已经报告了0.5版中的锁定问题。Solaris

2.5

+

pthreads

--稳定我们在我们的开发工作中使用。MIT-pthreads

(其他系统)--

Gamma

自从

3.20.15版以来,没有报告的错误,而且从3.20.16开始没有已知的错误。在一些系统上,在一些操作是相当慢时(在每查询之间有

1/20秒的睡眠

)有一个“功能失效”。当然,MIT-pthreads

可能使任何事情慢一点,但是基于索引的SELECT语句通常在一个时帧内完成,因此不应该有一个mutex

锁定/线程的把戏。其他线程实现

--

Alpha

-

Beta

移植到其他系统仍然是很新的并且可能有错误,可能是在MySQL中,但是最通常的是线程实现本身。LOADDATA...,INSERT...SELECT--稳定一些人已经认为他们在这里发现了错误,但是这些经常多是误解。请在报告问题前检查手册!ALTERTABLE--稳定在

3.22.12中有小的改变。DBD

--稳定现在由

Jochen

Wiedmann

维护了。mysqlaccess--稳定由

Yves

Carlier

编写并维护。GRANT--

Gamma

MySQL

3.22.12.做了很大改变。MyODBC(使用

ODBC

SDK

2.5

)--

Gamma

它与一些程序似乎工作得很好。TcX

为付费客户提供电子邮件的支持,但是MySQL邮件列表通常提供常见问题的答案,错误通常马上用一个补丁修补,对严重的错误,几乎总是有新的版本发行。1.6顺应2000年(Year2000compliance)MySQL本身己没有2000年有问题(

Y2K

):MySQL使用Unix时间函数并且在2069年前没有日期问题,所有2位年份被认为在1970年到2069年的范围,这意味着如果在一个year类型的列中存储的01,MySQL把它当作2001。所有MySQL日期函数存储在一个文件'sql/time.cc'中,并且很仔细地编码保证是2000年安全的

。MySQL

3.22

和以后的版本,新的YEAR类型的列能在一个字节中存储0年和1901年到2155年,并用使用2或4位显示它们。你可以用一种不是Y2K-safe的方式使用

MySQL应用程序来深入该问题。例如,许多老的应用程序使用2位数字(它有二义性)而非4位数字存储或操作年份,这个问题可能与使用诸如00或99作为“丢失的”值的提示的应用程序混淆起来。很不幸,这些问题可能很难修复,因为不同的应用程序可能由不同程序员编写,其中每一个可能使用了不同的约定和日期处理函数。这里是简单的示范,显示MySQL在

2030

年之前没有任何日期问题。mysql>DROPTABLEIFEXISTSy2k;mysql>CREATETABLEy2k(datedate,date_timedatetime,time_stamptimestamp);mysql>INSERTINTOy2kVALUES("1998-12-31","1998-12-3123:59:59",19981231235959);mysql>INSERTINTOy2kVALUES("1999-01-01","1999-01-0100:00:00",19990101000000);mysql>INSERTINTOy2kVALUES("1999-09-09","1999-09-0923:59:59",19990909235959);mysql>INSERTINTOy2kVALUES("2000-01-01","2000-01-0100:00:00",20000101000000);mysql>INSERTINTOy2kVALUES("2000-02-28","2000-02-2800:00:00",20000228000000);mysql>INSERTINTOy2kVALUES("2000-02-29","2000-02-2900:00:00",20000229000000);mysql>INSERTINTOy2kVALUES("2000-03-01","2000-03-0100:00:00",20000301000000);mysql>INSERTINTOy2kVALUES("2000-12-31","2000-12-3123:59:59",20001231235959);mysql>INSERTINTOy2kVALUES("2001-01-01","2001-01-0100:00:00",20010101000000);mysql>INSERTINTOy2kVALUES("2004-12-31","2004-12-3123:59:59",20041231235959);mysql>INSERTINTOy2kVALUES("2005-01-01","2005-01-0100:00:00",20050101000000);mysql>INSERTINTOy2kVALUES("2030-01-01","2030-01-0100:00:00",20300101000000);mysql>INSERTINTOy2kVALUES("2050-01-01","2050-01-0100:00:00",20500101000000);mysql>SELECT*FROMy2k;++++|date|date_time|time_stamp|++++|1998-12-31|1998-12-3123:59:59|19981231235959||1999-01-01|1999-01-0100:00:00|19990101000000||1999-09-09|1999-09-0923:59:59|19990909235959||2000-01-01|2000-01-0100:00:00|20000101000000||2000-02-28|2000-02-2800:00:00|20000228000000||2000-02-29|2000-02-2900:00:00|20000229000000||2000-03-01|2000-03-0100:00:00|20000301000000||2000-12-31|2000-12-3123:59:59|20001231235959||2001-01-01|2001-01-0100:00:00|20010101000000||2004-12-31|2004-12-3123:59:59|20041231235959||2005-01-01|2005-01-0100:00:00|20050101000000||2030-01-01|2030-01-0100:00:00|20300101000000||2050-01-01|2050-01-0100:00:00|00000000000000|++++13rowsinset(0.00sec)这表示DATE和DATETIME类型将不会有未来日期的任何问题(它们处理日期到

9999

)。TIMESTAMP类型被用来存储当前时间,有一个仅2030-01-01的上限。TIMESTAMP在32位的机器上(有符号值)有一个从1970到2030的范围,在64位机器上它处理时间可达2106(无符号值)。尽管MySQL是顺应Y2K的,但提供无二义性的输入是你的责任。对于MySQL处理二义性日期的输入(包含2位数字年份)的规则,详见Y2K 问题和日期类型。1.7SQL一般信息和教程在MySQL邮件列表上,这本书被多人推荐:JudithS.Bowman,SandraL.EmersonandMarcyDarnovskyThePracticalSQLHandbook:UsingStructuredQueryLanguageSecondEditionAddison-WesleyISBN0-201-62623-3这本书也接受了

MySQL

用户的一些建议:MartinGruberUnderstandingSQLISBN0-89588-644-8PublisherSybex5105238233Alameda,CAUSA1.8 有用的MySQL相关链接1.8.1支持MySQL的Web

开发工具PHP :一种服务器端的嵌入HTML的脚本语言Midgard 应用服务器:基于 MySQL 和 PHP强大的网站开发环境 SmartWorker 是一个Web应用开发平台XSP:e(X)tendible(s)erver(p)ages:是一个用Java 编写的嵌入 HTML的标签语言(以前 XTAGS出名)dbServ:是对Web服务器的扩充,它将到数据库输出集成进你的

HTML编码。你可以在你的输出使用任何

HTML函数,只有客户端能阻止你。它作为独立的服务器或作为

Java

servlet

运行。Chili!Soft 平台无关的ASPMySQL +PHPdemosForwardSQL:操作的MySQL数据库的 HTML 接口WWW-SQL:显示数据库信息Minivend :Web购物车HeiTML:是HTML的服务器端扩充,同时又是一种第四代语言语言Metahtml:一种WWW应用程序的动态编程语言VelocityGenforPerlandTCLHawkeye 因特网服务器套件Linux网络数据库连接WDBI:是作为一个很好支持MySQL数据库的通用前端的Web浏览器WebGroove 脚本: HTML编译器和服务器端脚本语言一种服务器端网站脚本语言怎样在 Solaris 上用Coldfusion使用MySQLCalistra 的 ODBC MySQL管理器Webmerger:这个CGI工具解释文件并且生成基于一套简单标签的动态输出,通过

ODBC

提供MySQL和PostgreSQL的Ready-to-run

驱动程序。PHPclub:PHP

的技巧MySQL 和 Perl 脚本Widgetchuck :网站工具和小配件AdCycle:广告管理软件用MySQL支持的数据库设计工具:"Dezignfordatabases"是使用一个实体关系图表的数据库开发工具( ERD ).1.8.2使用MySQL工具的Web服务器一个 Apache 认证模块TheRoxenChallengerWebserver1.8.3对其他程序的扩充一个有源代码的MySQL的 Delphi 接口.由

Matthias

Fichtner

编写。TmySQL:一个通过Delphi使用MySQL的库Delphi TDataset部件支持BIND(Internel域名服务器)使用 MySQL 的 Sendmail扩充通过Access使用 MySQL 流行的 iODBC 驱动程序( libiodbc )现在以开放源代码获得FreeODBC 主页qpopmysql:一个允许MySQL数据库进行

POP3

认证补丁。还有一个到PaulKhavkine的Procmail补丁的连接,允许任何MTA向MySQL数据库中的用户投递信件。SCMDB:SCMDB

是SCM的一个插件,SCM移植

mysql的C语言库到概念框架(scheme)。利用这个库,框架开发者能连接到一个mySQL数据库并且在他们的程序钟使用嵌入式SQL。2 MySQL邮件列表及如何提问或报告错误2.1  MySQL 邮件列表要订阅主

MySQL

邮件列表,送一条消息到电子邮件地址 mysql-subscribe@ 。要退订主

MySQL

邮件列表,送一条消息到电子邮件地址 mysql-unsubscribe@ 。只有你发送消息的地址是有意义的,消息的主题行和正文将被忽略。如果你的回复地址不是有效的,你可以明确地指定地址。把短横加到订阅或退订命令词,随后是你的地址,“@”由一个字符“=”代替。例如,要订阅到john@host.domain,送一条消息到mysql-subscribe-john=host.domain@。邮寄到 mysql-subscribe@ 或

ezmlm

邮件列表处理器。详细信息可在 ezmlm 网点得到。要想邮寄一条消息到列表本身,发送你的消息到

mysql@。然而,请千万不要将关于订阅或退订的邮件发到mysql@ ,因为送到该地址的任何邮件被自动地被散发到上千个其他用户。你本地的网站可能有很多 mysql@ 的订户,如果这样,也可能有一个本地邮件列表,以便使从

发到你网站的消息被传送到你的本地列表。在这种情况下,请联系你的系统主管加入本地

MySQL

列表和从其中删除。已有下列

MySQL

邮件列表:announce这是MySQL新版本和相关程序的发布通知,这是小信息量的列表,我们认为所有的

MySQL

用户应该订阅。mysql为一般

MySQL

讨论的主列表。请注意一些话题最好在更专业的列表上讨论。如果你邮寄到错误的列表上,你可能得不到回答!mysqldigest文摘形式的mysql列表,这意味着你得到所有单个消息,作为一个大邮件一天发送一次。java

讨论

MySQL

Java

,主要关于

JDBC

驱动程序。javadigest一个文摘版本java

列表。win32

有关微软操作系统上例如

Windows

NT的

MySQL所有东西。win32digest一个文摘版本win32表。myodbc

有关用

ODBC联接

MySQL

的所有东西。myodbcdigest一个文摘版本

myodbc

列表。msql-mysql-modules

关于

MySQL中对Perl支持的一个列表。msql-mysql-modules-digest

一个文摘版本

msql-mysql-modules

列表。developer为开发

MySQL

原代码的人的一个列表。developerdigest一个文摘版本developer列表.你可用上述的方法订阅或退订所有列表。在你的订阅或退订消息中,只是放入不是mysql的适当邮件列表名。例如,订阅或退订myodbc列表,送一条消息到(原文未提供)。2.2 提问或报告错误在邮寄一份错误报告或问题前,请按下列步骤做:由寻找

MySQL

联机的手册开始:我们通过经常以新发现的问题的解决方法更新手册,努力使它是最新的!搜索

MySQL

邮件列表档案: /doc.html 你也可使用 /search.html 寻找在/下的网页(包括手册)。如果你不能在手册或档案发现答案,检查你本地的

MySQL

专家。如果你仍然不能发现你问题的答案,继续读下一节关于怎样发送邮件到(原文未提供)。2.3 怎样报告错误或问题写一份好的错误报告需要耐心,但是第一次就做得正确可节省你我的时间。本节将帮助你正确撰写你的报告,以使你不浪费时间,也可能做一些根本不能帮助我们的事情。如果可能的话,我们鼓励每个人使用

mysqlbug

脚本产生一份错误报告(或关于任何问题的一份报告)。mysqlbug可在源代码分发或二进制分发的

MySQL安装目录下的'bin'目录中的'scripts'目录下找到。如果你不能使用mysqlbug,你仍然应该包括在本节列出的所有必要的信息。mysqlbug

脚本通过自动确定下列很多信息来帮助你生成一份报告,但是如果一些重要的东西不见了,请在你的消息中包含它!请仔细阅读本节并且保证这里描述的所有信息包含在你的报告中。要记住,有可能回复一条包含太多的信息消息,但不回复包含极少信息的消息,因为人们认为他们知道一个问题的原因并且假设某些细节无所谓,所以他们常常忽略事实。一个好的原则是:如果你怀疑所说的事情,继续说!在你的报告中写上几行,比因为第一次没有包含足够的信息而被迫追问和等待答案要快上千倍,而且少些麻烦。最常见的错误是人们不指出他们正在使用的MySQL分发的版本号,或不指出在什么平台上平台安装了

MySQL

(包括平台版本号)。这是极其相关的信息,并且没有它99%错误报告是无用的!我们经常得到这样的提问“为什么它不给我工作?”,然后我们发现所需的功能还没有在该版本的

MySQL

中实现,或在一份报告中描述的一个错误已经在更新的MySQL

版本修正了。有时错误是依赖于平台,在这种情况下,不知道平台操作系统和版本号根本不可能修正任何东西。还要记住,要提供你的编译器信息,如果它与问题有关。人们经常发现错在编译器而认为MySQL的问题。大多数编译器始终都在开发中并且随版本也逐渐变得更好。为了确定决定你的问题是否依赖于你的编译器,我们需要知道使用什么编译器。注意每个编译器得问题应该被认为是一个错误,因此要报告。在错误报告中包含一个问题的完好描述是最有帮助的。即,你所做的导致这个问题的一个好的例子和确切描述的问题本身。最好的报告是包括显示如何再次产生错误或问题的一个完整例子。如果一个程序产生一条错误信息,非常重要的是在你的错误报告中要包含它!如果我们试着从使用程序的档案中找一些东西,最好是报告的错误消息精确地匹配程序所产生的。(甚至注意大小写!)你决不应该试图记住错误消息是什么,相反,将全部消息拷贝并且粘贴进你的报告中!如果你有一个MyODBC问题,你应该尝试产生一个

MyODBC

跟踪文件,详见16.6报告 MyODBC的问题.请记住,将要阅读你报告的人有很多使用80列显示。在产生报告或使用mysql命令行工具的例子时,你应该为那些可能超出显示可用宽度的输出(例如,EXPLAINSELECT语句,见下面的例子)使用--vertical选项(或\G语句终止符)。请在你的报告中包括下列信息:你正在使用的

MySQL

分发的版本号(例如,

MySQL

3.22.22

)。你可以执行mysqladminversion找到你正在运行哪个版本。mysqladmin可以在你的MySQL安装目录的'bin'目录下面找到。你正在使用的机器的制造商和型号。操作系统名字和版本。对大多数操作系统,你可以通过执行一条Unix命令uname

-a得到有关信息。有时存储器的数量(物理和虚拟的)是有意义的,如果有疑问,包含这些值。如果你正在使用一个MySQL源代码分发

,则需要使用的编译器的名称和版本号。如果你有一个二进制代码的分发,就需要该分发的名字。如果问题在编译期间发生,则包含准确的错误消息,并且也包含问题发生的文件中出错代码周围的一些上下文。如果任何数据库表与问题有关,包含从

mysqldump

--db_name

tbl_name1

tbl_name2

…的输出结果。这是很容易做到的,并且它是一个获得有关任何数据库表信息的有效方法,将帮助我们创造一个匹配你所遇到问题的环境。对于与速度或SELECT语句有关的问题,你总是应该包括EXPLAINSELECT...的输出和至少SELECT语句产生的行数。你给出有关你的情况越多的信息,某些人越能帮助你。例如,下列的例子是一份很好的错误报告(当然它应该用与

mysqlbug

脚本邮寄):运行

mysql

命令行工具的例子(注意对其输出超过80列显示设备的语句使用\G终止符):mysql>SHOWVARIABLES;mysql>SHOWCOLUMNSFROM...\G<output-from-SHOW-COLUMNS>mysql>EXPLAINSELECT...\G<output-from-EXPLAIN>mysql>FLUSHSTATUS;mysql>SELECT...;<AshortversionoftheoutputfromSELECT,includingthetimetakentorunthequery>mysql>SHOWSTATUS;<outputfromSHOWSTATUS>如果在运行

MySQL

时是发生问题,尝试一下提供一个重现问题的输入脚本,该脚本应该包括任何必要的源文件,重现你情况的脚本越准确越好。如果你不能提供脚本,你至少应该在你的邮件中包括从

mysqladmin

variablesextended-statusprocesslist的输出以提供你的系统怎样运行!如果你认为

MySQL

产生一个奇怪的查询结果,不仅要包含结果,而且也要包含应该是什么结果的意见和描述你意见所依据的理由。当给出问题的一个例子时,最好使用在你的真实情况下的而不是一个新的变量名、表名等等。这个问题应该与一个变量的名、表等有关!也许这些条件是苛刻的,但是安全比担心更好。不管怎么说,提供使用你实际情况的例子应该比较容易,并且各方面来讲它对我们更好一些。如果你有不想把数据显示别人看,你可使用ftp把它上传到/pub/mysql/secret/。如果数据确实是高度机密的,甚至不想让我们看到它们,那么继续,并提供使用其它名字的例子,但是请注意这是最后选择。如果可能,包括相关程序的所有选项,例如,指明你启动

mysqld

守护程序和运行任何

MySQL

客户程序所使用的选项,对象mysqld和mysql等程序和configure的选项常常是答案的关键和至关重要的!包括他们绝对不是一个坏主意!如果你使用任何模块,例如Perl或PHP,请也包括它们的版本号。如果你不能产生一个行数少的测试,或如果测试表太大,不能寄给邮件列表(超过10行),你应该使用mysqldump倒出(dump)数据库表并且创建“README”文件描述你的问题,用tar和gzip造创建你的文件的一个压缩的档案,并且使用ftp把档案文件转移到/pub/mysql/secret/,然后把问题的简短描述发到mysql@ 。如果你的问题与权限系统有关。请包括mysqlaccess

、mysqladmin

reload的输出和所有尝试连接时得到的错误消息!当你测试你的权限时,你应该首先运行mysqlaccess。在这以后,执行

mysqladmin

reloadversion,最后你应该尝试用你有问题的程序进行连接。

mysqlaccess

可在你的

MySQL

安装目录下的“bin”目录找到。如果你有一个对错误的补丁程序,那最好,但是千万别假设补丁程序是我们需要的一切,或即使你不提供一些必要信息如补丁能修正的错误的前提条件,就可使用它。我们可能发现你的补丁程序问题,或者我们可能根本不理解它。如果是这样,我们不能使用它。在这里测试条件将帮助我们,这意味着补丁程序将处理一切可能出现的情况。如果我们发现了补丁不能工作的边界条件(即使很怪),它可能毫无用处。对错误是什么、为什么发生或它依赖什么的猜测通常是错误的。我们甚至不能在没有首先使用一个调试器以确定一个错误的真正原因时做这种猜测。在你的邮件消息说明你已经检查了参考手册和邮件归档,以便让其他人知道你自己尝试解决你的问题。如果你得到一个parseerror,请仔细检查你的语法!如果你不能它发现有什么不对,极有可能是你当前

MySQL

版本不支持你正在使用的查询。如果你正在使用最新版而且 /doc.html 的参考手册没有涉及你正在使用的语法,

MySQL

就不支持你的查询。在这种情况下,你唯一的选择是自己实现语法并邮寄过来。如果手册涉及你正在使用的语法,但是你有一个更旧版本的

MySQL

,你应该检查

MySQL

的更新历史来找出语法何时被实现。见D MySQL 变迁历史。这时你有升级到一个更新

MySQL版本的选择。如果你有一个这样的问题:当你存取某些特定数据库表时,你的数据好像已破坏或出错,你应该首先用myisamchk检查然后尝试修复你的数据库表。见 13 维护 MySQL 安装.你经常得到破坏了的数据库表,你应该尝试发现这何时和为何发生!此时“mysql-data-directory/'hostname'.err”文件可能包含所发生事情的一些信息。请在你的错误报告包含这个文件的任何有用信息!如果没有在更新当中杀死了mysqld,通常应该绝对不破坏数据库表!如果你能找出mysqld为什么死掉的原因,对于我们,更容易向你提供对问题的修正!如果可能,下载最新版本的

MySQL

,并且检查它是否解决你的问题。MySQL的所有版本都被彻底地测试并且应该毫无问题地运行!我们相信使一切尽可能向后兼容,并且你应该能在数分钟内切换

MySQL

版本!见 4.3 要使用 MySQL 哪个版本。如果你是一个支持客户,请直接邮寄错误报告到适当的邮件列表,看看是否有其他人有这个问题的经验(或许已经解决)。对于报导MyODBC错误的信息,见 16.2 怎样报告 MyODBC 问题。一些常见问题的答案,见 18 问题和常见的错误。当答案个别发给你而不是邮件列表时,总结答案并且将总结发到邮件列表以便其它人可以从你收到的帮助你解决问题的答案中受益,这被认为是一个很好的规矩。2.4 在邮件列表上回答问题的指南如果你认为你的答案引起广泛的兴趣,你可能想要把它寄到邮件列表中而不是直接答复提问的人。试着让你的答案足够普遍,让不是邮寄者的其他人可从它获益。当你邮寄到邮件列表时,请保证你的回答不和以前的答案重复。尝试总结在你的答复中的问题的主要部分,别感觉不好意思引用全部原文消息。请不要从有

HTML

模式的浏览器投寄邮件消息!许多用户不用浏览器读邮件!3  MySQL的许可证和技术支持本章描述

MySQL

许可证和技术支持安排,包括:我们对于非微软和微软操作系统许可证的政策;MySQL

分发遵从的版权(见3.2  MySQL 使用的版权);当申请一个许可证时,演示一个例子(见3.4 许可证实例);许可证和支持费用(见3.5  MySQL 的许可证和技术支持费用),及技术支持的好处(见 3.6 商业性支持的类型);3.1  MySQL的许可证政策针对非微软操作系统如Unix或

OS/2

的许可证的正式条款在 J 针对非微软操作系统的 MySQL 服务器许可证中说明。基本上,我们许可证政策如下:对于一般的内部使用,MySQL通常是免费的。如果你不想,就不必付钱给我们。一个许可证是必需的,如果:你直接销售MySQL服务器或作为其他产品或服务的一部分;你在某些客户那里为了安装和维护一个

MySQL

服务器而收费;你在不可再分发的分发中包括

MySQL并且你对该分发的某些部分收费;在必须有

MySQL

许可证的情况下,对每台运行mysqld服务器的机器,你都需要一个许可证,但多CPU机器按单CPU计算,并且在一台机器上运行

MySQL

服务器的数量或并发连接到这台运行一个服务器的机器的客户数量也无限制!你在商业程序中包含客户代码不需要一个许可证,MySQL的客户端存取部分不属公共领域,mysql命令行客户程序包含在

GNU

通用许可证下的

readline

库的代码。对于已经购买了

10

个许可证或一种足够级别的技术支持的消费者,我们提供附加的功能。目前,这意味着我们提供

myisampack实用工具,它能生成快速的压缩的只读数据库(服务器支持读取这样的数据库,但不包含用于生成它们的压缩工具)。当支持协议产生了足够的收入时,我们将在与MySQL

服务器同样的许可证下发行这个工具。如果你使用不需要一个许可证的

MySQL,但是你的确喜欢

MySQL

并且有志于更进一步的开发,无论如何肯定欢迎你购买一个许可证。如果你在一个商业环境中使用

MySQL以便通过它获利,我们要求你购买一定级别的技术支持以推进开发。我们感到,如果

MySQL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论