MySQL在Linux上使用 LinuxThreads 。如果你正在使用一个没有glibc2
的老的Linux版本,你必须在尝试编译MySQL前安装LinuxThreads。
注意:但你做INSERT DELAYED
时,所用的包括2.1.1及以前的glibc版本在pthread_mutex_timedwait处理上有一个致命错误,如果你正在使用INSERT DELAYED
,你必须把下列补丁加到你的glibc库中:http://。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 4.2的库文件升级,或对其他分发。
如果你正在链接你自己的MySQL客户并且得到错误:
ld.so.1: ./my: fatal: libmysqlclient.so.4: open failed: No such file or directory
当执行它们时,这个问题可用下列方法之一避免:
- 用下列标志链接客户(而不是
-Lpath
):-Wl,r/path-libmysqlclient.so
。 - 拷贝
libmysqclient.so
到“/usr/lib”。 - 在运行你的客户程序前,把
libmysqlclient.so
所在目录的路径名加到LD_RUN_PATH
的环境变量中。
如果你正在使用 Fujitsu 编译器(fcc / FCC)
,编译MySQL你将有一些问题,因为 Linux 头文件面向gcc
。
下列configure
行应该与fcc/FCC
工作:
CC=fcc CFLAGS="-O -K fast -K lib -K omitfp -Kpreex -D_GNU_SOURCE -DCONST=const -DNO_STRTOLL_PROTO" CXX=FCC CXXFLAGS="-O -K fast -K lib -K omitfp -K preex --no_exceptions --no_rtti -D_GNU_SOURCE -DCONST=const -Dalloca=__builtin_alloca -DNO_STRTOLL_PROTO '-D_EXTERN_INLINE=static __inline'" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static --disable-shared --with-low-memory