逍遥一派 发表于 2015-1-16 22:45:20

MYSQL编程:MySQL中文参考手册5(安装MySQL上)

也许最好的策略是以不变应万变:给客户他们所需要的,不多也不少。如果MySQL学习教程适合他们,他们就不应该买别的工具。事实上,云计算产业一直推崇自助服务,但提供这些服务的公司已经开始认识到解决方案提供商推销他们商品的价值。mysql|参考|参考手册|中文
MySQL中文参考手册5(安装MySQL上)
转载译者:晏子

〖前往〗〖转发〗


译者:晏子(clyan@sohu.com)主页:http://linuxdb.yeah.net
4安装MySQL
本章形貌如何取得并安装MySQL:

关于你能从其取得MySQL的站点列表,见4.1如何取得MySQL。
要懂得撑持哪些平台,见4.2MySQL撑持的操纵体系。
可取得MySQL的多个版本,以二进制代码和源代码情势分发。为了断定你应当利用的分发的版本和范例,见4.4如何和什么时候公布更新版本。
针对二进制代码和源代码分发的安装指令在4.6安装MySQL二进制代码分发和4.7安装MySQL源代码分发报告。每套指令均包括一个关于你大概触及的体系特定成绩的部分。
为安装前期历程,见4.15安装前期的设置与测试。不论你是用一个二进制代码仍是源代码分发来安装MySQL,这些历程均合用。

4.1如何取得MySQL
反省MySQL主页取得以后版本的信息和下载指令。

但是,TcX的因特网链接不是很快的;我们更但愿让你从以下镜象站点之一举行真实的下载。

请向webmaster@mysql.com呈报不存在的或过期的镜像站点。

欧洲:


奥天时[维也纳手艺年夜学]WWWftp
保加利亚ftp
克罗地亚WWWftp
捷克共和国[在Brno的Masaryk年夜学]WWWftp
捷克共和国WWW
丹麦WWW
丹麦WWWftp
爱沙尼亚WWW
法国WWW
芬兰WWW
芬兰ftp
德国[波恩年夜学,波恩]WWWftp
德国WWWftp
德国WWW
德国ftp
希腊WWWftp
IslandWWWWWW
意年夜利WWW爱尔兰WWWftp
波兰WWWftp
葡萄牙WWWftp
俄国WWW
俄国WWWftp
俄国ftp
罗马尼亚WWWftp
罗马尼亚WWWftp
西班牙WWW
瑞典WWWftp
瑞士WWWftp
英国WWWftp英国WWWftp
英国WWWftp
乌克兰WWWftp


北美洲:


加拿年夜WWW/li>
加拿年夜WWWftp
美国WWW
美国WWW
美国WWW

美国WWW
美国[威斯康星年夜学/威斯康星]WWWftp
美国ftp


南美洲:


巴西WWW
智利WWW


亚洲:


中国WWW
中国WWW
朝鲜WWW
日本WWW
日本WWWftp
新加坡WWWftp
中国台湾WWW


澳洲:


澳洲WWWftp
澳洲WWWftp
澳洲WWW
澳洲WWW


非洲:


南非WWW

南非ftp


4.2MySQL撑持的操纵体系
我们利用GNUAutoconf,因而将MySQL移植到一切利用Posix线程和一个C++编译器的古代体系是大概的。(仅仅为了编译客户代码,只必要一个C++编译器而不是线程)。我们次要在SunSolaris(版本2.5&2.6)上利用并开辟软件自己,而RedHatLinux5.0居其次。

MySQL已被呈报鄙人列操纵体系/线程包的组合上乐成地编译。注重,对良多操纵体系,原生的线程撑持仅事情于最新的版本。

有原生线程的AIX4.x
包含MIT-pthreads包的BSDI2.x
有原生线程的BSDI3.0、3.1和4.x
有原生线程的DECUNIX4.x
包含MIT-pthreads包的FreeBSD2.x
有原生程的FreeBSD3.x
包含MIT-pthreads包的HP-UX10.20
有原生线程的HP-UX11.x。
有LinuxThreads0.7.1的Linux2.0+或glibc2.0.7
MacOSX服务器
NetBSD1.3/1.4Intel和NetBSD1.3Alpha(必要GNUmake)
包含MIT-pthreads包的OpenBSD2.x
OS/2Wrap3、FixPack29和OS/2Wrap4、FixPack4
有原生线程的SGIIrix6.x
SPARC和x86上有原生线程的Solaris2.5、2.6和2.7
包含MIT-pthreads包的SunOS4.x
有最新FSUPthreads移植包的SCOOpenServer
SCOUnixWare7.0.1
Tru64Unix
Win95、Win98和NT(只要具有MySQL允许证或MySQL电子邮件撑持的用户可失掉最新版本)。对那些在购置之前想测试的人,我们以共享软件体例公布了MySQL3.21.29(一个较老的版本)。

4.3利用MySQL哪一个版本
起首要作出决议,你是不是想要利用最新的开辟版本或终极的不乱版本:

一般,假如你是第一次入手下手利用MySQL或实验移植它到一些还没有二进制分发体系上,我们保举利用开辟版本(以后3.22.x)。这是由于一般在开辟版本中没用真正严峻的毛病,而且你能简单用你的呆板上的crash-me和基准测试套件来测试它。见10.8利用你本人的基准测试。
不然,假如你正在运转一个老的体系而且想要晋级,可是又不想要用3.22冒险,你应当晋级到3.21.33。我们已试着仅修复致命毛病,而且对谁人版本举行更小的绝对平安的修改。
要做的第二项决议是你是不是想要利用源代码分发或二进制分发:

假如你想在一个已存在一个最新二进制分发的平台上运转MySQL,就用它。一般,这比一个源代码分发更简单安装。
假如你想要浏览(或修正)组成MySQL的C和C++代码,你应当拿到源代码分发。源代码老是终极的手册。源代码分发也比二进制的分发包括更多的测试和实例。
MySQL的定名机制利用由3个数字和一个后缀构成的版本号。比方,一个像mysql-3.21.17-beta的版本号如许注释:

第1数字(3)形貌文件格局。一切版本3的刊行都有不异的文件格局。当一个版本4呈现时,每一个数据库表都将必需转换到新格局(固然,为此有一个很不错的工具)。
第2数字(21)是刊行级别。一般有2种选择。一个是发部/不乱分支(以后为21)而别的是开辟分支(以后22)。一般二者都是不乱的,可是开辟版本大概有偏差,新功效缺少文档或大概在某些体系上编译失利。
第3个数字(17)是在此刊行级其余版本号,这随每一个新分发递增。一般你必要你已选择的刊行(release)的最新版本(version)。
后缀(beta)显现刊行的不乱性级别。大概的后缀有:
alpha标明刊行包括大批未被100%测试的新代码。已知的毛病(一般没有)应当在旧事大节被纪录。见DMySQL变迁的汗青纪录。在年夜多半alpha版本也有新的命令和扩大。
beta意味着一切的新代码被测试了,没有增添主要的新特性,应当没有已知的毛病。
gamma是一个刊行了一段工夫的beta版本,看起来应当运转一般。这就是良多其他公司称为一个公布的器材。
假如没有后缀,这意味着该版本已在良多中央运转一段工夫了,并且没有非平台特定的毛病呈报。这就是我们称为一个不乱版本的器材。
MySQL一切版本都经由我们的尺度测试和基准测试运转,以包管他们可相称平安地利用。由于尺度测试不休扩大以检测之前发明的毛病,测试套件一向在改善当中。

