This section describes some of the issues involved in using MIT-pthreads.
Note that on Linux you should not use MIT-pthreads but use the installed LinuxThreads implementation instead. See section 2.6.2 Linux Notes (All Linux Versions).
If your system does not provide native thread support, you will need to build MySQL using the MIT-pthreads package. This includes older FreeBSD systems, SunOS 4.x, Solaris 2.4 and earlier, and some others. See section 2.2.5 Operating Systems Supported by MySQL.
Note, that beginning with MySQL 4.0.2 MIT-pthreads are no longer part of the source distribution. If you require this package, you need to download it separately from http://www.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz
After downloading, extract this source archive into the top level of the
MySQL source directory. It will create a new subdirectory
mit-pthreads
.
configure
with the --with-mit-threads
option:
shell> ./configure --with-mit-threadsBuilding in a non-source directory is not supported when using MIT-pthreads because we want to minimise our changes to this code.
--without-server
to build only the client code, clients will not know whether
MIT-pthreads is being used and will use Unix socket connections by default.
Because Unix sockets do not work under MIT-pthreads on some platforms, this
means you will need to use -h
or --host
when you run client
programs.
--external-locking
option. This is only
needed if you want to be able to run two MySQL servers against the same
datafiles (not recommended).
bind()
command fails to bind to a socket without
any error message (at least on Solaris). The result is that all connections
to the server fail. For example:
shell> mysqladmin version mysqladmin: connect to server at '' failed; error: 'Can't connect to mysql server on localhost (146)'The solution to this is to kill the
mysqld
server and restart it.
This has only happened to us when we have forced the server down and done
a restart immediately.
sleep()
system call isn't interruptible with
SIGINT
(break). This is only noticeable when you run
mysqladmin --sleep
. You must wait for the sleep()
call to
terminate before the interrupt is served and the process stops.
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
to work with MIT-pthreads. (This isn't
needed, but may be interesting for someone.)