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

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:5211 更新时间:2009/4/22 20:56:57
t.so到其他共享库文件所在的目录(可能是“/usr/lib”或“/lib”)。 
在Linux上,你可以把libmysqlclient.so所在目录的路径名加到“/etc/ld.so.conf”文件中。 
把libmysqlclient.so所在目录的路径名加到LD_RUN_PATH环境变量中。 
如果你从DBD-mysql得到下列错误,你可能正在使用gcc(或使用一个旧的用gcc编译的二进制代码): 

/usr/bin/perl: can''''t resolve symbol ''''__moddi3''''
/usr/bin/perl: can''''t resolve symbol ''''__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分发所在目录下运行下列命令,创造包括一个静态链接的Perl DBI: 

shell> perl Makefile.PL LINKTYPE=static
shell> make
shell> make install
shell> make perl

然后你必须安装新的Perl。make perl的输出将显示正确的你需要执行施行安装的make的命令。在SCO上,是make -f Makefile.aperl inst_perl MAP_TARGET=perl. 

接下来,在Msql-Mysql-modules分发所在目录下,使用刚才创建的Perl来创建同样包括一个静态链接的PerlDBD::mysql的另一个Perl: 

shell> perl Makefile.PL LINKTYPE=static 
shell> make 
shell> make install 
shell> make perl

最后, 你应该安装这个新的Perl。而且,make perl的输出指出使用的命令。 

4.11 系统特定的问题
下面的章节说明在从源代码分发安装MySQL时,发生在特定的系统上并已观察到的一些问题。 

4.11.1 Solaris注意事项
在Solaris上,甚至在你解开MySQL分发以前,你可能陷入困境!Solaris tar不能处理长文件名字,因此你在打开MySQL时,可能看到这样的一个错误: 

x mysql-3.22.12-beta/bench/Results/ATIS-mysql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase, 0 bytes, 0 tape blocks
tar: directory checksum error

在这种情况下,你必须使用 GNU tar(gtar) 打开分发。你能在http://www.mysql.com/Downloads/找到为Solaris的一个预编译的拷贝。 

Sun的原生线程只工作在Solaris 2.5和更高版本上。对于2.4和更早的版本,MySQL将自动地使用 MIT-pthreads 。见4.9 MIT-pthreads 注意事项。 

如果你从配置得到下列错误: 

checking for restartable system calls... configure: error can not run test 
programs while cross compiling

这意味着你的编译器安装有些问题!在这种情况下,你应该升级编译器到一个更新的版本。你也可以把下列行插入到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=gcc CFLAGS="-O6" 
       CXX=gcc CXXFLAGS="-O6 -felide-constructors -fno-exceptions -fno-rtti" 
       ./configure --prefix=/usr/local/mysql --with-low-memory

如果你有Sun Workshop 4.2 编译器,你能这样运行configure: 

CC=cc CFLAGS="-xstrconst -Xa -xO4 -native -mt" CXX=CC CXXFLAGS="-xO4 -native -noex -mt" ./configure --prefix=/usr/local/mysql 

shell> CC=cc CFLAGS="-Xa -fast -xO4 -native -xstrconst -mt" 
       CXX=CC CXXFLAGS="-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): 

libc internal error: _rmutex_unlock: rmutex not held

增加-mt到CFLAGS和CXXFLAGS并且再试一试。 

如果你在用gcc编译MySQL时得到下列错误,它意味着你的gcc没有对你的Solaris版本进行配置! 

shell> gcc -O3 -g -O2 -DDBUG_OFF  -o thr_alarm ...
./thr_alarm.c: In function `signal_hand'''':
./thr_alarm.c:556: too many arguments to function `sigwait''''

在这种情况下正确的做法是得到最新版本的egcs,并且用你当前的gcc编译器编译它!至少对于 Solaris 2.5,几乎所有的gcc二进制版本都有旧的、不可用的包含文件,将破怀使用线程的所有程序的文件(并且可能是其他的程序)! 

Solaris不提供所有系统库的静态版本(libpthreads和libdl),所以你不能用--static编译MySQL。如果你尝试这样做,你将得到错误: 

ld: fatal: library -ldl: not found

如果太多进程试图很快地连接mysqld,你将在MySQL日志文件中看见这个错误: 

Error in accept: Protocol error

你可以试着用--set-variable back_log=50选项启动服务器作为它的一个解决办法。 

如果你正在链接你自己的MySQL客户,当你试着执行它时,你可能得到下列错误: 

ld.so.1: ./my: fatal: libmysqlclient.so.#: open failed: No such file or directory

这个问题能用下列方法之一避免: 

用下列标志链接客户(而不是-Lpath): -Wl,r/full-path-to-libmysqlclient.so。 
拷贝libmysqclient.so到“/usr/lib”。 
在运行你的客户程序前,把libmysqlclient.so所在目录的路径名加到LD_RUN_PATH的环境变量中。 
4.11.2 Solaris 2.7 注意事项
通常你能在 Solaris 2.7 上使用 Solaris 2.6 二进制代码。大多数Solaris 2.6 的问题也适用于Solaris 2.7。 

注意:MySQL3.23.4 和更高版本应该能自动检测 Solaris 2.7 并且启用下列问题的解决办法! 

Solaris 2.7 在包括文件中有一些bug,在使用gcc时,你可以看见下列错误: 

/usr/include/widec.h:42: warning: `getwc'''' redefined
/usr/include/wchar.h:326: warning: this is the location of the previous
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的错误): 

In file included from mysql.cc:50:
/usr/include/term.h:1060: syntax error before `,''''
/usr/include/term.h:1081: syntax error before `;''''

解决它的方案是做下列步骤之一: 

如上所述编辑“/usr/include/widec.h”并且再次运行configure。 
从“config.h”文件删除#define HAVE_TERM行并再次运行make。 
用CFLAGS=-DHAVE_CURSES CXXFLAGS=-DHAVE_CURSES ./configure进行配置。 
4.11.3 Solaris x86 注意事项
如果你正在在 Solaris x86上使用gcc或egcs,并且你碰到了在装载时的核心倾倒(core dump)问题,你应该使用下列configure命令: 

shell> CC=gcc CFLAGS="-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.4 SunOS 4 注意事项
在 SunOS 4 上, 需要MIT-pthreads 编译MySQL,反过来这意味着你将需要GNU make。 

一些SunOS 4系统的动态库和libtool有问题。你可以使用下列configure行来避免这个问题: 

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

当编译readline时,你可能得到关于重复定义的警告,这些可以被忽略。 

当编译mysqld时候, 将有一些implicit declaration of function警告,这些可以被忽略。 

4.11.5 Linux 注意事项(所有Linux版本)
MySQL在Linux上使用 LinuxThreads 。如果你正在使用一个没有glibc2的老的Linux版本,你必须在尝试编译MySQL前安装LinuxThreads。http://www.mysql.com/Downloads/Linux 

注意:但你做INSERT DELAYED时,所用的包括2.1.1及以前的glibc版本在pthread_mutex_timedwait处理上有一个致命错误,如果你正在使用INSERT DELAYED,你必须把下列补丁加到你的glibc库中:http://www.mysql.com/Downloads/Patches/glibc-pthread_cond_timedwait.patch。MySQL 3.23.7包含了对这个错误的一个临时解决办法。 

如果你不能启动mysqld或如果mysql_install_db不工作,请继续读下去!这仅发生在有LinuxThreads问题或libc/glibc库为题的Linux系统上。有很多简单的解决办法让MySQL工作!最简单是使用针对Linux x86的二进制版本的MySQL(不是RPM),这个版本的一个好的方面是它可能比你编译你自己的任何版本快10%!见10.2.1 编译和链接如何影响 MySQL 的速度。 

二进制分发的一个已知问题是与使用libc的更老的Linux系统(如RedHat 4.x 或 Slackware),你将得到有关主机名解决的一些非致命问题。见4.6.3.1 Linux注意事项。 

使用libc.so.5.3.12,myisamchk将挂起,升级到最新libc以解决这个问题。 

当使用 LinuxThreads 时,你将看到最少 3 进程在运行。这些事实上的线程,对LinuxThreads管理器将有一个线程,一个线程处理连接,还有一个线程处理告警和信号。 

如果你用ps看到了一个死掉的mysqld守护进程,这通常意味着你发现了MySQL里面的一个错误或你有一个被破坏的数据库表。见18.1 如果MySQL总是崩溃怎么办。 

如果你正在使用LinuxThreads并且mysqladmin shutdown不工作,你必须升级到 LinuxThreads 0.7.1 或更新。 

如果你正在使用 RedHat ,你可能得到象这样的错误: 

/usr/bin/perl is needed...
/usr/sh is needed...
/usr/sh is needed...

如果是这样,你应该升级rpm版本到“rpm-2.4.11-1.i386.rpm”和“rpm-devel-2.4.11-1.i386.rpm”(或以后)。 

你能从ftp://ftp.redhat.com/updates/4.2/i386得到RedHat

上一页  [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……
    咸宁网络警察报警平台