注重,一切版本都最少已用以下套件举行了测试:

一个外部测试套件
这是一个客户临盆体系的一部分。它大概有良多几百个兆字节数据的数据库表。
MySQL基准测试套件
它运转必定局限的经常使用查询。它也是一个测试,检测最新的优化处置是不是真的使代码更快。见10.8利用你本人的基准测试。
crash-me测试
这实验决意数据库撑持甚么功效和它的才能与限定是甚么。见10.8利用你的本人基准测试。
其他测试是在外部的临盆情况中利用最新MySQL版本,最少在一台呆板上。我们有凌驾100GB的数据可用利用。

4.4如何和什么时候公布更新版本
在TcX,MySQL停顿的相称快,而且我们想要与别的MySQL用户分享它。当我们有一个看来别的人仿佛必要的十分有效的功效时,我们就试着制造一个刊行版本。

我们也实验匡助那些必要很简单完成的功效的用户,我们也存眷我们受权的用户想要甚么,我们更出格存眷我们的扩大电子邮件撑持的客户想要甚么,而且全力匡助他们。

没有人必定要下载一个新版本,旧事大节中将告知你新版本是不是有一些你的确想要的器材。见DMySQL变迁的汗青纪录。

当更新MySQL时,我们利用以下目标:

对每一个小的改善,在版本字符串的最初数字增添1。当有次要的新功效或与先前版本比有较小不兼容性时,在版本字符串的第2数字增添1。当文件格局变更时,第1数字加1。
不乱的测试过的版本每一年筹办呈现1-2次,可是假如发明小毛病,只要毛病修复的一个版本将被刊行。
事情版本筹办每1-8周呈现一次。
对一些平台的二进制分发,次要版本由我们制造。其别人能够为其他体系制造二进制分发,可是大概未几见。
一旦我们找到并修复了小毛病,我们一般利用户能够失掉补钉。
对非告急但烦人的毛病,假如他们被发给我们,我们将利用户能够失掉补钉,不然我们将会合很多毛病到一个更年夜的补钉中。
在任何情形下,假如在一个刊行中有一个致命毛病,我们将尽快制造一个新版本。我们想其他公司也如许做。:)
以后的不乱版本是3.22;我们已转移到3.23的主动开辟中。在不乱版本中,毛病仍将被修复。我们不信任一个完整解冻,由于这也留下的毛病修复和“必需做”的事变。“某种水平的解冻”意味着我们能够增添小器材,它“将几近一定不影响已能事情的任何器材”。

4.5安装结构
这节形貌安装二进制代码和源代码分发时创立的缺省目次结构。

二进制分发经由过程在你选择的安装地址(典范的“/usr/local/mysql”)解紧缩来安装,而且在该处创立以下目次:

目次目次的内容
“bin”客户程序和mysqld服务器
“data”日记文件,数据库
“include”包括(头)文件
“lib”库文件
“scripts”mysql_install_db
“share/mysql”毛病动静文件
“sql-bench”基准程序

源代码分发在你设置并编译落后行安装。缺省地,安装步骤将文件安装在“/usr/local”下的以下子目次:

目次目次的内容
“bin”客户程序和剧本
“include/mysql”包括(头)文件
“info”Info格局的文档
“lib/mysql”库文件
“libexec”mysqld服务器
“share/mysql”毛病动静文件
“sql-bench”基准程序和crash-me测试
“var”数据库和日记文件。

在一个安装目次内,源代码安装的结构鄙人列方面分歧于二进制安装:

mysqld服务器被安装在“libexec”目次而不是“bin”目次内。
数据目次是“var”而非“data”。
mysql_install_db被安装在“/usr/local/bin”目次而非“/usr/local/mysql/scripts”内。
头文件和库目次是“include/mysql”和“lib/mysql”而非“include”和“lib”。

4.6安装MySQL二进制代码分发
你必要以下工具安装一个MySQL二进制分发:

GNUgunzip解紧缩分发。
一个得当的tar解包分发。GNUtar已知能够。
在Linux下的另外一个安装办法是利用RPM(RedHat保证理器)分发。见4.6.1LinuxRPM注重事项。

假如你碰着成绩,在把成绩邮寄到mysql@lists.mysql.com时,请老是利用mysqlbug,就算成绩不是一个bug,mysqlbug搜集体系信息,将有助于别的人办理你的成绩。不利用mysqlbug,你将削减失掉你成绩的一个办理计划的大概性!在你解包分发后,你会在“bin”目次下找到mysqlbug。见2.3如何呈报毛病或成绩。

你必需实行以便安装并利用一个MySQL二进制分发的基础命令是:

shell>gunzip<mysql-VERSION-OS.tar.gz|tarxvf-
shell>ln-smysql-VERSION-OSmysql
shell>cdmysql
shell>scripts/mysql_install_db
shell>bin/safe_mysqld&


假如你安装了DBI和Msql-Mysql-modulesPerl模块,你可使用bin/mysql_setpermission剧本增添新用户。

以下是更具体的形貌:

关于安装二进制分发,遵守以下步骤,然后持续到4.15安装前期的设置与测试,举行安装前期的设置和测试:

选择一个你想解开分发包的目次,进进给目次。鄙人面的例子中,我们将分发解包在“/usr/local”下而且创立一个安装MySQL的“/usr/local/mysql”目次。(因而,以下指令假定你有权限在“/usr/local”中创立文件,假如该目次被回护,你必要以root实行安装。)
从4.1如何取得MySQL中列出的站点之一取得一个分发文件。MySQL二进制分发以紧缩的tar文档供应,而且有相似“mysql-VERSION-OS.tar.gz”的名字,这里VERSION是一个数字(比方,3.21.15),且OS标明分发能运转的操纵体系范例(比方,pc-linux-gnu-i586)。
解开分发而且创立立安装目次:
shell>gunzip<mysql-VERSION-OS.tar.gz|tarxvf-
shell>ln-smysql-VERSION-OSmysql

第一个命令创立一个名为“mysql-VERSION-OS”的目次,第二个命令天生到该目次的一个标记链接。这让你更简单地把安装目次指定为“/usr/local/mysql”。

