转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> MySql >> 正文
MySQL中文参考手册5(安装MySQL上)         ★★★★

MySQL中文参考手册5(安装MySQL上)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:5212 更新时间:2009/4/22 20:56:57
在其他系统上,由于系统包含文件的差别可能会发生警告。对于使用MIT-pthreads时发生的警告,见4.9 MIT-pthreads 注意事项。其他问题,检查下面的表。 

许多问题的解决方案涉及重新配置。如果你确实需要重新配置,注意下列事项: 

如果configure在它已经被运行了以后运行,它可以使用先前收集的信息。这个信息被存储在“config.cache”里面。当configure启动时,它寻找该文件而且如果它存在,假定信息仍然是正确的,读入它的内容。当你重新配置时,该假设是无效的。 
每次你运行configure时候,你必须运行make再重新编译。然而, 你可能想要把先前构造的老的目标文件删除,因为他们使用不同的配置选项被编译。 
为了防止使用旧的配置信息或目标文件,在重新运行configure前运行这些命令: 

shell>rm  config.cache 
shell>make clean

另外,你可以运行make distclean。 

下表描述了一些最常发生的编译MySQL的问题: 

如果在编译“sql_yacc.cc”时,你得到如下的一个错误,你可能是存储器或交换空间溢出: 
Internal compiler error: program cc1plus got fatal signal 11
  或
Out of virtual memory
  或
Virtual memory exhausted

该问题是gcc要求大量的内存编译带有嵌入函数(inline function)的“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++选项的GNU c++链接。如果你正在使用gcc,这个特性在配置期间导致如下问题: 
configure: error: installation or configuration problem:
C++ compiler cannot create executables.

你可能也在编译期间看到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: 
making all in mit-pthreads 
make: Fatal error in reader: Makefile, line 18: 
Badly formed macro assignment 
 or 
make: file `Makefile'''' line 18: Must be a separator (: 
 or 
pthread.h: No such file or directory

Solaris和FreeBSD已知make程序有问题。GNU make版本3.75已知能工作。 

如果你想要定义你的C或C++编译器所使用的标志,把标志加到CFLAGS和CXXFLAGS环境变量中即可。你也能使用CC和CXX来指定编译器名字。例如: 
shell>CC=gcc 
shell>CFLAGS=-O6 
shell>CXX=gcc 
shell>CXXFLAGS=-O6 
shell>export CC  CFLAGS  CXX  CXXFLAGS

对于已经知道在不同系统上有用的标志定义列表,见4.14 TcX 二进制代码。 

如果你得到象如下的一条错误消息,你需要升级你的gcc编译器: 
client/libmysql.c:273: parse error brfore ''''__attribute__''''
gcc2.8.1已知可以工作,但是我们推荐使用egcs1.0.3a或更新。 

如果你在编译mysqld时显示例如下面的那些错误, configure没有正确地检测传到accept()、getsockname()或getpeername()最后参数的类型: 
cxx: Error: mysqld.cc, line 645: In this statement, the referenced
     type of the pointer value "&length" is "unsigned long", which
     is not compatible with "int".
new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);

为了修正它,编辑“config.h”文件(它由configure生成)。寻找这些行: 

/* Define as the base type of the last arg to accept */
#define SOCKET_SIZE_TYPE XXX

更改XXX为size_t或int,这取决于你的操作系统。(注意:你每次运行configure都必须这样做,因为configure重新生成“config.h”。)

“sql_yacc.cc”文件由“sql_yacc.yy”生成。通常构造过程不需要创造“sql_yacc.cc”,因为MySQL有一个已经生成的拷贝,然而,如果你确实需要再创建它,你可能碰到这个错误: 
"sql_yacc.yy", line xxx fatal: default action causes potential...

这是一个你的yacc版本不完善的迹象。你可能需要安装bison(GNU 版本yacc)并使用它。 

如果你需要调试mysqld或MySQL客户,运行configure,使用--with-debug选项,然后重新编译并且链接你客户程序到新的客户库。见G.2 调试一个MySQL客户。 
4.9 MIT-pthreads注意事项
这节描述在使用 MIT-pthreads 所涉及的一些问题。 

注意:在Linux上,你应该不使用MIT-pthreads而是安装LinuxThreads!见4.11.5 Linux 注意事项(所有的Linux 版本)。 

如果你的系统不提供原生的线程支持,你将需要使用MIT-pthreads包构造MySQL。这包括大多数FreeBSD系统、SunOS 4.x 、Solaris 2.4和更早版本及其他,见4.2 MySQL 支持的操作系统。 

在大多数系统上,你能通过使用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> mysqladmin version
mysqladmin: connect to server at '''''''' failed;
error: ''''Can''''t connect to mysql server on localhost (146)''''

解决它的方法是杀死mysqld服务器并且重启它。这只有当我们强迫服务器停止并马上进行重启时在发生。 

使用MIT-pthreads,sleep()系统调用不是可中断的SIGINT(break)。这只有在你运行mysqladmin --sleep时才能注意到。你在中断起作用并且进程停止之前必须等待sleep()终止。 
当链接时,你可能会收到这样的警告消息(至少在Solaris上);他们可以被忽视: 
ld: warning: symbol `_iob'''' has differing sizes:
    (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
file /usr/lib/libc.so value=0x140);
    /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
ld: warning: symbol `__iob'''' has differing sizes:
    (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
file /usr/lib/libc.so value=0x140);
    /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken

一些其他的警告也可被忽略: 
implicit declaration of function `int strtoll(...)''''
implicit declaration of function `int strtoul(...)''''

我们还没有让readline可在MIT-pthreads上工作。(这不需要,但是可能某些人有兴趣。) 
4.10 Perl 安装说明
4.10.1 在Unix上安装Perl
Perl对MySQL的支持借助DBI/DBD客户接口而提供。见20.5 MySQL Perl API。Perl DBD/DBI客户代码要求Perl 5.004或以后版本。如果你有Perl的一个更旧的版本,接口将不能工作。 

MySQL Perl支持也要求你安装了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 | tar  xvf -
这个命令创建的一个名为“Data-Dumper-VERSION”的目录。 

进入解包分发的顶级目录: 
shell> cd  Data-Dumper-VERSION
构造分发并且编译所有东西: 
shell> perl Makefile.PL
shell> make
shell> make test
shell> make install

make test命令很重要,因为它验证模块正在工作。注意:在你Msql-Mysql-modules安装期间运行该命令试验接口代码时,MySQL服务器必须正在运行,否则测试将失败。 

无论何时你安装一个新版本的MySQL,重建并且重新安装Msql-Mysql-modules分发是一个好主意, 特别是如果你在升级MySQL后,观察所有异常,如你的DBI脚本核心倾倒(core dump)。 

如果你没有权限在系统目录下安装Perl模块,或如果你安装本地Perl模块,下列参考书可以帮助你: 

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

在标题Installing New Modules that Require Locally Installed Modules下面查找。 

4.10.2 在Win32上安装ActiveState Perl
在 Win32 上安装 ActiveState Perl的MySQL DBD的模块, 你应该做下列步骤: 

打开一个DOS shell。 
如果需要,设置HTTP_proxy变量。例如, 你可以试一试:set HTTP_proxy=my.proxy.com:3128 
启动PPM程序:C:perlinppm.pl 
如果你还没有这样做,安装DBI: install DBI 
如果成功,安装DBD::mysql:http://www.mysql.com/Contrib/ppd/DBD-mysql.ppd 
如果你不能使上述步骤工作,你应该安装MyODBC驱动程序并且通过ODBC连接MySQL服务器。 

use DBI;
$dbh= DBI->connect("DBI:ODBC:$dsn","$user","$password") || 
  die "Got error $DBI::errstr when connecting to $dsn
";

4.10.3 在Win32上安装MySQL Perl分发
MySQL Perl分发包含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”到你的路径。 
在 DOS shell执行perl -v测试perl的运行。 
4.10.4 使用PerlDBI/DBD接口的问题
如果 Perl 报告它不能找到../mysql/mysql.so模块,那么问题可能是该Perl不能找到共享库文件“libmysqlclient.so”。 

你可用下列任何一个方法修正它这: 

用perl Makefile.PL -static而非perl Makefile.PL编译Msql-Mysql-modules分发。 
拷贝libmysqlclien

上一页  [1] [2] [3] [4] [5] [6] [7]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台