进进安装目次:
shell>cdmysql
你会在mysql目次下发明几个文件和子目次,对安装目标最主要的是“bin”和“scripts”子目次。

“bin”
这个目次包括客户程序和服务器,你应当把这个目次的完全路径加到你的PATH情况变量,以便你的shell能准确的找到MySQL程序。
“scripts”
这个目次包括mysql_install_db剧本,用来初始化服务器存取权限。
假如你想利用mysqlaccess而在某个非尺度的地址有MySQL分发,你必需改动地址,在哪儿mysqlaccess希冀找到mysql客户。编纂“bin/mysqlaccess”剧本,约莫在第18行,寻觅相似上面的行:
$MYSQL=“/usr/local/bin/mysql”; #pathtomysqlexecutable
改动路径以反应出mysql实践存储在你体系上的地址。假如你不如许做,当你运转mysqlaccess时,你将失掉一个brokenpipe的毛病。

制造MySQL受权表(只要在你之前没安装过MySQL是需要的):
shell>scripts/mysql_install_db
注重当你运转时mysql_install_db时,比版本3.22.10老的MySQL版本启动MySQL服务器。这不再是真的了!

假如你想要安装对PerlDBI/DBD接口的撑持,见4.10Perl安装注重事项。
假如你喜好在引诱呆板时主动启动MySQL,你能够拷贝support-files/mysql.server文件到你体系有启动文件的中央。更多的信息能够在support-files/mysql.server剧本中和4.15.3主动启动和中断MySQL找到。
在一切器材被解包而且安装今后,你应当初始化而且测试你的分发。

你能够用以下命令启动MySQL服务器:

shell>bin/safe_mysqld&

见4.15安装前期的设置和测试。


4.6.1LinuxRPM注重事项
在Linux上安装MySQL保举的办法是利用一个RPM文件。MySQLRPM今朝是在一个RedHat5.2体系上创建的,可是应当能事情在撑持rpm且利用glibc的其他Linux版本上。

假如一个RPM文件有成绩,比方Sorry,thehostxxxxcouldnotbelookedup,见4.6.3.1Linux注重事项。

你大概要利用的RPM文件有:

MySQL-VERSION.i386.rpmMySQL服务器。除非你只是想要与运转在其他呆板上MySQL服务器毗连,不然你将必要它。
MySQL-client-VERSION.i386.rpm尺度MySQL客户程序。你大概老是必要安装这个包。
MySQL-bench-VERSION.i386.rpm测试和基准程序。必要Perl和msql-mysql-modulesRPM。
MySQL-devel-VERSION.i386.rpm所需的库和包括文件。假如你想要编译其他MySQL客户程序,比方Perl模块。
MySQL-VERSION.src.rpm包括上述一切包的源代码。它也能被用来实验为其他硬件平台机关RPM(比方,Alpha或SPARC)。
检察一个RPM包中的一切文件:

shell>rpm-qplMySQL-VERSION.i386.rpm
实行一个尺度的最小安装,运转这个命令:

shell>rpm-iMySQL-VERSION.i386.rpmMySQL-client-VERSION.i386.rpm
只安装客户包:

shell>rpm-iMySQL-client-VERSION.i386.rpm
RPM将数据放在“/var/lib/mysql”里,RPM也在“/etc/rc.d/”里创立得当的出口以便在引诱时主动启动服务器。(这意味着假如你之前已安装过,在对它改动之前,你能够把你之前安装的MySQL启动文件做个拷贝,因而你不会丧失修改)。

在安装了RPM文件后,“mysqld”保卫程序应当正在运转,而且如今你应当能够入手下手利用MySQL。见4.15安装前期的设置和测试。

假如一些器材堕落,能够在二进制的安装一节里找到更多的信息。见4.6安装MySQL二进制代码分发。


4.6.2机关客户程序
假如你编译你本人写的或你从第三方取得的MySQL客户程序,他们必需用link命令的-lmysqlclient选项举行链接。你大概也必要指定一个-L选项,告知链接器在哪儿查找库文件。比方,假如库文件安装在“/usr/local/mysql/lib”里,在链接命令上利用-L/usr/local/mysql/lib-lmysqlclient。

对利用MySQL头文件的客户程序,当你编译他们时,你大概必要指定一个-I选项(比方,-I/usr/local/mysql/include),使得编译器能找到头文件。

4.6.3体系特定的成绩
下一节申明在从一个二进制分发安装MySQL时,已在特定的体系上察看到已产生过一些成绩。

4.6.3.1Linux注重事项
MySQL必要最少Linux2.0。

二进制刊行版用-static链接的,这意味着你一样平常不用忧虑你具有的体系库是哪一个版本。你也不用安装LinuxThreads。一个用-static链接的程序比一个静态链接程序稍年夜些但更快(3-5%)。但是,一个成绩是你不克不及利用静态链接的用户界说函数(UDF)。假如你筹办编写或利用UDF函数(这只对C或C++程序员),你必需编译MySQL自己,利用静态链接。

假如你正在利用一个基于libc-的体系(而不是一个glibc2体系),你将大概碰着二进制刊行的主机名剖析和getpwnam()的一些成绩(这是由于glibc不幸地依附于一些包含剖析主机名和getwpent()的内部库,乃至在用-static编译时)。在这类情形下,当你运转mysql_install_db时,你大概失掉以下毛病信息:

sorry,thehostxxxxcouldnotbelookedup
或当你实验以--user选项运转mysqld时的以下毛病:

getpwnam:Nosuchfileordirectory
你能用以下办法之一办理这个成绩:

取得一个MySQL源代码分发(一个RPM或tar分发)而且安装它。
实行mysql_install_db--force;这将不实行mysql_install_db内里的resolveip测试。弱点是你不克不及在受权表中利用主机名字;相反你必需利用IP数字(除localhost)。假如你正在利用一个老的不撑持--force的MySQL版本,你必需用编纂器删除mysql_install中的resolveip测试。
用su启动mysqld而不利用--user。
MySQL的Linux-Intel二进制代码和RPM刊行版是为最高大概的速率而设置的。我们老是勉力利用可用的最快的不乱的编译器。

MySQL的Perl撑持请求Perl5.004_03或更新。

4.6.3.2HP-UX注重事项
针对HP-UX的MySQL二进制分发生发火为一个HPdepot(堆栈)或tar文件格局分发的。为了利用depot文件,你必需运转最少HP-UX10.x以便会见HP的软件堆栈工具。

MySQL的HP版本在运转HP-UX10.20下的HP9000/8xx服务器上编译,而且利用MIT-pthreads。它已知可在这类设置下很好地事情。MySQL3.22.26和更新版也用HP原生线程包机关。

其他能够运转的设置:

运转HP-UX10.20+的HP9000/7xx
运转HP-UX10.30的HP9000/8xx
以下设置几近一定不克不及运转:

运转HP-UX10.x的HP9000/7xx或8xx,x<2
运转HP-UX9.x的HP9000/7xx或8xx
为了安装分发,利用上面的命令之一,这里/path/to/depot是堆栈文件的完全路径:

要安装一切器材,包含服务器、客户和开辟工具:
shell>/usr/sbin/swinstall-s/path/to/depotmysql.full
仅仅安装服务器:
shell>/usr/sbin/swinstall-s/path/to/depotmysql.server
仅仅安装客户软件包:
shell>/usr/sbin/swinstall-s/path/to/depotmysql.client
仅仅安装开辟工具:
shell>/usr/sbin/swinstall-s/path/to/depotmysql.developer
depot在“/opt/mysql”寄存二进制代码和库文件并在“/var/opt/mysql”寄存数据。depot也在“/sbin/init.d”和“/sbin/rc2.d”里创立得当的出口以主动地在引诱时启动服务器。明显,这有需要以root身份来安装。

为了安装HP-UXtar分发,你必需有GNUtar的一个拷贝。

4.7安装MySQL源代码分发
你必要以下工具机关并安装MySQL源代码:

GNUgunzip解紧缩该分发。
一个符合的tar解包分发。GNUtar已知能够事情。
一个能运转的ANSIC++编译器。gcc>=2.8.1、egcs>=1.0.2、SGIC++和SunProC++是一些已知能事情编译器。当使gcc用时,不必要libg++。gcc2.7.x有一个bug,使得它大概不克不及编译一些完整正当的C++文件,比方“sql/sql_base.cc”。假如你唯一gcc2.7.x,你必需晋级gcc才干编译MySQL。
一个优异的make程序。GNUmake老是被保举且偶然必需。假如你有成绩,我们保举试一试GNUmake3.75或更新。
假如你碰到成绩,当向mysql@lists.mysql.com邮寄成绩时,请一向利用mysqlbug。就算成绩不是一个bug,mysqlbug搜集体系信息,将有助于别的人办理你的成绩。假如不利用mysqlbug,你削减失掉关你成绩的一个办理计划的大概性!在你解包分发后,你会在“scripts”目次下找到mysqlbug。见2.3如何呈报毛病或成绩。

4.7.1疾速安装概述
你必需实行的安装MySQL源代码分发的基础命令是(从一个解包的tar文件):

shell>configure
shell>make
shell>makeinstall
shell>scripts/mysql_install_db
shell>/usr/local/mysql/bin/safe_mysqld&

假如你从一个源代码RPM入手下手,那末实行以下命令。

shell>rpm--rebuildMySQL-VERSION.src.rpm
如许你制造一个能够安装的二进制RPM。

假如你安装了DBI和Msql-Mysql-modulesPerl模块,你能够使用bin/mysql_setpermission剧本增添新用户。

以下是更具体的形貌:

为了安装源代码分发,依照以下步骤,然后持续到4.15安装前期的设置与测试,举行安装前期的初始化与测试。

选择一个你要在其上面解包分发的目次,而且进进该目次。
从节4.1如何取得MySQL中列出的站点之一取得一个分发文件。MySQL源代码分发以紧缩的tar档案供应,而且有相似于“mysql-VERSION.tar.gz”的名字,这里的VERSION是一个相似3.23.7-alpha的数字。
在以后目次下解包分发:
shell>gunzip<mysql-VERSION.tar.gz|tarxvf-
这个命令创立名为“mysql-VERSION”的一个目次。

进进解包分发的顶级目次:
shell>cdmysql-VERSION
设置刊行版本而且编译:
shell>./configure--prefix=/usr/local/mysql
shell>make

当你运转configure时,你大概想要指定一些选项,运转./configure--help失掉一张选项表。4.7.3典范的configure选项会商一些很有效的选项。假如configure失利,你将发送包括你以为能帮你办理该成绩的“config.log”的邮件,假如configure非常加入,也要包含configure的最初几行输入。用mysqlbug剧本邮寄毛病呈报。见2.3如何呈报毛病和成绩。假如编译失利,见节4.8编译成绩?,匡助办理良多罕见成绩。

安装一切器材:
shell>makeinstall
你大概必要root用户来运转这个命令。

制造MySQL受权表(只要你之前没安装MySQL是必须的):
shell>scripts/mysql_install_db
注重,在运转mysql_install_db时,那些比3.22.10旧的MySQL版本启动MySQL服务器。如今不是如许了!

假如你想要安装对PerlDBI/DBD接口的撑持,见4.10Perl安装注重申明。
假如你想要MySQL在你引诱呆板时主动地启动,你能够拷贝support-files/mysql.server到你的体系中有启动文件的中央。更多的信息能够在support-files/mysql.server剧本里和4.15.3主动启动和中断MySQL找到。
在一切器材安装完今后,你应当初始化而且测试你的分发。

你能够用以下命令启动MySQL服务器,这里BINDIR是safe_mysqld被安装的目次(缺省为“/usr/local/bin”):

shell>BINDIR/safe_mysqld&

假如这个命令提醒mysqlddaemonended并即刻失利,那末你能在文件“mysql-data-directory/hostname.err”找到一些信息。大概的缘故原由是你已有别的一个正在运转的mysqld服务器。见19.3在统一台呆板上运转多个MySQL服务器。

拜见4.15安装前期的设置与测试。

4.7.2使用补钉
偶然补钉呈现在邮件列表上或放在MySQLFTP地址的补钉区。

为了利用来自邮件列表的一个补钉,保留补钉呈现在文件的动静,进进你的MySQL源代码树的顶级目次并运转这些命令:

shell>patch-p1<patch-file-name
shell>rmconfig.cache
shell>makeclean

来自FTP地址的补钉是作为一般文本文件或作为被紧缩了的gzip文件分发。使用一个文本的补钉如上述邮件列表补钉,为了利用一个紧缩的补钉,进进你的MySQL源代码树顶级目次并运转这些命令:

shell>gunzip<patch-file-name.gz|patch-p1
shell>rmconfig.cache
shell>makeclean

在利用一个补钉今后,依照一般的源代码安装的指令,入手下手./configure步骤。在运转makeinstall后,重启你的MySQL服务器。

在运转makeinstall前,你大概必要封闭一切正在运转的服务器(利用mysqladminshutdown)。假如一个程序的新版本替换以后正在实行的版本,一些体系不同意你安装它。

4.7.3典范的configure选项
configure剧本给你一个很年夜的把持权来怎样设置你的MySQL分发。典范地,你利用configure命令行的选项举行。你也能够用准确的情况变量感化于configure。关于一个由configure撑持的选择列表,运转这个命令:

shell>./configure--help
一些更经常使用的configure选项见上面的形貌:

只编译MySQL客户库和客户程序而不是服务器,利用--without-server选项:
shell>./configure--without-server
假如你没有一个C++编译器,mysql将不编译(有一个客户程序必要C++)。在这类情形下,你能够往失落configure内里测试C++编译器的代码,然后运转带有--without-server选项的./configure。编译步骤步将仍旧实验机关mysql,可是你能够疏忽任何干于“mysql.cc”的告诫。(假如make中断,尝尝make-k告知它即便堕落持续剩下的机关步骤)。

假如你不想要位于“/usr/local/var”目次上面的日记(log)文件和数据库,利用相似于以下configure命令的一个:
shell>./configure--prefix=/usr/local/mysql
shell>./configure--prefix=/usr/local--localstatedir=/usr/local/mysql/data

第一个命令改动安装前缀以便任何器材被安装在“/usr/local/mysql”上面而非缺省的“/usr/local”。第二个命令保存缺省安装前缀,可是掩盖了数据库目次缺省目次(一般是“/usr/local/var”)而且把它改/usr/local/mysql/data.

假如你正在利用Unix而且你想要MySQL的套接字位于缺省地址之外的某个中央(一般在目次“/tmp”或“/var/run”,利用象如许的configure的命令:
shell>./configure--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
注重给出的文件必需是一个相对路径!

假如你想编译静态链接程序(比方,制造二进制分发、取得更快的速率或与办理与RedHat分发的一些),像如许运转configure:
shell>./configure--with-client-ldflags=-all-static--with-mysqld-ldflags=-all-static

假如你正在利用gcc而且没有安装libg++或libstdc++,你能够告知configure利用gcc作为C++编译器:
shell>CC=gccCXX=gcc./configure
当你利用时gcc作为C++编译器是,它将不试图链接libg++或libstdc++。假如机关失利而且发生有关编译器或链接器的毛病,不克不及创立共享库“libmysqlclient.so.#”(“#”是一个版本号),你能够经由过程为configure指定--disable-shared选项来办理此成绩。在这类情形下,configure将不机关一个共享libmysqlclient.so.#库。

你能够设置MySQL关于非NULL的列不利用DEFAULT列值(即,不同意列是NULL)。这招致INSERT语句发生一个毛病,除非你明白地为一切请求非NULL值的列指定值。为了克制利用缺省值,如许运转configure:
shell>CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS./configure
缺省地,MySQL利用ISO-8859-1(Latin1)字符集。为了改动缺省设置,利用--with-charset选项目:
shell>./configure--with-charset=CHARSET
CHARSET能够是big5、cp1251、cp1257、czech、danish、dec8、dos、euc_kr、gb2312gbk、german1、hebrew、hp8、hungarian、koi8_ru、koi8_ukr、latin1、latin2、sjis、swe7、tis620、ujis、usa7、win1251或win1251ukr之一。见9.1.1用于数据和排序的字符集。注重:假如你想要改动字符集,你必需在设置时代做makedistclean!假如你想在服务器和客户之间变更字符,你应当看一下SETOPTIONCHARACTERSET命令。见7.25SETOPTION句法。告诫:假如你在创立了任何数据库表以后改动字符集,你将必需对每一个表运转myisamchk-r-q,不然你的索引大概不准确地排序。(假如你安装了MySQL,创立一些表,然后从头设置MySQL利用一个分歧的字符集而且从头安装它,这时候便可能产生这类情形。)

为了设置MySQL带有调试代码,利用--with-debug选项:
shell>./configure--with-debug
这招致包括一个平安的内存分派器,能发明一些毛病和并供应关于正在产生的事变的输入。见G.1调试一个MySQL服务器。

属于特定体系的选项可在本章特定体系的大节里找到。见4.11体系特定的成绩。
4.8编译成绩?
一切MySQL程序在Solaris上利用gcc编译而且没有任何告诫。在其他体系上,因为体系包括文件的不同大概会产生告诫。关于利用MIT-pthreads时产生的告诫,见4.9MIT-pthreads注重事项。其他成绩,反省上面的表。

很多成绩的办理计划触及从头设置。假如你的确必要从头设置,注重以下事项:

假如configure在它已被运转了今后运转,它可使用先前搜集的信息。这个信息被存储在“config.cache”内里。当configure启动时,它寻觅该文件并且假如它存在,假定信息仍旧是准确的,读进它的内容。当你从头设置时,该假定是有效的。
每次你运转configure时分,你必需运转make再从头编译。但是,你大概想要把先前机关的老的方针文件删除,由于他们利用分歧的设置选项被编译。
为了避免利用旧的设置信息或方针文件,在从头运转configure前运转这些命令:

shell>rmconfig.cache
shell>makeclean

别的,你能够运转makedistclean。

下表形貌了一些最常产生的编译MySQL的成绩:

假如在编译“sql_yacc.cc”时,你失掉以下的一个毛病,你多是存储器或互换空间溢出:
Internalcompilererror:programcc1plusgotfatalsignal11

Outofvirtualmemory

Virtualmemoryexhausted

该成绩是gcc请求大批的内存编译带有嵌进函数(inlinefunction)的“sql_yacc.cc”。尝尝以--with-low-memory选项运转configure:

shell>./configure--with-low-memory
假如你正在利用gcc,该选项使得将-fno-inline加到编译行,假如你正在利用其他的编译器,则到场-O0。你应当试一试--with-low-memory选项,即便你有出格多的存储器和互换空间,而你以为不克不及大概运转得溢出。这个成绩乃至在很大方的硬件设置的体系上呈现,一般用--with-low-memory选项修改它。

缺省地,configure选择c++作为编译器名字并用-lg++选项的GNUc++链接。假如你正在利用gcc,这个特征在设置时代招致以下成绩:
configure:error:installationorconfigurationproblem:
C++compilercannotcreateexecutables.

你大概也在编译时代看到g++、libg++或libstdc++相干的成绩。这些成绩的一个缘故原由是你大概没有g++,或你大概有g++但无libg++或libstdc++。看一下“config.log”文件。它应当包括你的c++编译器不克不及事情的正确缘故原由!为懂得决这些成绩,你可使用gcc作为你的C++编译器。尝尝设置情况变量CXX为"gcc-O3"。比方:

shell>CXX="gcc-O3"./configure
它能事情,由于gcc象g++一样编译C++源代码,但缺省地它不链接libg++或libstdc++。办理这些成绩的其他办法固然是安装g++、libg++和libstdc++。

假如你的编译以上面任何毛病而失利,你必需晋级make版本到GNUmake:
makingallinmit-pthreads
make:Fatalerrorinreader:Makefile,line18:
Badlyformedmacroassignment
 or
make:file`Makefileline18:Mustbeaseparator(:
 or
pthread.h:Nosuchfileordirectory

Solaris和FreeBSD已知make程序有成绩。GNUmake版本3.75已知能事情。

假如你想要界说你的C或C++编译器所利用的标记,把标记加到CFLAGS和CXXFLAGS情况变量中便可。你也能利用CC和CXX来指定编译器名字。比方:
shell>CC=gcc
shell>CFLAGS=-O6
shell>CXX=gcc
shell>CXXFLAGS=-O6
shell>exportCCCFLAGSCXXCXXFLAGS

关于已晓得在分歧体系上有效的标记界说列表,见4.14TcX二进制代码。

假如你失掉象以下的一条毛病动静,你必要晋级你的gcc编译器:
client/libmysql.c:273:parseerrorbrfore__attribute__
gcc2.8.1已知能够事情,可是我们保举利用egcs1.0.3a或更新。

假如你在编译mysqld时显现比方上面的那些毛病,configure没有准确地检测传到accept()、getsockname()或getpeername()最初参数的范例:
cxx:Error:mysqld.cc,line645:Inthisstatement,thereferenced
typeofthepointervalue"&length"is"unsignedlong",which
isnotcompatiblewith"int".
new_sock=accept(sock,(structsockaddr*)&cAddr,&length);

为了修改它,编纂“config.h”文件(它由configure天生)。寻觅这些行:

/*Defineasthebasetypeofthelastargtoaccept*/
#defineSOCKET_SIZE_TYPEXXX

变动XXX为size_t或int,这取决于你的操纵体系。(注重:你每次运转configure都必需如许做,由于configure从头天生“config.h”。)

“sql_yacc.cc”文件由“sql_yacc.yy”天生。一般机关历程不必要制造“sql_yacc.cc”,由于MySQL有一个已天生的拷贝,但是,假如你的确必要再创立它,你大概碰着这个毛病:
"sql_yacc.yy",linexxxfatal:defaultactioncausespotential...

这是一个你的yacc版本不完美的迹象。你大概必要安装bison(GNU版本yacc)并利用它。

假如你必要调试mysqld或MySQL客户,运转configure,利用--with-debug选项,然后从头编译而且链接你客户程序到新的客户库。见G.2调试一个MySQL客户。
4.9MIT-pthreads注重事项
这节形貌在利用MIT-pthreads所触及的一些成绩。

注重:在Linux上,你应当不利用MIT-pthreads而是安装LinuxThreads!见4.11.5Linux注重事项(一切的Linux版本)。

假如你的体系不供应原生的线程撑持,你将必要利用MIT-pthreads包机关MySQL。这包含年夜多半FreeBSD体系、SunOS4.x、Solaris2.4和更早版本及其他,见4.2MySQL撑持的操纵体系。

在年夜多半体系上,你能经由过程利用configure,用--with-mit-threads选项来强制运转MIT-pthreads:
shell>./configure--with-mit-threads
当利用MIT-pthreads时,不撑持在一个非源代码目次机关,由于我们想要使我们对代码的改动减到最小。

MIT-pthreads不撑持用于完成Unix套接字的AF_UNIX协定。这意味着假如你利用MIT-pthreads举行编译,一切的链接必需利用TCP/IP举行(它有点慢)。假如在机关MySQL后,你发明你不克不及与当地的服务器毗连,极可能是客户程序正在试图用缺省的Unix套接字与localhost毗连。利用主机选择(-h或--host)明白地指定当地的主机名字,实验做一个TCP/IP毗连到mysql。
决意是不是利用MIT-pthreads的反省仅在处置服务器代码的设置历程时代产生。假如已用--without-server设置了分发并只机关客户代码,客户将不晓得MIT-pthreads是不是正在被利用而且是不是利用缺省的Unix套接字毗连。由于Unix套接字不克不及在MIT-pthreads上面事情,这意味着当你运转客户程序时,你将必要利用-h或--host。
当利用MIT-pthreads编译MySQL时,由于功能缘故原由,体系锁定缺省为克制利用。你能够用--use-locking选项告知服务器利用体系锁定。
偶然pthreadbind()命令不克不及绑定一个套接字但没有任何毛病动静(最少在Solaris上),了局是一切到服务器的毗连均失利。比方:
shell>mysqladminversion
mysqladmin:connecttoserveratfailed;
error:Cantconnecttomysqlserveronlocalhost(146)

办理它的办法是杀逝世mysqld服务器而且重启它。这只要当我们强制服务器中断并即刻举行重启时在产生。

利用MIT-pthreads,sleep()体系挪用不是可中止的SIGINT(break)。这只要在你运转mysqladmin--sleep时才干注重到。你在中止起感化而且历程中断之前必需守候sleep()停止。
当链接时,你大概会收到如许的告诫动静(最少在Solaris上);他们能够被无视:
ld:warning:symbol`_iobhasdifferingsizes:
(file/my/local/pthreads/lib/libpthread.a(findfp.o)value=0x4;
file/usr/lib/libc.sovalue=0x140);
/my/local/pthreads/lib/libpthread.a(findfp.o)definitiontaken
ld:warning:symbol`__iobhasdifferingsizes:
(file/my/local/pthreads/lib/libpthread.a(findfp.o)value=0x4;
file/usr/lib/libc.sovalue=0x140);
/my/local/pthreads/lib/libpthread.a(findfp.o)definitiontaken

一些其他的告诫也可被疏忽:
implicitdeclarationoffunction`intstrtoll(...)
implicitdeclarationoffunction`intstrtoul(...)

我们还没有让readline可在MIT-pthreads上事情。(这不必要,可是大概某些人有乐趣。)
4.10Perl安装申明
4.10.1在Unix上安装Perl
Perl对MySQL的撑持借助DBI/DBD客户接口而供应。见20.5MySQLPerlAPI。PerlDBD/DBI客户代码请求Perl5.004或今后版本。假如你有Perl的一个更旧的版本,接口将不克不及事情。

MySQLPerl撑持也请求你安装了MySQL客户编程撑持。假如你从RPM文件安装MySQL,客户程序在客户RPM中,可是客户编程撑持在开辟者RPM。断定你安装了后一个RPM。

关于版本3.22.8,Perl撑持是与次要MySQL刊行版本独自分发。假如你想要安装Perl撑持,你必要的文件能从http://www.mysql.com/Contrib取得。

Perl分发以紧缩的tar档案供应,而且有一个相似“MODULE-VERSION.tar.gz”的名字,这里MODULE是模块名字而且VERSION是版本号。你应当失掉Data-Dumper、DBI和Msql-Mysql-modules分发并按此序次安装他们。安装历程显现出鄙人面,显现的例子针对Data-Dumper模块,可是一切3个历程是不异的。

解包分发到以后目次:
shell>gunzip<Data-Dumper-VERSION.tar.gz|tarxvf-
这个命令创立的一个名为“Data-Dumper-VERSION”的目次。

进进解包分发的顶级目次:
shell>cdData-Dumper-VERSION
机关分发而且编译一切器材:
shell>perlMakefile.PL
shell>make
shell>maketest
shell>makeinstall

maketest命令很主要,由于它考证模块正在事情。注重:在你Msql-Mysql-modules安装时代运转该命令实验接口代码时,MySQL服务器必需正在运转,不然测试将失利。

不管什么时候你安装一个新版本的MySQL,重修而且从头安装Msql-Mysql-modules分发是一个好主张,出格是假如你在晋级MySQL后,察看一切非常,如你的DBI剧本中心倾倒(coredump)。

假如你没有权限在体系目次下安装Perl模块,或假如你安装当地Perl模块,以下参考书能够匡助你:

http://www.iserver.com/support/contrib/perl5/modules.html

在题目InstallingNewModulesthatRequireLocallyInstalledModules上面查找。

4.10.2在Win32上安装ActiveStatePerl
在Win32上安装ActiveStatePerl的MySQLDBD的模块,你应当做以下步骤:

翻开一个DOSshell。
假如必要,设置HTTP_proxy变量。比方,你能够试一试:setHTTP_proxy=my.proxy.com:3128
启动PPM程序:C:perlinppm.pl
假如你还没有如许做,安装DBI:installDBI
假如乐成,安装DBD::mysql:http://www.mysql.com/Contrib/ppd/DBD-mysql.ppd
假如你不克不及使上述步骤事情,你应当安装MyODBC驱动程序而且经由过程ODBC毗连MySQL服务器。

useDBI;
$dbh=DBI->connect("DBI:ODBC:$dsn","$user","$password")||
die"Goterror$DBI::errstrwhenconnectingto$dsn
";

4.10.3在Win32上安装MySQLPerl分发
MySQLPerl分发包括DBI、DBD:MySQL和DBD:ODBC。

从http://www.mysql.com/download.html失掉Win32的Perl分发。
在C:解紧缩分发,如许你失掉一个“C:PERL”目次。
增添目次“C:PERLBIN”到你的路径。
增添目次“C:PERLBINMSWin32-x86-thread”或“C:PERLBINMSWin32-x86”到你的路径。
在DOSshell实行perl-v测试perl的运转。
4.10.4利用PerlDBI/DBD接口的成绩
假如Perl呈报它不克不及找到../mysql/mysql.so模块,那末成绩多是该Perl不克不及找到共享库文件“libmysqlclient.so”。

你可用以下任何一个办法修改它这:

用perlMakefile.PL-static而非perlMakefile.PL编译Msql-Mysql-modules分发。
拷贝libmysqlclient.so到其他共享库文件地点的目次(多是“/usr/lib”或“/lib”)。
在Linux上,你能够把libmysqlclient.so地点目次的路径名加到“/etc/ld.so.conf”文件中。
把libmysqlclient.so地点目次的路径名加到LD_RUN_PATH情况变量中。
假如你从DBD-mysql失掉以下毛病,你大概正在利用gcc(或利用一个旧的用gcc编译的二进制代码):

/usr/bin/perl:cantresolvesymbol__moddi3
/usr/bin/perl:cantresolvesymbol__divdi3

当“mysql.so”库文件被机关时分,为链接命令加上-L/usr/lib/gcc-lib/...-lgcc(当你编译Perl客户时反省针对“mysql.so”的make输入)。-L选项应当指定“libgcc.a”在你体系上地点目次的路径名。

这个成绩的另外一个缘故原由多是Perl和MySQL都不是用gcc编译的。在这类情形下,你能够都用gcc编译以办理不婚配。

假如你想要在一个不撑持静态链接(象SCO那样)的体系上利用Perl模块,你能够发生包含DBI和DBD-mysql的Perl的一个静态版本。这类运转办法是你天生一个链接了DBI代码的Perl版本并在最新的Perl上安装它,然后你利用它来机关附加链接了DBD代码的Perl版本,而且安装它。

在SCO上,你必需有以下情况变量设置:

shell>LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib

shell>LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/lib
shell>LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/lib
shell>MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:/usr/skunk/man:

起首,在DBI分发地点目次下运转以下命令,制造包含一个静态链接的PerlDBI:

shell>perlMakefile.PLLINKTYPE=static
shell>make
shell>makeinstall
shell>makeperl

然后你必需安装新的Perl。makeperl的输入将显现准确的你必要实行实施安装的make的命令。在SCO上,是make-fMakefile.aperlinst_perlMAP_TARGET=perl.

接上去,在Msql-Mysql-modules分发地点目次下,利用方才创立的Perl来创立一样包含一个静态链接的PerlDBD::mysql的另外一个Perl:

shell>perlMakefile.PLLINKTYPE=static
shell>make
shell>makeinstall
shell>makeperl

最初,你应当安装这个新的Perl。并且,makeperl的输入指出利用的命令。

4.11体系特定的成绩
上面的章节申明在从源代码分发安装MySQL时,产生在特定的体系上并已察看到的一些成绩。

4.11.1Solaris注重事项
在Solaris上,乃至在你解开MySQL分发之前,你大概堕入窘境!Solaristar不克不及处置长文件名字,因而你在翻开MySQL时,大概看到如许的一个毛病:

xmysql-3.22.12-beta/bench/Results/ATIS-mysql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase,0bytes,0tapeblocks
tar:directorychecksumerror

在这类情形下,你必需利用GNUtar(gtar)翻开分发。你能在http://www.mysql.com/Downloads/找到为Solaris的一个预编译的拷贝。

Sun的原生线程只事情在Solaris2.5和更高版本上。关于2.4和更早的版本,MySQL将主动地利用MIT-pthreads。见4.9MIT-pthreads注重事项。

假如你从设置失掉以下毛病:

checkingforrestartablesystemcalls...configure:errorcannotruntest
programswhilecrosscompiling

这意味着你的编译器安装有些成绩!在这类情形下,你应当晋级编译器到一个更新的版本。你也能够把以下行拔出到config.cache文件来办理这个成绩:

ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls=no}
假如你在一个SPARC上利用Solaris,保举的编译器是egcs1.1.2或更新。你能在http://egcs.cygnus.com/找到它。注重:egs1.1.1和gcc2.8.1不克不及在SPARC上牢靠地事情!

当利用时egcs1.1.2时,保举的configure命令行是:

shell>CC=gccCFLAGS="-O6"
CXX=gccCXXFLAGS="-O6-felide-constructors-fno-exceptions-fno-rtti"
./configure--prefix=/usr/local/mysql--with-low-memory

假如你有SunWorkshop4.2编译器,你能如许运转configure:

CC=ccCFLAGS="-xstrconst-Xa-xO4-native-mt"CXX=CCCXXFLAGS="-xO4-native-noex-mt"./configure--prefix=/usr/local/mysql

shell>CC=ccCFLAGS="-Xa-fast-xO4-native-xstrconst-mt"
CXX=CCCXXFLAGS="-noex-XO4-mt"
./configure

你也能够编纂configure剧本改动该行:
#if!defined(__STDC__)||__STDC__!=1

为:
#if!defined(__STDC__)
假如你利用-Xc选项翻开__STDC__,Sun编译器不克不及用Solaris的“pthread.h”头文件编译。这是Sun的一个bug。

假如mysqld在运转时收回显现鄙人面的毛病动静,你已实验用Sun编译器编译MySQL,没有启用多线程选择(-mt):

libcinternalerror:_rmutex_unlock:rmutexnotheld

增添-mt到CFLAGS和CXXFLAGS而且再试一试。

假如你在用gcc编译MySQL时失掉以下毛病,它意味着你的gcc没有对你的Solaris版本举行设置!

shell>gcc-O3-g-O2-DDBUG_OFF-othr_alarm...
./thr_alarm.c:Infunction`signal_hand:
./thr_alarm.c:556:toomanyargumentstofunction`sigwait

在这类情形下准确的做法是失掉最新版本的egcs,而且用你以后的gcc编译器编译它!最少关于Solaris2.5,几近一切的gcc二进制版本都有旧的、不成用的包括文件,将破怀利用线程的一切程序的文件(而且多是其他的程序)!

Solaris不供应一切体系库的静态版本(libpthreads和libdl),以是你不克不及用--static编译MySQL。假如你实验如许做,你将失掉毛病:

ld:fatal:library-ldl:notfound

假如太多历程试图很快地毗连mysqld,你将在MySQL日记文件中瞥见这个毛病:

Errorinaccept:Protocolerror

你能够试着用--set-variableback_log=50选项启动服务器作为它的一个办理举措。

假如你正在链接你本人的MySQL客户,当你试着实行它时,你大概失掉以下毛病:

ld.so.1:./my:fatal:libmysqlclient.so.#:openfailed:Nosuchfileordirectory

这个成绩能用以下办法之一制止:

用以下标记链接客户(而不是-Lpath):-Wl,r/full-path-to-libmysqlclient.so。
拷贝libmysqclient.so到“/usr/lib”。
在运转你的客户程序前,把libmysqlclient.so地点目次的路径名加到LD_RUN_PATH的情况变量中。
4.11.2Solaris2.7注重事项
一般你能在Solaris2.7上利用Solaris2.6二进制代码。年夜多半Solaris2.6的成绩也合用于Solaris2.7。

注重:MySQL3.23.4和更高版本应当能主动检测Solaris2.7而且启用以下成绩的办理举措!

Solaris2.7在包含文件中有一些bug,在利用gcc时,你能够瞥见以下毛病:

/usr/include/widec.h:42:warning:`getwcredefined
/usr/include/wchar.h:326:warning:thisisthelocationoftheprevious
definition

假如呈现这类情形,你能够做以下事变办理这个成绩:

拷贝/usr/include/widec.h到.../lib/gcc-lib/os/gcc-version/include而且改动第41行:

#if!defined(lint)&&!defined(__lint)



#if!defined(lint)&&!defined(__lint)&&!defined(getwc)

别的,你能够间接编纂“/usr/include/widec.h”。这两种办法,在你举行修改今后,你应当删除“config.cache”而且再运转configure!

假如当你运转make时,你失掉象如许毛病,那是由于configure没检测“curses.h”文件(大概由于/usr/include/widec.h的毛病):

Infileincludedfrommysql.cc:50:
/usr/include/term.h:1060:syntaxerrorbefore`,
/usr/include/term.h:1081:syntaxerrorbefore`;

办理它的计划是做以下步骤之一:

如上所述编纂“/usr/include/widec.h”而且再次运转configure。
从“config.h”文件删除#defineHAVE_TERM行并再次运转make。
用CFLAGS=-DHAVE_CURSESCXXFLAGS=-DHAVE_CURSES./configure举行设置。
4.11.3Solarisx86注重事项
假如你正在在Solarisx86上利用gcc或egcs,而且你碰着了在装载时的中心倾倒(coredump)成绩,你应当利用以下configure命令:

shell>CC=gccCFLAGS="-O6-fomit-frame-pointer"
CXX=gcc
CXXFLAGS="-O6-fomit-frame-pointer-felide-constructors-fno-exceptions-fno-rtti"
./configure--prefix=/usr/local/mysql

用libstdc++库和与C++非常处置来制止这个成绩。

假如这没有匡助,你应当编译一个调试版本而且用一个踪影文件运转它或在gdb下运转它。见G.1调试一个MySQL服务器。

4.11.4SunOS4注重事项
在SunOS4上,必要MIT-pthreads编译MySQL,反过去这意味着你将必要GNUmake。

一些SunOS4体系的静态库和libtool有成绩。你可使用以下configure行来制止这个成绩:

shell>./configure--disable-shared--with-mysqld-ldflags=-all-static

当编译readline时,你大概失掉关于反复界说的告诫,这些能够被疏忽。

当编译mysqld时分,将有一些implicitdeclarationoffunction告诫,这些能够被疏忽。

4.11.5Linux注重事项(一切Linux版本)
MySQL在Linux上利用LinuxThreads。假如你正在利用一个没有glibc2的老的Linux版本,你必需在实验编译MySQL前安装LinuxThreads。http://www.mysql.com/Downloads/Linux

注重:但你做INSERTDELAYED时,所用的包含2.1.1及之前的glibc版本在pthread_mutex_timedwait处置上有一个致命毛病,假如你正在利用INSERTDELAYED,你必需把以下补钉加到你的glibc库中:http://www.mysql.com/Downloads/Patches/glibc-pthread_cond_timedwait.patch。MySQL3.23.7包括了对这个毛病的一个一时办理举措。

假如你不克不及启动mysqld或假如mysql_install_db不事情,请持续读下往!这仅产生在有LinuxThreads成绩或libc/glibc库为题的Linux体系上。有良多复杂的办理举措让MySQL事情!最复杂是利用针对Linuxx86的二进制版本的MySQL(不是RPM),这个版本的一个好的方面是它大概比你编译你本人的任何版本快10%!见10.2.1编译和链接怎样影响MySQL的速率。

二进制分发的一个已知成绩是与利用libc的更老的由于MySQL数据库已经如此普及,对企业来说它无疑是一个更好的选择。

小女巫 发表于 2015-1-19 22:42:10

可以动态传入参数,省却了动态SQL的拼写。

若相依 发表于 2015-1-26 23:24:27

sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西

精灵巫婆 发表于 2015-2-4 21:53:32

对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。

老尸 发表于 2015-2-10 20:42:45

XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)

逍遥一派 发表于 2015-3-1 13:50:41

可以动态传入参数,省却了动态SQL的拼写。

简单生活 发表于 2015-3-10 18:32:23

备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。

愤怒的大鸟 发表于 2015-3-17 09:10:11

微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。

兰色精灵 发表于 2015-3-24 05:16:02

现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
页: [1]
查看完整版本: MYSQL编程:MySQL中文参考手册5(安装MySQL上)