| |
Примечания ниже относительно glibc применяются только в ситуации, когда Вы формируете MySQL самостоятельно. Если Вы управляете Linux на x86 машине, в большинстве случаев для Вас намного лучше использовать двоичный дистрибутив. Авторы линкуют свой двоичный дистрибутив с самой лучшей исправленной версией glibc, которую могут найти, и с самыми лучшими параметрами компилятора в попытке сделать его подходящим для сервера с высокой загрузкой. Так что, если Вы читаете текст ниже и находитесь в сомнении относительно того, что Вы должны делать, стоит сначала попробовать применить двоичный дистрибутив, чтобы увидеть, отвечает ли он Вашим потребностяи, и строить свою версию только после того, как Вы обнаружили, что двоичный дистрибутив недостаточно хорош. В этом случае, авторы оценят замечания относительно этого процесса, чтобы в следующий раз лучше сформировать свой двоичный дистрибутив. Для типичного пользователя, даже для установок с большим количеством параллельных подключений и/или при превышении лимита в 2GB, двоичный дистрибутив в большинстве случаев представляет собой самый лучший выбор.
MySQL использует LinuxThreads в Linux. Если Вы используете старую версию
Linux, которая не имеет glibc2
, Вы должны установить
LinuxThreads перед попыткой откомпилировать MySQL. Вы можете получить пакет
LinuxThreads с адреса
http://www.mysql.com/Downloads/Linux.
ОБРАТИТЕ ВНИМАНИЕ: Авторы MySQL видели некоторые странные проблемы с Linux 2.2.14 и MySQL на SMP-системах. Если Вы имеете SMP систему, рекомендуется обновить систему до Linux 2.4 ASAP! Ваша система будет быстрее и более устойчивой после этого!
Обратите внимание, что glibc
Version 2.1.1 и раньше имеет
фатальную ошибку в обработке pthread_mutex_timedwait
, которая
используется, когда Вы вызываете INSERT DELAYED
. Рекомендую Вам
не использовать INSERT DELAYED
до обновления glibc.
Если Вы планируете иметь 1000+ параллельных подключений, Вы должны сделать
некоторые изменения в LinuxThreads, перекомпилировать пакет и повторно
слинковать MySQL с новой версией библиотекой libpthread.a. Увеличьте
PTHREAD_THREADS_MAX
в
sysdeps/unix/sysv/linux/bits/local_lim.h до 4096 и уменьшите
STACK_SIZE
в `linuxthreads/internals.h' до 256 KB.
Пути указаны относительно корня glibc
. Обратите внимание, что
MySQL не будет устойчив с 600-1000 подключениями, если
STACK_SIZE
задан в значение по умолчанию 2 MB.
Если Вы имеете проблему, с которой MySQL не может открывать достаточно файлов или подключений, может быть Вы не конфигурировали Linux, чтобы обработать достаточное число файлов.
В Linux 2.2 и выше Вы можете проверять число распределенных обработчиков:
cat /proc/sys/fs/file-max cat /proc/sys/fs/dquot-max cat /proc/sys/fs/super-max
Если Вы имеете больше, чем 16 MB памяти, Вы должны добавить нечто вроде следующего в Ваш скрипт начальной загрузки (например, /etc/rc/boot.local в SuSE):
echo 65536 > /proc/sys/fs/file-max echo 8192 > /proc/sys/fs/dquot-max echo 1024 > /proc/sys/fs/super-max
Вы можете также выполнять вышеупомянутое из командной строки как root, но в этом случае Ваши старые ограничения будут использоваться в следующий раз, когда система перезагрузится.
Вы должны также добавить в файл /etc/my.cnf:
[safe_mysqld] open-files-limit=8192
Вышеупомянутое должно позволить MySQL создавать до 8192 подключений+файлы.
Константа STACK_SIZE
в LinuxThreads управляет интервалом
стеков потоков в адресном пространстве. Она должна быть достаточно большой,
чтобы имелся участок памяти для стека каждого индивидуального потока, но
достаточно маленькой, чтобы уберечь стек некоторого потока от столкновения с
глобальной переменной mysqld
. К сожалению, Linux-реализация
mmap()
не совсем правильно отображает адреса уже распределенных
регионов при их очистке. Так что безопасность mysqld
, как и
любой другой поточной программы, зависит от поведения кода, который создает
потоки. Выходит, что запросто можно влезть в свои же рабочие данные... Каждая
программа должна самостоятельно следить за тем, куда и что она пишет. В
mysqld
Вы должны предписать это поведение, устанавливая
приемлемое значение для переменной max_connections
.
Если Вы формируете MySQL самостоятельно, и не хотите проблем с внесением
исправлений в LinuxThreads, Вы должны установить max_connections
к значению не выше, чем 500. Это должно быть еще меньше, если Вы имеете
большой буфер ключей, большие таблицы heap или некоторые другие вещи, которые
заставляют mysqld
распределять много памяти, или если Вы
управляете ядром 2.2 с 2GB-заплатой. Если Вы используете RPM version 3.23.25
(или позже) или двоичный дистрибутив, Вы можете безопасно устанавливать
max_connections
в 1500. Для STACK_SIZE
в
LinuxThreads рекомендуются значения в диапазоне 128K и 256K.
Если Вы используете много параллельных подключений, Вы можете страдать от "особенности" в ядре 2.2, которое оштрафует процесс за forking или клонирование в попытке предотвратить нападения типа fork bomb. Это заставит MySQL не масштабироваться как должно бы, когда Вы увеличиваете число параллельных клиентов. На однопроцессорных системах это проявится в очень медленном создании потоков, в результате чего может требоваться длительное время, чтобы подключиться к MySQL (до минуты!), и может требоваться еще столько же на закрытие соединения. Заплата для ядра доступна здесь ( http://www.mysql.com/Downloads/Patches/linux-fork.patch. Эта проблема была исправлена в ядре 2.4.
Авторы проверили MySQL на ядре 2.4 на машине с 2 CPU и нашли, что MySQL
масштабируется теперь НАМНОГО лучше: не имелось фактически никакого
замедления на производительности запросов вплоть до 1000 клиентов, а
коэффициент масштабируемости (отношение максимальной производительности к
производительности с одним пользователем) был 180%. Авторы наблюдали подобные
результаты и на системе с 4 процессорами: фактически никакого замедления,
поскольку число клиентуры увеличивалось до 1000, а коэффициент
масштабируемости составил вообще 300%. Так что для высокой загрузки
SMP-сервера определенно рекомендуется ядро 2.4. Авторы также обнаружили, что
необходимо выполнить процесс mysqld
с самым высоким возможным
приоритетом, чтобы достигнуть максимальной эффективности. Это может быть
выполнено добавлением команды renice -20 $$
в скрипт
safe_mysqld
. Это дало 60% рост производительности с 400
клиентами на 4-процессорной машине.
Имеется другая проблема, которая причиняет значительный вред эффективности MySQL, особенно на SMP-системах. Реализация mutex в LinuxThreads в glibc-2.1 очень плоха для программ со многими потоками, которые используют mutex только в течение короткого времени. На SMP-системе, если Вы компонуете MySQL со стандартным LinuxThreads, удаление процессоров из машины во многих случаях улучшает эффективность MySQL, как ни невероятно. Уже сделали заплату для glibc 2.1.3, linuxthreads-2.1-patch, чтобы исправить это поведение.
С glibc-2.2.2 MySQL version 3.23.36 использует адаптивный
mutex, который намного лучше, чем исправленный glibc-2.1.3.
Однако, что при некоторых условиях, текущий код mutex в
glibc-2.2.2 причиняет вред MySQL эффективности. Возможность
этого может быть уменьшена объявлением renicing для процесса
mysqld
к самому высокому приоритету. Впрочем, есть и заплатка на
http://www.mysql.com/Downloads/Linux/linuxthreads-2.2.2.patch. Вы должны
применить ее в каталоге linuxthreads
командой
patch -p0 </tmp/linuxthreads-2.2.2.patch
. В любом случае,
если Вы компонуете пакет с glibc-2.2.2
, Вы все еще должны
исправить STACK_SIZE
и PTHREAD_THREADS_MAX
.
Лучше всего, чтобы Вы использовали вышеупомянутые заплаты, чтобы
формировать специальную статическую версию libpthread.a
и
использовали ее только для статической компоновки MySQL. Я знаю, что заплаты
безопасны для MySQL и сильно улучшают эффективность, но кто может сказать
хоть что-нибудь относительно других прикладных программ? Если Вы компонуете
другие прикладные программы с исправленной версией библиотеки, или формируете
исправленную общедоступную версию и устанавливаете ее на Вашей системе, за
последствия отвечайте сами.
Если Вы испытываете любые странные проблемы при установке MySQL, или с общим зависанием утилит, вероятно, что они вызваны компилятором или библиотекой. Если дело обстоит так, применение двоичного дистрибутива должно решить эти проблемы.
Одна известная проблема с двоичным дистрибутивом состоит в том, что со
старыми Linux-системами, которые используют libc
(подобно RedHat
4.x или Slackware), Вы получите некоторые с разрешением hostname. Подробности
в разделе "2.6.1.1 Замечания по Linux
для двоичных дистрибутивов".
При использовании LinuxThreads Вы увидите три процесса: один для менеджера LinuxThreads, второй для обработки соединений, а третий для сигналов.
Обратите внимание, что ядро Linux и библиотека LinuxThread могут по умолчанию иметь только 1024 процесса. Это означает, что Вы можете иметь только до 1020 подключений к MySQL на неисправленной системе. Страница http://www.volano.com/linuxnotes.html имеет информацию о том, как обойти это досадное ограничение.
Если Вы видите свалившийся процесс mysqld
с помощью команды
ps
, это обычно означает, что Вы нашли ошибку в MySQL, или Вы
имеете разрушенную таблицу. Подробности в разделе
"8.4.1 Что делать, если MySQL рушится".
Чтобы получить дамп ядра под Linux, если mysqld
завершается с
сигналом SIGSEGV, Вы должны запустить mysqld
с опцией
--core-file
. Обратите внимание, что Вы также, вероятно, должны
поднять размер файла дампа (core file size
), добавляя строку
ulimit -c 1000000
в safe_mysqld
или запуская
safe_mysqld
с опцией --core-file-sizes=1000000
.
Подробности в разделе "4.7.2 safe_mysqld,
обертка вокруг mysqld".
Если Вы компонуете свой клиент 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
MySQL требует как минимум Linux Version 2.0.
ПРЕДУПРЕЖДЕНИЕ: Есть отчеты от некоторых пользователей MySQL, что они имеют серьезные проблемы стабильности MySQL с ядром Linux 2.2.14. Если Вы используете это ядро, Вы должны обновить его до 2.2.19 (или выше) или перейти на ядро 2.4. Если Вы имеете многопроцессорный сервер, то Вы должны серьезно рассмотреть использование 2.4, поскольку это даст Вам значительное увеличение быстродействия.
Двоичный релиз компонуется с опцией -static
, что означает,
что Вы обычно не должны заботиться о том, какую версию библиотек системы Вы
имеете. Вы также не должны устанавливать LinuxThreads. Программа,
скомпонованная с опцией -static
, немного больше, чем динамически
скомпонованная, но также и немного быстрее (на 3-5%). Одна проблема, однако,
состоит в том, что Вы не можете применять определяемые пользователем функции
(UDFs) со статически скомпонованной программой. Если Вы собираетесь писать
или использовать функции UDF (это только для программистов на C или C++), Вы
должны откомпилировать MySQL самостоятельно используя динамические связи.
Если Вы используете libc
-систему (вместо
glibc2
-системы), Вы, вероятно, получите некоторые проблемы с
преобразованием hostname и работой getpwnam()
с двоичным
дистрибутивом. Это потому, что glibc
, к сожалению, зависит от
некоторых внешних библиотек, чтобы работать с hostnames и
getpwent()
, даже когда она компилируется с опцией
-static
. В этом случае Вы, вероятно, получите следующее
сообщение об ошибках, когда Вы выполняете mysql_install_db
:
Sorry, the host 'xxxx' could not be looked up
Или следующую ошибку, когда Вы попробуете выполнять mysqld
с
опцией --user
:
getpwnam: No such file or directory
Вы можете решить эту проблему одним из следующих путей:
tar.gz
) и поставить их
вместо этого дистрибутива.
mysql_install_db --force
. Это не будет выполнять
тест resolveip
в mysql_install_db
. Обратная сторона
в том, что Вы не сможете использовать имена хостов в таблицах предоставления
привилегий. Вы должны взамен использовать IP-адреса (если это не
localhost
). Если Вы используете старый выпуск MySQL, который не
поддерживает --force
, Вы должны удалить тест
resolveip
из mysql_install
ручками.
mysqld
командой su
вместо опции
--user
.Linux-Intel двоичный и RPM-дистрибутивы MySQL сконфигурированы для самого высокого возможного быстродействия.
Поддержка MySQL Perl требует Perl Version 5.004_03 или выше.
На некоторых версиях Linux 2.2 Вы можете получать ошибку Resource
temporarily unavailable
, когда Вы делаете много новых подключений к
серверу mysqld
через TCP/IP.
Проблема состоит в том, что Linux имеет задержку между тем, когда Вы закрываете TCP/IP-порт и тем, когда он фактически будет освобожден системой. Поскольку имеется участок памяти только для конечного числа портов TCP/IP, Вы получите вышеупомянутую ошибку, если Вы пробуете делать слишком много новых TCP/IP-подключений в течение маленького времени подобно тому, когда Вы выполняете эталонный тест MySQL test-connect через TCP/IP.
Единственное известное исправление этой проблемы должно использовать
постоянные подключения в Ваших клиентах или применять сокеты, если сервер и
программы-клиенты работают на одной и той же физической машине. Надеюсь, что
ядро Linux 2.4
эту проблему в будущем снимет.
MySQL требует libc
Version 5.4.12 или выше. Известно, что он
работает с libc
5.4.46. С glibc
Version 2.0.6 и
выше также должен работать. Имелись некоторые проблемы с glibc
RPM из RedHat, так что, если Вы имеете проблемы, проверьте, имеются или нет
любые модификации! RPM glibc
2.0.7-19 и 2.0.7-29, как известно,
работают вполне прилично.
В некоторых старых версиях Linux вызов configure
может
производить ошибку подобно этому:
Syntax error in sched.h. Change _P to __P in the /usr/include/sched.h file. See the Installation chapter in the Reference Manual.
Сделайте то, что говорит сообщение об ошибках и добавьте символ
подчеркивания к макрокоманде _P
, которая имеет только один
символ подчеркивания, затем попробуйте снова.
Вы можете получать некоторые предупреждения при компиляции. Показанные ниже могут игнорироваться:
mysqld.cc -o objs-thread/mysqld.o mysqld.cc: In function `void init_signals()': mysqld.cc:315: warning: assignment of negative value `-1' to `long unsigned int' mysqld.cc: In function `void * signal_hand(void *)': mysqld.cc:346: warning: assignment of negative value `-1' to `long unsigned int'
В Debian GNU/Linux, если Вы хотите, чтобы MySQL запустился автоматически, когда система загружается, сделайте следующее:
shell> cp support-files/mysql.server /etc/init.d/mysql.server shell> /usr/sbin/update-rc.d mysql.server defaults 99
mysql.server
может быть найден в каталоге
share/mysql под каталогом установок MySQL или в каталоге
support-files дерева исходников MySQL.
Если mysqld
всегда падает в дамп при запуске, проблема может
быть в том, что Вы имеете старую /lib/libc.a. Попробуйте
переименовать ее, затем удалить sql/mysqld, выполнить make
install
и запуститься снова. Об этой проблеме было сообщено для
некоторых инсталляций Slackware.
Если Вы получаете следующую ошибку при компоновке mysqld
, это
означает, что Ваша libg++.a не установлена правильно:
/usr/lib/libc.a(putc.o): In function `_IO_putc': putc.o(.text+0x0): multiple definition of `_IO_putc'
Вы можете избежать использования libg++.a запуском
configure
примерно так:
shell> CXX=gcc ./configure
В некоторых реализациях readdir_r()
разрушен. Симптом этого:
SHOW DATABASES
всегда возвращает пустой набор. Это может быть
исправлено удалением HAVE_READDIR_R
из config.h после
настройки, но перед компиляцией.
Некоторые проблемы требуют внесения исправлений в Вашу установку Linux.
Заплата может быть найдена в
http://www.mysql.com/Downloads/patches/Linux-sparc-2.0.30.diff. Эта
заплата для дистрибутива Linux sparclinux-2.0.30.tar.gz, который
является доступным на vger.rutgers.edu
(версия Linux, которая
никогда не была объединена с официальным выпуском 2.0.30). Вы должны также
установить LinuxThreads Version 0.6 или более новую.
MySQL Version 3.23.12 представляет собой первую версию MySQL, которая проверена на Linux-Alpha. Если Вы планируете использовать MySQL на Linux-Alpha, Вы должны гарантировать, что имеете эту версию или более новую.
Когда авторы компилировали стандартный двоичный дистрибутив MySQL, были применены следующие средства: SuSE 6.4, ядро 2.2.13-SMP, компилятор Compaq C (V6.2-504) и Compaq C++ (V6.3-005) на машине on a Compaq DS20 с Alpha EV6.
Вы можете находить вышеупомянутые трансляторы на http://www.support.compaq.com/alpha-tools. Используя эти трансляторы вместо gcc, получается приблизительно на 9-14% лучшая эффективность MySQL.
Обратите внимание, что строка выбора конфигурации оптимизировала двоичный код для текущего CPU. Это означает, что Вы можете использовать двоичный дистрибутив только, если Вы имеете процессор Alpha EV6. Пакет также компилируется статически, чтобы избежать разных библиотечных проблем.
CC=ccc CFLAGS="-fast" CXX=cxx CXXFLAGS="-fast -noexceptions -nortti" ./configure --prefix=/usr/local/mysql --disable-shared --with-extra-charsets=complex --enable-thread-safe-client --with-mysqld-ldflags=-non_shared --with-client-ldflags=-non_shared
Если Вы хотите использовать egcs, следующая строка настройки пригодится:
CFLAGS="-O3 -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --disable-shared
Некоторые известные проблемы при управлении MySQL на Linux-Alpha:
gdb 4.18
. Вы должны загрузить и использовать gdb 5.0!
mysqld
статически при
использовании gcc
, возникающий в результате образ будет падать в
дамп. Другими словами: НЕ используйте
--with-mysqld-ldflags=-all-static
с gcc
!!!MySQL должен работать на MkLinux с самым новым пакетом glibc
(проверен с glibc
2.0.7).
Чтобы получить MySQL, работающий на Qube2 (Linux Mips), Вы нуждаетесь в
самой новой библиотеке glibc
(известно, что
glibc-2.0.7-29C2
работает нормально). Вы должны также
использовать компилятор egcs
C++ (egcs-1.0.2-9
,
gcc 2.95.2
или более новый).
Чтобы компилировать MySQL на Linux Ia64, Вы должны сделать следующее:
Использовать gcc-2.9-final
с такими опциями:
CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors -fno-exceptions \ -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler \ --with-mysqld-ldflags=-all-static --disable-shared \ --with-extra-charsets=complex
После make
Вы получите ошибку, что
sql/opt_range.cc
не будет компилироваться (внутренняя ошибка
транслятора). Чтобы исправить это, перейдите в каталог sql и снова введите
make
. Скопируйте строку настройки, но поменяйте в ней -O2 на
-O0. Файл должен теперь компилироваться.
Теперь Вы можете сделать следующее:
cd .. make make_install
и mysqld
должен быть готов выполниться.
На Ia64 клиенты MySQL используют общедоступные библиотеки. Это означает,
что, если Вы устанавливаете двоичный дистрибутив в некоторое другое место, а
не в /usr/local/mysql, Вы должны или изменить
/etc/ld.so.conf или добавить путь к каталогу, где Вы имеете
libmysqlclient.so к системной переменной
LD_LIBRARY_PATH
.
Подробности есть в разделе "8.3.1 Проблемы с компоновкой с библиотекой клиентов MySQL".
Этот раздел описывает установку и использование MySQL в Windows. Эта информация также обеспечивается файлом README, который приходит с дистрибутивом MySQL для Windows.
MySQL использует TCP/IP для связи сервера с клиентом. Из-за этого Вы должны установить TCP/IP на Вашей машине перед запуском MySQL. TCP/IP можно найти на Windows CD-ROM.
Обратите внимание, что, если Вы используете старый выпуск Win95 (например OSR2), вероятно, что Вы имеете старый пакет Winsock! MySQL требует Winsock 2! Вы можете обновить пакет Winsock с http://www.microsoft.com. Win98 имеет новую библиотеку Winsock 2, так что вышеупомянутое на нее не распространяется.
Чтобы запустить сервер mysqld
, Вы должны запустить окно
MS-DOS и напечатать:
C:\> C:\mysql\bin\mysqld
Это запустит mysqld
на заднем плане без окна.
Вы можете уничтожить сервер MySQL, выполняя:
C:\> C:\mysql\bin\mysqladmin -u root shutdown
Обратите внимание, что Win95 и Win98 не поддерживают создание именованных
каналов. В Win95 и Win98, Вы можете только использовать именованные каналы,
чтобы подключиться к удаленной MySQL-системе, работающей под Windows NT.
Сервер MySQL должен также поддерживать именованные каналы, конечно. Например,
использование mysqld-opt
под NT не будет позволять подключения
через именованные каналы. Вы должны использовать mysqld-nt
или
mysqld-max-nt
.
Если mysqld
запускаться не хочет, пожалуйста, проверьте файл
\mysql\data\mysql.err, чтобы увидеть, записал ли сервер там любое
сообщение, чтобы указать причину проблемы. Вы можете также попробовать
запустить сервер с параметром mysqld --standalone
. В этом случае
Вы можете получать некоторую полезную информацию, которая может помочь решить
проблему, на экран.
Можно попробовать запустить mysqld
с --standalone
--debug
. В этом случае mysqld
будет писать журнал
C:\mysqld.trace, который должен содержать причину, почему
mysqld
не запускается. Подробности в разделе
"6.1.2 Создание файлов трассировки
".
Раздел по Win95/Win98 также применим к MySQL под NT/Win2000 со следующими небольшими поправками и особенностями:
Чтобы MySQL мог работать с TCP/IP на NT, Вы должны установить service pack 3 (или выше)!
Для NT/Win2000 имя сервера: mysqld-nt
. Обычно Вы должны
установить MySQL как сервис под NT/Win2000:
C:\> C:\mysql\bin\mysqld-nt --install
или
C:\> C:\mysql\bin\mysqld-max-nt --install
Под Windows NT Вы можете фактически устанавливать любой сервер как сервис,
но только те, чьи имена заканчиваются на -nt.exe
, обеспечивают
поддержку для именованных каналов.
Вы можете запускать и завершать сервис MySQL командами:
C:\> NET START mysql C:\> NET STOP mysql
Обратите внимание, что в этом случае Вы не можете использовать любые
другие параметры для mysqld-nt
!
Вы можете также выполнять mysqld-nt
как автономную программу
на NT, для этого Вы должны запустить mysqld-nt
с параметрами!
Если Вы запускаете mysqld-nt
без параметров на NT,
mysqld-nt
пробует запускать себя как обслуживание с заданными по
умолчанию сервисными параметрами. Если Вы остановили mysqld-nt
,
Вы должны запустить его с помощью NET START mysql
.
Сервис будет установлен с именем MySQL
. После установки он
должен быть запущен через Services Control Manager (SCM) Utility, находящейся
в Control Panel, или через команду NET START MySQL
. Если любые
параметры желательны, они должны быть определены как ``Startup parameters'' в
SCM utility прежде, чем Вы запустите сервис MySQL. После запуска
mysqld-nt
может быть остановлен, используя
mysqladmin
или из SCM, или используя команду NET STOP
MySQL
. Если Вы используете SCM, чтобы остановить
mysqld-nt
, обычно имеется странное сообщение из SCM относительно
mysqld shutdown normally
. Когда сервер выполнен как сервис,
mysqld-nt
не имеет никакого доступа к консоли, так что никакие
сообщения не могут быть замечены.
На NT Вы можете получать следующие сервисные сообщения об ошибках:
Permission Denied | Означает, что не может найти
mysqld-nt.exe . |
Cannot Register | Означает, что путь неправилен. |
Failed to install service. | Означает, что сервис уже установлен, или что Service Control Manager не работает. |
Если Вы имеете проблемы при установке mysqld-nt
как сервиса,
попробуйте запускать его с заданием полного пути:
C:\> C:\mysql\bin\mysqld-nt --install
Если это не работает, Вы можете запустить mysqld-nt
,
устанавливая путь в системном реестре.
Если Вы не хотите запускать mysqld-nt
как сервис, можете
запустить его следующим образом:
C:\> C:\mysql\bin\mysqld-nt --standalone
или
C:\> C:\mysql\bin\mysqld --standalone --debug
Последняя версия дает Вам трассировку отладки в файле C:\mysqld.trace. Подробности в разделе "6.1.2 Создание файлов трассировки ".
MySQL поддерживает TCP/IP на всех платформах Windows и именованные каналы на NT. По умолчанию он должен использовать именованные каналы для локальных подключений на NT и TCP/IP для всех других случаев, если пользователь имеет установленный TCP/IP. Имя хоста определяет, какой протокол используется:
Протокол | |
NULL (none) | Под NT сначала попробовать именованный канал. Если ничего не вышло, использовать TCP/IP. Под Win95/Win98 использовать TCP/IP сразу. |
. | Именованный канал |
localhost | TCP/IP-связь с текущим хостом |
hostname | TCP/IP |
Вы можете вынуждать клиента MySQL использовать именованный канал,
определяя опцию --pipe
или указывая точку (.
) как
имя хоста. Применяйте опцию --socket
, чтобы задать имя канала.
Вы можете проверять, работает или нет MySQL, выполняя следующие команды:
C:\> C:\mysql\bin\mysqlshow C:\> C:\mysql\bin\mysqlshow -u root mysql C:\> C:\mysql\bin\mysqladmin version status proc C:\> C:\mysql\bin\mysql test
Если mysqld
не спешит отвечать на подключения под
Win95/Win98, вероятно, имеется проблема с Вашим DNS. В этом случае запустите
mysqld
с опцией --skip-name-resolve
и используйте
только localhost
и IP-адреса в таблицах предоставления
привилегий MySQL. Вы можете также не использовать DNS при соединении с
mysqld-nt
на NT, задавая параметр --pipe
, чтобы
определить использование именованных каналов. Этот прием работает для
большинства клиентов MySQL.
Имеется две версии инструмента командной строки MySQL:
mysql | Скомпилирован с библиотеками Windows, которые предлагают очень ограниченные возможности редактирования текста. |
mysqlc | Собран с помощью Cygnus GNU compiler и
библиотек, которые предлагают редактирование через readline .
|
Если Вы хотите использовать mysqlc.exe
, Вы должны скопировать
файл C:\mysql\lib\cygwinb19.dll в Ваш системный каталог Windows
(\windows\system).
Заданные по умолчанию привилегии на Windows дают всем локальным
пользователям полные привилегии для доступа ко всем базам данных без того,
чтобы определить пароль. Чтобы сделать MySQL более безопасным, Вы должны
установить пароли для всех пользователей и удалить строку в таблице
mysql.user
, которая имеет значения Host='localhost'
и User=''
.
Вы должны также добавить пароль для пользователя root
.
Следующий пример начинается с удаления анонимного пользователя, который может
использоваться любым, чтобы обратиться к базе данных test
,
а затем устанавливается пароль для root
:
C:\> C:\mysql\bin\mysql mysql mysql> DELETE FROM user WHERE Host='localhost' AND User=''; mysql> QUIT C:\> C:\mysql\bin\mysqladmin reload C:\> C:\mysql\bin\mysqladmin -u root password your_password
После того, как вы установили пароль, если Вы хотите завершить сервер
mysqld
, Вы можете скомандовать:
C:\> mysqladmin --user=root --password=your_password shutdown
Если Вы используете старую shareware-версию MySQL Version 3.21 под
Windows, вышеупомянутая команда будет терпеть неудачу с ошибкой:
parse error near 'SET OPTION password'
. Обновитесь до текущей
версии MySQL, которая свободно доступна.
С текущими версиями MySQL Вы можете легко добавлять новых пользователей и
изменять привилегии командами GRANT
и REVOKE
.
Подробности в разделе "4.3.1 Синтаксис
GRANT
и REVOKE
".
Имеется замечание относительно того, как соединяться, чтобы получить безопасное подключение к удаленному серверу MySQL через SSH (автор: David Carlson, dcarlson@mplcomm.com):
SecureCRT
доступен на
http://www.vandyke.com. Другой вариант:
f-secure
с
http://www.f-secure.com. Вы можете также найти некоторые свободные
клиенты на Google как
http://directory.google.com/Top/Computers/Security/Products_and_Tools/Cryptography/SSH/Clients/Windows.
Крекеры к ним доступны на
http://astalavista.box.sk
Host_Name=yourmysqlserver_URL_or_IP
,
userid=your_userid
для входа на сервер (это далеко не всегда
совпадает с логином/паролем для MySQL).
local_port: 3306
,
remote_host: yourmysqlservername_or_ip
,
remote_port: 3306
) или локальную пересылку (port:
3306
, host: localhost
, remote port: 3306
).
localhost
для хоста сервера MySQL, а не
yourmysqlservername
.Вы должны теперь иметь ODBC-подключение к MySQL, зашифрованное посредством использования протокола SSH.
Начиная с MySQL Version 3.23.16, серверы mysqld-max
и
mysql-max-nt
в дистрибутивах MySQL компилируются с опцией
-DUSE_SYMDIR
. Это позволяет Вам помещать базу данных на другом
диске, добавляя символическую связь с текущим (аналогично тому, как
символические связи работают в Unix).
В Windows Вы делаете символическую связь с базой данных, создавая файл, который содержит путь к каталогу-адресату и пишете его в каталог mysql_data под именем database.sym. Обратите внимание, что символическая связь будет использоваться только, если каталог mysql_data_dir\database не существует.
Например, если каталог данных MySQL C:\mysql\data, и Вы хотите
иметь базу данных foo
, размещенной в D:\data\foo, Вы
должны создать файл C:\mysql\data\foo.sym, который содержит текст
D:\data\foo\
. После того, как это сделано, все таблицы,
созданные в базе данных foo
, будут созданы в каталоге
D:\data\foo.
Обратите внимание, что из-за снижения быстродействия при открытии таблиц,
авторы не включили это дело по умолчанию, даже если Вы компилировали MySQL с
соответствующей поддержкой. Чтобы запустить символические связи, Вы должны
поместить в Ваш файл my.cnf
или my.ini
следующее:
[mysqld] use-symbolic-links
В MySQL 4.0 связи включены по умолчанию. Зато Вы должны использовать опцию
skip-symlink
, если Вы хотите отключить это свойство.
В ваших исходных файлах Вы должны включить windows.h прежде, чем Вы включаете mysql.h:
#if defined(_WIN32) || defined(_WIN64) #include <windows.h> #endif #include <mysql.h>
Вы можете или связывать Ваш код с динамической библиотекой libmysql.lib, которая является только оберткой, чтобы загрузить по требованию libmysql.dll, или скомпоновать со статической библиотекой mysqlclient.lib.
Обратите внимание, что, поскольку библиотеки mysqlclient компилируются как threaded, Вы должны также компилировать Ваш код, как multi-threaded!
MySQL-Windows к настоящему времени доказал свою устойчивость, насколько под этой системой возможно существование устойчивых программ. Эта версия MySQL имеет те же самые свойства, что и соответствующая Unix-версия со следующими исключительными ситуациями:
mysqld
долго под Win95, если Ваш сервер обрабатывает много
подключений! WinNT и Win98 не страдают от этой ошибки.
pread()
и pwrite()
,
чтобы быть способным смешивать INSERT
и SELECT
. В
настоящее время используется mutexes, чтобы эмулировать
pread()
/pwrite()
. Авторы в конечном счете заменят
интерфейс уровня файла на виртуальный интерфейс так, чтобы использовать
readfile()
/writefile()
на NT, чтобы получить
большее быстродействие. Текущая реализация ограничивает число открытых файлов
MySQL 1024, это означает, что Вы не способны выполнить так много параллельных
потоков на NT, как в Unix.
mysqladmin kill
не будет работать на спящем подключении.
mysqladmin shutdown
не может прервать работу сервера, пока
там бездействуют подключения.DROP DATABASE
mysqladmin shutdown
.
LOAD DATA INFILE
или SELECT ... INTO OUTFILE
, Вы
должны задать двойной символ \:
mysql> LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr; mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;Альтернативно, используйте имена файлов Unix-стиля с символом `/', но уже с одним:
mysql> LOAD DATA INFILE "C:/tmp/skr.txt" INTO TABLE skr; mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;
Ошибка "Can't open named pipe"
error 2017: can't open named pipe to host: . pipe...Это потому, что финальная версия MySQL по умолчанию использует именованные каналы на NT. Вы можете избегать этой ошибки, используя параметр
--host=localhost
с новой клиентурой MySQL или
создавать файл опций C:\my.cnf, который включает следующее:
[client] host = localhost
Ошибка "Access denied for user"
Access denied for user:
'some-user@unknown' to database 'mysql'
" при обращении к серверу MySQL
на той же самой машине, это означает, что MySQL не может правильно
преобразовать Ваше имя машины. Чтобы это обойти, Вы должны создать файл
\windows\hosts со следующей информацией:
127.0.0.1 localhost
ALTER TABLE
ALTER TABLE
,
таблица блокирована для использования другими потоками. Это потому, что в
Windows Вы не можете удалять файл, который находится в использовании другими
потоками. В будущем планируется найти способ работать без этой проблемы.
DROP TABLE
на таблице, которая находится в
использовании таблицей типа MERGE
, не будет работать
MERGE
делает таблицу скрытой от MySQL. Потому, что
Windows не позволяет Вам удалять файлы, которые являются открытыми, Вы
сначала должны сбросить все таблицы из блока MERGE
(командой
FLUSH TABLES
) или сначала удалить таблицу MERGE
.
Имеются некоторые проблемы для любого, кто мог бы помочь с портированием пакета под Windows:
MYSQL.DLL
. Это
должно включать все из стандартного сервера MySQL, за исключением создания
потоков. Это сделает MySQL намного проще, чтобы использовать в прикладных
программах, которые не нуждаются в истинном протоколе клиент-сервер, и им не
надо обращаться к серверу с других компьютеров.
mysqld
как сервис с опцией
--install
(на NT) было бы хорошо, если бы Вы могли также
добавлять заданные по умолчанию параметры в командной строке.
mysqld
из менеджера задач.
Сейчас для этого надо использовать mysqladmin shutdown
.
readline
под Windows для использования в
инструменте командной строки mysql
.
mysql
,
mysqlshow
, mysqladmin
и mysqldump
).
mysqladmin kill
.
mysqld
всегда запускается с локалью "C". Следует сделать
mysqld
, который использует текущий язык для порядка сортировки.
.DLL
.
Другие специфические для Windows проблемы описаны в файле
README
, который приходит с дистрибутивом MySQL-Windows.
В 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
), чтобы распаковать дистрибутив. Откомпилированная версия
gtar
для Solaris есть на
http://www.mysql.com/Downloads.
Собственные потоки Sun работают только на Solaris 2.5 и выше. Для Version 2.4 и раньше MySQL автоматически использует MIT-pthreads. Подробности в разделе "2.3.6 Замечания по 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'}
Если Вы используете Solaris на SPARC, рекомендуемый транслятор
gcc
2.95.2. Вы можете найти его на
http://gcc.gnu.org. Обратите внимание, что egcs
1.1.1 и
gcc
2.8.1 не работают надежно на SPARC!
Рекомендуемая строка configure
при использовании
gcc
2.95.2:
CC=gcc CFLAGS="-O3" \ CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" \ ./configure --prefix=/usr/local/mysql --with-low-memory \ --enable-assembler
Если Вы имеете ultra sparc, Вы можете получить примерно на 4% больше эффективности, добавляя "-mcpu=v8 -Wa,-xarch=v8plusa" к CFLAGS и CXXFLAGS.
Если Вы имеете компилятор Sun Workshop (Fortre) 5.3 (или новее),
Вы можете выполнять configure
так:
CC=cc CFLAGS="-Xa -fast -xO4 -native -xstrconst -mt" \ CXX=CC CXXFLAGS="-noex -xO4 -mt" ./configure --prefix=/usr/local/mysql \ --enable-assembler
В эталонных тестах MySQL получено ускорение на 6% на Ultrasparc при использовании Sun Workshop 5.3 в сравнении с gcc с опцией -mcpu.
Если Вы получаете проблему с fdatasync
или
sched_yield
, Вы можете решить ее добавлением к строке настройки
LIBS=-lrt
.
Следующий параграф относится к компиляторам старше, чем WorkShop 5.3:
Вам, вероятно, также придется редактировать скрипт configure
,
чтобы изменить эту строку:
#if !defined(__STDC__) || __STDC__ != 1
на эту строку:
#if !defined(__STDC__)
Если Вы включаете __STDC__
с опцией -Xc
,
компилятор Sun не может компилировать с файлом заголовка Solaris
pthread.h. Это ошибка Sun.
Если mysqld
выдает сообщение об ошибках, показанное ниже,
значит Вы пробовали компилировать MySQL компилятором Sun без включения опции
процесса с параллельными потоками команд (-mt
):
libc internal error: _rmutex_unlock: rmutex not held
Добавьте -mt
в CFLAGS
и CXXFLAGS
,
после чего попробуйте снова.
Если Вы получаете следующую ошибку при компиляции MySQL с
gcc
, это означает, что Ваш 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'
В этом случае надо получить самую новую версию gcc
! По
крайней мере для Solaris 2.5, почти все двоичные версии gcc
имеют старые, непригодные, включаемые файлы, которые разорвут все программы,
использующие потоки (и, возможно, другие программы)!
Solaris не обеспечивает статические версии всех библиотек системы
(libpthreads
и libdl
), так что Вы не можете
компилировать MySQL с опцией --static
. Если Вы попробуете это
сделать, получите ошибку:
ld: fatal: library -ldl: not found или undefined reference to `dlopen' или cannot find -lrt
Если слишком много процессов очень быстро пробуют соединяться с
mysqld
, Вы будете видеть эту ошибку в файле регистрации MySQL:
Error in accept: Protocol error
Вы можете попробовать запускать сервер с опцией --set-variable
back_log=50
для обхода этого. Подробности в разделе
"4.1.1
Опции командной строки mysqld".
Если Вы компонуете собственного MySQL-клиента, можете получить следующую ошибку, когда Вы попробуете выполнить его:
ld.so.1: ./my: fatal: libmysqlclient.so.#: open failed: No such file or directory
Проблемы можно избежать одним из следующих методов:
-Lpath
):
-Wl,r/full-path-to-libmysqlclient.so
.
LD_RUN_PATH
перед запуском клиента.При использовании опции настройки --with-libwrap
, Вы должны
также включить библиотеки, в которых нуждается libwrap.a:
--with-libwrap="/opt/NUtcpwrapper-7.6/lib/libwrap.a -lnsl -lsocket
Если Вы имеете проблемы с выбором конфигурации, пробуя скомпоноваться с
-lz
, и Вы не имеете установленной библиотеки сжатия
zlib
, Вы имеете два варианта действий:
--with-named-z-libs=no
.Если Вы используете gcc и имеете проблемы с загрузкой функций
UDF
в MySQL, попробуйте добавить -lgcc
в строку
компоновки для функций UDF
.
Если Вы хотели бы, чтобы MySQL запускался автоматически, Вы можете скопировать support-files/mysql.server в /etc/init.d и создать символическую связь с именем /etc/rc3.d/S99mysql.server.
Вы можете нормально использовать двоичный код из Solaris 2.6 на Solaris 2.7 и 2.8. Большинство проблем Solaris 2.6 также есть и в Solaris 2.7 и 2.8.
Обратите внимание, что MySQL Version 3.23.4 и выше должен быть способен автоматически обнаружить новые версии Solaris и включить обход проблем!
Solaris 2.7/2.8 имеет некоторые ошибки во включаемых файлах. Вы можете
видеть следующую ошибку, когда Вы используете 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 `;'
Решение состоит в том, чтобы сделать одно из следующих действий:
CFLAGS=-DHAVE_CURSES_H
CXXFLAGS=-DHAVE_CURSES_H ./configure
.
#define HAVE_TERM
из файла config.h
и снова выполните make
.Если Вы получаете проблему из-за того, что Ваш компоновщик не может найти
-lz
при попытке компоновки Вашей программы-клиента, вероятно,
что Ваш файл libz.so установлен в /usr/local/lib. Вы можете
исправить эту ситуацию одним из следующих методов:
LD_LIBRARY_PATH
.
--with-named-z-libs=no
.В Solaris 2.8 на x86 mysqld
выпадает в дамп, если Вы
запустите для него strip.
Если Вы используете gcc
или egcs
на Solaris x86,
и Вы испытываете проблемы с дампами при загрузке, Вы должны использовать
следующую команду выбора конфигурации configure
:
CC=gcc CFLAGS="-O3 -fomit-frame-pointer -DHAVE_CURSES_H" \ CXX=gcc \ CXXFLAGS="-O3 -fomit-frame-pointer -felide-constructors \ -fno-exceptions -fno-rtti -DHAVE_CURSES_H" \ ./configure --prefix=/usr/local/mysql
Это обходит проблемы с libstdc++
и исключениями в C++.
Если это не помогает, Вы должны компилировать версию для отладки и
выполнять ее с файлом трассировки или под отладчиком gdb
.
Подробности в разделе "6.1.3
Отладка mysqld под gdb".
FreeBSD 3.x рекомендуется для работы MySQL, так как пакет потоков намного больше интегрирован в систему.
Самый простой способ установить пакет состоит в том, чтобы использовать mysql-server и mysql-client, доступные на http://www.freebsd.org.
Использование их дает Вам:
Рекомендуется, чтобы Вы использовали MIT-pthreads на FreeBSD 2.x и местные
потоки на Versions 3 и выше. Возможно выполнять пакет с местными потоками на
некоторых поздних версиях 2.2.x, но Вы можете сталкиваться с проблемами при
закрытии сервера mysqld
.
MySQL Makefile требует для работы GNU make. Если Вы хотите
компилировать MySQL, Вы должны сначала установить GNU make
.
Убедитесь, что имеете правильную установку системы имен. Иначе Вы можете
испытывать задержки сервера имен или сбои при соединении с
mysqld
.
Удостоверьтесь, что запись для localhost
в файле
/etc/hosts правильная (иначе Вы будете иметь проблемы при соединении
с базой данных). Файл /etc/hosts должен начинаться со строки:
127.0.0.1 localhost localhost.your.domain
Если Вы обращаете внимание, что configure
использует
MIT-pthreads, Вы должны прочитать замечания по MIT-pthreads. Подробности в
разделе "2.3.6 Замечания по MIT-pthreads
".
Если Вы получаете ошибку из скрипта make install
, который не
может найти /usr/include/pthreads, configure
не
обнаружил, что Вы нуждаетесь в MIT-pthreads. Это исправляется командой:
shell> rm config.cache shell> ./configure --with-mit-threads
FreeBSD, как известно, имеет очень низкое заданное по умолчанию
ограничение на число дескрипторов файла. Подробности в разделе
"8.2.16 Файл не найден".
Раскомментируйте секцию ulimit -n в safe_mysqld или поднимите ограничения для
пользователя mysqld
в /etc/login.conf (и пересоздайте его с
cap_mkdb /etc/login.conf). Также убедитесь, что Вы устанавливаете
соответствующий класс для этого пользователя в файле паролей, если Вы не
используете значение по умолчанию (скомандуйте chpass mysqld-user-name).
Подробности в разделе "4.7.2 safe_mysqld,
обертка вокруг mysqld".
Если Вы получаете проблемы с текущей датой в MySQL, установка переменной
TZ
, вероятно, поможет. Подробности в разделе
"Приложение 2. Переменные окружения
".
Чтобы получать безопасную и устойчивую систему, Вы должны использовать
только ядра FreeBSD, которые отмечены как -STABLE
.
Чтобы компилировать пакет на NetBSD, Вы нуждаетесь в GNU make
.
Иначе компиляция рухнет, когда make
попробует запустить
lint
на файлах C++.
Данная систем имеет несколько версий, в которых MySQL работает совершенно иначе. Поэтому невозможно дать каких-то конкретных рекомендаций для всех версий данной ОС. Рассмотрим отдельные версии.
В OpenBSD Version 2.5 Вы можете компилировать MySQL с местными потоками со следующими параметрами:
CFLAGS=-pthread CXXFLAGS=-pthread ./configure --with-mit-threads=no
OpenBSD 2.8 имеет ошибку, которая вызывает проблемы с MySQL. Разработчики OpenBSD исправили ошибку, но только с 25 января 2001 новая версия доступна как ``-current''. Признаки этой ошибки: медленный ответ, высоко загружается CPU и ряд сбоев.
Данная систем имеет несколько версий, в которых MySQL работает совершенно иначе. Поэтому невозможно дать каких-то конкретных рекомендаций для всех версий данной ОС. Рассмотрим отдельные версии.
Если Вы получаете следующую ошибку при компиляции MySQL, Ваше значение
ulimit
для размера виртуальной памяти слишком низко:
item_func.h: In method `Item_func_ge::Item_func_ge(const Item_func_ge &)': item_func.h:28: virtual memory exhausted make[2]: *** [item_func.o] Error 1
Попробуйте использовать ulimit -v 80000
и снова выполнить
make
. Если это не работает, и Вы используете bash
,
попробуйте переключиться на csh
или sh
. Некоторые
пользователи BSDI сообщили о проблемах с bash
и
ulimit
.
Если Вы используете gcc
, Вы можете также использовать флаг
--with-low-memory
для configure
, чтобы собрать
sql_yacc.cc.
Если Вы получаете проблемы с текущей датой в MySQL, установка переменной
TZ
, вероятно, поможет. Подробности в разделе
"Приложение 2. Переменные окружения
".
Обновитесь до BSD/OS Version 3.1. Если это невозможно, установите BSDIpatch M300-038.
Используйте следующую команду для конфигурирования MySQL:
shell> env CXX=shlicc++ CC=shlicc2 ./configure \ --prefix=/usr/local/mysql --localstatedir=/var/mysql \ --without-perl \ --with-unix-socket-path=/var/mysql/mysql.sock
Следующее, как правило, работает:
shell> env CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure \ --prefix=/usr/local/mysql \ --with-unix-socket-path=/var/mysql/mysql.sock
Вы можете изменять расположение каталога, если Вы желаете, или только использовать значения по умолчанию, не определяя любые расположения.
Если Вы имеете проблемы с эффективностью при тяжелой загрузке, попробуйте
использовать опцию --skip-thread-priority
для
mysqld
! Это выполнит все потоки с тем же самым приоритетом. На
BSDI Version 3.1 это дает лучшую эффективность (по крайней мере, пока BSDI не
исправит свой планировщик потоков).
Если Вы получаете ошибку "virtual memory exhausted
" при
компиляции, Вы должны попробовать использовать ulimit -v 80000
и
снова выполнить make
. Если это не работает, и Вы используете
bash
, попробуйте переключиться на csh
или
sh
. Некоторые пользователи BSDI сообщили о проблемах с
bash
и ulimit
.
BSDI Version 4.x имеет глюк с потоками. Если Вы хотите использовать MySQL на этой системе, Вы должны установить все связанные с потоками патчи. По крайней мере M400-023 должна быть установлена.
На некоторых версиях BSDI Version 4.x Вы можете получать проблемы с
общедоступными библиотеками. Признаком этого является то, что Вы не можете
выполнять любые программы пользователя, например, mysqladmin
. В
этом случае Вы должны реконфигурировать пакет, чтобы не использовать
общедоступные библиотеки с опцией настройки --disable-shared
.
Некоторые заказчики имели проблемы на BSDI 4.0.1: двоичный дистрибутив
mysqld
через некоторое время не мог открывать таблицы. Это
потому, что некоторая связанная с системой ошибка заставляет
mysqld
изменять текущий каталог без того, чтобы просить об этом!
Либо обновитесь до версии 3.23.34 или более поздней, либо после выполнения
configure
перед запуском make удалите строку
#define HAVE_REALPATH
из config.h
.
Обратите внимание, что вышеупомянутое означает, что Вы не сможете символически связать каталоги баз данных с другим каталогом баз данных или таблицу к другой базе данных на BSDI! (Создание символической связи с другим диском работает нормально).
MySQL должен работать без проблем на Mac OS X Public Beta (Darwin).
Перед попыткой конфигурировать MySQL на Mac OS X server Вы должны сначала установить пакет pthread с http://www.prnet.de/RegEx/mysql.html.
Двоичный дистрибутив для Mac OS X компилируется на Rhapsody 5.5 со
следующей строкой configure
:
CC=gcc CFLAGS="-O2 -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O2 -fomit-frame-pointer" ./configure --prefix=/usr/local/mysql "--with-comment=Official MySQL binary" --with-extra-charsets=complex --disable-shared
Вы могли бы также добавлять псевдонимы к файлу ресурсов Вашей оболочки,
чтобы обращаться к утилитам mysql
и mysqladmin
из командной строки:
alias mysql '/usr/local/mysql/bin/mysql' alias mysqladmin '/usr/local/mysql/bin/mysqladmin'
Некоторые из двоичных дистрибутивов MySQL для HP-UX распространяются как базовый файл HP и как файл tar. Чтобы использовать базовый файл, Вы должны работать как минимум с HP-UX 10.x, чтобы иметь доступ к программным инструментальным средствам HP.
HP-версия MySQL компилировалась на сервере HP 9000/8xx под HP-UX 10.20, и использует MIT-pthreads. MySQL Version 3.22.26 и выше может быть собрана с местным пакетом потоков HP.
Другие конфигурации, которые могут работать:
Следующие конфигурации почти наверняка не будут работать:
Чтобы устанавливать дистрибутив, используйте одну из команд ниже, где
/path/to/depot
полное имя пути базового файла:
shell> /usr/sbin/swinstall -s /path/to/depot mysql.full
shell> /usr/sbin/swinstall -s /path/to/depot mysql.server
shell> /usr/sbin/swinstall -s /path/to/depot mysql.client
shell> /usr/sbin/swinstall -s /path/to/depot mysql.developer
Базовые места двоичных модулей и библиотек: /opt/mysql, данных:
/var/opt/mysql. Базовый пакет также создает соответствующие записи в
/etc/init.d и /etc/rc2.d, чтобы запустить сервер
автоматически при начальной загрузке. Очевидно, что для установки надо
работать в системе как root
.
Чтобы устанавливать дистрибутив HP-UX tar.gz, Вы должны иметь копию GNU
tar
.
Имеется пара маленьких проблем при компиляции MySQL на HP-UX.
Рекомендуется, чтобы Вы использовали gcc
вместо местного
компилятора HP-UX потому, что gcc
производит лучший код!
Лучше применить gcc 2.95 на HP-UX. Не используйте высокие флажки оптимизации (подобно -O6), поскольку это не может быть безопасно на HP-UX.
Обратите внимание, что MIT-pthreads не может компилироваться компилятором
HP-UX потому, что он не может компилировать файлы ассемблера
(.S
).
Следующая строка конфигурации должна работать:
CFLAGS="-DHPUX -I/opt/dce/include" CXXFLAGS="-DHPUX -I/opt/dce/include -felide-constructors -fno-exceptions -fno-rtti" CXX=gcc ./configure --with-pthread --with-named-thread-libs='-ldce' --prefix=/usr/local/mysql --disable-shared
Если Вы компилируете gcc
2.95 самостоятельно, Вы НЕ должны
компоновать его с библиотеками DCE (libdce.a
или
libcma.a
) если Вы хотите компилировать MySQL с MIT-pthreads.
Если Вы смешиваете пакеты DCE и MIT-pthreads, Вы получите
mysqld
, с которым Вы не сможете соединяться. Удалите библиотеки
DCE, в то время как Вы компилируете gcc
2.95!
Для HP-UX Version 11.x рекомендуется использовать MySQL Version 3.23.15 или более позднюю.
Из-за некоторых критических ошибок в стандартных библиотеках HP-UX Вы должны установить следующие заплаты перед попыткой выполнить MySQL на HP-UX 11.0:
PHKL_22840 Streams cumulative PHNE_22397 ARPA cumulative
Это решит проблему, что каждый получает EWOULDBLOCK
из
recv()
и EBADF
из accept()
в потоковых
прикладных программах.
Если Вы используете gcc
2.95.1 на неисправленной системе
HP-UX 11.x, Вы получите ошибку:
In file included from /usr/include/unistd.h:11, from ../include/global.h:125, from mysql_priv.h:15, from item.cc:19: /usr/include/sys/unistd.h:184: declaration of C function ... /usr/include/sys/pthread.h:440: previous declaration ... In file included from item.h:306, from mysql_priv.h:158, from item.cc:19:
Проблема в том, что HP-UX, не определяет pthreads_atfork()
.
Это имеет противоречивые прототипы в /usr/include/sys/unistd.h:184 и
/usr/include/sys/pthread.h:440 (в деталях разберемся позже).
Одно решение состоит в том, чтобы копировать /usr/include/sys/unistd.h в mysql/include и отредактировать unistd.h так, чтобы соответствовать определению в pthread.h:
183,184c183,184 < extern int pthread_atfork(void (*prepare)(), void (*parent)(), < void (*child)()); --- > extern int pthread_atfork(void (*prepare)(void), void (*parent)(void), > void (*child)(void));
После того, как это будет сделано, следующая строка выбора конфигурации должна нормально работать:
CFLAGS="-fomit-frame-pointer -O3 -fpic" CXX=gcc CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti -O3" ./configure --prefix=/usr/local/mysql --disable-shared
Имеется некоторая информация, которую пользователь HP-UX Version 11.x предоставил относительно компиляции MySQL оригинальным компилятором HP-UX:x:
Environment: proper compilers. setenv CC cc setenv CXX aCC flags setenv CFLAGS -D_REENTRANT setenv CXXFLAGS -D_REENTRANT setenv CPPFLAGS -D_REENTRANT % aCC -V aCC: HP ANSI C++ B3910B X.03.14.06 % cc -V /tmp/empty.c cpp.ansi: HP92453-01 A.11.02.00 HP C Preprocessor (ANSI) ccom: HP92453-01 A.11.01.00 HP C Compiler cc: "/tmp/empty.c", line 1: warning 501: Empty source file. configuration: ./configure --with-pthread --prefix=/source-control/mysql \ --with-named-thread-libs=-lpthread --with-low-memory added '#define _CTYPE_INCLUDED' to include/m_ctype.h. This symbol is the one defined in HP's /usr/include/ctype.h: /* Don't include std ctype.h when this is included */ #define _CTYPE_H #define __CTYPE_INCLUDED #define _CTYPE_INCLUDED #define _CTYPE_USING /* Don't put names in global namespace. */
-D_REENTRANT
,
чтобы компилятор мог распознать прототип для localtime_r
. Я не
был уверен, где именно компилятор нуждался в этом, так что добавил это
определение ко всем флажкам.
Если Вы получаете следующую ошибку из configure
checking for cc option to accept ANSI C... no configure: error: MySQL requires a ANSI C compiler (and a C++ compiler). Try gcc. See the Installation chapter in the Reference Manual.
Проверьте, что Вы не имеете путь к компилятору K&R перед путем к компиляторам HP-UX C и C++.
Автоматическое обнаружение xlC
отсутствует в Autoconf, так
что команда configure
требует примерно таких определений (этот
пример для компилятора IBM):
export CC="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 " export CXX="xlC_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192" export CFLAGS="-I /usr/local/include" export LDLFAGS="-L /usr/local/lib" export CPPFLAGS=$CFLAGS export CXXFLAGS=$CFLAGS ./configure --prefix=/usr/local --localstatedir=/var/mysql \ --sysconfdir=/etc/mysql --sbindir='/usr/local/bin' \ --libexecdir='/usr/local/bin' \ --enable-thread-safe-client --enable-large-files
Выше даны параметры, используемые, чтобы скомпилировать дистрибутив MySQL, который доступен на http://www-frec.bull.com.
Если Вы изменяете -O3
на -O2
в вышеупомянутой
строке выбора конфигурации, Вы должны также удалить опцию
-qstrict
(это ограничение компилятора IBM C).
Если Вы используете gcc
или egcs
, чтобы
откомпилировать MySQL, Вы ДОЛЖНЫ использовать флажок
-fno-exceptions
, поскольку обработка исключительной ситуации в
gcc
/egcs
не поточно-безопасна! Это проверено с
egcs
1.1. Имеются также некоторые известные проблемы с
оригинальным ассемблером IBM, который может генерировать плохой код, когда
используется вместе с gcc.
Автор рекомендует следующую строку configure
для
egcs
и gcc 2.95
на AIX:
CC="gcc -pipe -mcpu=power -Wa,-many" \ CXX="gcc -pipe -mcpu=power -Wa,-many" \ CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti" \ ./configure --prefix=/usr/local/mysql --with-low-memory
Опции -Wa,-many
необходимы для нормального хода процесса. IBM
знает про эту проблему, но не торопится ее исправлять. Я не знаю, требуется
ли -fno-exceptions
с gcc 2.95
, но поскольку MySQL
не использует исключительные ситуации, и вышеупомянутая опция генерирует
более быстрый код, лучше, чтобы Вы всегда использовали эту опцию с
egcs/gcc
.
Если Вы имеете проблему с кодом ассемблера, попробуйте заменить -mcpu=xxx на значение для Вашего cpu. Обычно можно использовать значения power2, power или powerpc, альтернативно Вы могли бы использовать 604 или 604e.
Если Вы не знаете, чем является Ваш центральный процессор, скомандуйте "uname -m", это даст Вам строку, которая напоминает "000514676700", с форматом xxyyyyyymmss, где xx и ss всегда 0, yyyyyy уникальный идентификатор системы, а mm идентификатор CPU Planar. Диаграмма этих значений может быть найдена на http://www.rs6000.ibm.com/doc_link/en_US/a_doc_lib/cmds/aixcmds5/uname.htm. Это даст Вам тип и модель машины, которые Вы можете использовать, чтобы определить, какой центральный процессор Вы имеете.
Если Вы имеете проблемы с сигналами (MySQL неожиданно валится при высокой загрузке) Вы, возможно, нашли ошибку OS с потоками и сигналами. В этом случае Вы можете сообщать, чтобы MySQL не использовал сигналы, конфигурируя его так:
shell> CFLAGS=-DDONT_USE_THR_ALARM CXX=gcc \ CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti -DDONT_USE_THR_ALARM" \ ./configure --prefix=/usr/local/mysql --with-debug --with-low-memory
Это не воздействует на эффективность MySQL, но имеет побочный эффект: Вы
не сможете уничтожать клиентуру, которая является бездействующей, с помощью
mysqladmin kill
или mysqladmin shutdown
.
На некоторых версиях AIX, компонующихся с libbind.a
вызов
getservbyname
создает дамп ядра. Это ошибка AIX. Она должна быть
сообщена в фирму IBM.
Для AIX 4.2.1 и gcc Вы должны сделать следующие изменения:
После конфигурирования, отредактируйте config.h и include/my_config.h и смените строку
#define HAVE_SNPRINTF 1
на
#undef HAVE_SNPRINTF
В mysqld.cc Вы должны добавить прототип для initgoups.
#ifdef _AIX41 extern "C" int initgroups(const char *,int); #endif
В 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
. Можно игнорировать.
Если Вы используете egcs 1.1.2 на Digital Unix, Вы должны обновиться до gcc 2.95.2, поскольку egcs в DEC имеет некоторые серьезные ошибки!
При компиляции поточных программ под Digital Unix документация рекомендует
использовать опцию -pthread
для cc
и
cxx
и библиотеки -lmach -lexc
(в дополнение к
-lpthread
). Вы должны выполнить configure
так:
CC="cc -pthread" CXX="cxx -pthread -O" \ ./configure --with-named-thread-libs="-lpthread -lmach -lexc -lc"
При построении mysqld
Вы можете видеть пару предупреждений
подобно вот этому:
mysqld.cc: In function void handle_connections()': mysqld.cc:626: passing long unsigned int *' as argument 3 of accept(int,sockadddr *, int *)'
Вы можете безопасно игнорировать эти предупреждения. Они происходят
потому, что скрипт configure
может обнаруживать только ошибки,
но не предупреждения.
Если Вы запускаете сервер непосредственно с командной строки, Вы можете
иметь проблемы с этим, когда Вы регистрируете извне, по сети: Ваши ожидающие
обработки процессы получают сигнал SIGHUP
. Если это так,
попробуйте запускать сервер таким образом:
shell> nohup mysqld [options] &
Вызов nohup
заставляет команду игнорировать любой сигнал
SIGHUP
, посланный с терминала. Альтернативно, запустите сервер
через safe_mysqld
, который вызывает mysqld
через
nohup
. Подробности в разделе "
4.7.2 safe_mysqld, обертка вокруг mysqld".
Если Вы получаете проблему при компиляции mysys/get_opt.c
,
удалите строку #define _NO_PROTO
из начала этого файла!
Если Вы используете компилятор Compac's CC compiler, следующая строка выбора конфигурации должна работать:
CC="cc -pthread" CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed all -arch host" CXX="cxx -pthread" CXXFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed all -arch host" export CC CFLAGS CXX CXXFLAGS ./configure --prefix=/usr/local/mysql --with-low-memory \ --enable-large-files --enable-shared=yes \ --with-named-thread-libs="-lpthread -lmach -lexc -lc" gnumake
Если Вы получаете проблему с libtool при компиляции с общедоступными
библиотеками, то при компоновке mysql
Вы способны обойти ее:
cd mysql /bin/sh ../libtool --mode=link cxx -pthread -O3 -DDBUG_OFF \ -O4 -ansi_alias -ansi_args -fast -inline speed \ -speculate all \ -arch host -DUNDEF_HAVE_GETHOSTBYNAME_R \ -o mysql mysql.o readline.o sql_string.o completion_hash.o \ ../readline/libreadline.a -lcurses \ ../libmysql/.libs/libmysqlclient.so -lm cd .. gnumake gnumake install scripts/mysql_install_db
Если Вы имеете проблемы при компиляции и имеете установленные DEC
CC
и gcc
, попробуйте
так запустить configure
:
CC=cc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 \ ./configure --prefix=/usr/local/mysql
Если Вы получаете проблемы с файлом c_asm.h, Вы можете создать и использовать пустой файл c_asm.h:
touch include/c_asm.h CC=gcc CFLAGS=-I./include \ CXX=gcc CXXFLAGS=-O3 \ ./configure --prefix=/usr/local/mysql
Обратите внимание, что следующие проблемы с программой ld
могут быть исправлены загрузкой последнего комплекта заплаток DEC (Compaq) с
http://ftp.support.compaq.com/public/unix.
На OSF1 V4.0D с компилятором "DEC C V5.6-071 on Digital Unix V4.0 (Rev.
878)" транслятор имел некоторое странное поведение (неопределенные символы
asm
). /bin/ld
также неправильный (проблемы с
ошибкой _exit undefined
при компоновке mysqld
). На
этой системе удалось собрать MySQL со следующей строкой для вызова
configure
, после замены /bin/ld
на
версию из OSF 4.0C:
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
С Digital compiler "C++ V6.1-029" следующее должно работать:
CC=cc -pthread CFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed \ -speculate all -arch host CXX=cxx -pthread CXXFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all \ -arch host -noexceptions -nortti export CC CFLAGS CXX CXXFLAGS ./configure --prefix=/usr/mysql/mysql --with-mysqld-ldflags=-all-static \ --disable-shared --with-named-thread-libs="-lmach -lexc -lc"
В некоторых версиях OSF1 функция alloca()
неправильная.
Исправьте это, удаляя строку в файле config.h, которая определяет
'HAVE_ALLOCA'
.
Функция alloca()
также может иметь неправильный прототип в
/usr/include/alloca.h
. Предупреждение об этом можно игнорировать.
configure
автоматически использует следующие библиотеки
потоков: --with-named-thread-libs="-lpthread -lmach -lexc -lc"
.
При использовании gcc
, Вы можете также попробовать такой
запуск скрипта configure
:
shell> CFLAGS=-D_PTHREAD_USE_D4 CXX=gcc CXXFLAGS=-O3 ./configure ....
Если Вы имеете проблемы с сигналами (MySQL неожиданно валится при высокой загрузке) Вы, возможно, нашли ошибку OS с потоками и сигналами. В этом случае Вы можете сообщать, чтобы MySQL не использовал сигналы, конфигурируя его так:
shell> CFLAGS=-DDONT_USE_THR_ALARM \ CXXFLAGS=-DDONT_USE_THR_ALARM \ ./configure ...
Это не воздействует на эффективность MySQL, но имеет побочный эффект: Вы
не сможете уничтожать клиентуру, которая является бездействующей, с помощью
mysqladmin kill
или mysqladmin shutdown
.
С gcc
2.95.2 Вы, вероятно, столкнетесь со следующей ошибкой:
sql_acl.cc:1456: Internal compiler error in `scan_region', at except.c:2566 Please submit a full bug report.
Чтобы это исправить, Вы должны изменить текущий каталог на
sql
и выдать последнюю строку запуска gcc
, заменив
в ней -O3
на -O0
(или добавив -O0
сразу после gcc
, если Вы не имеете опции -O
). После
того, как это будет выполнено, Вы можете перейти в прежний каталог и снова
выполнить оттуда make
.
Если Вы используете Irix Version 6.5.3 или более новую,
mysqld
будет способен создать только, если Вы выполняете его как
пользователь с привилегиями CAP_SCHED_MGT
(подобно
root
) или даете серверу mysqld
эту привилегию с
следующей командой оболочки:
shell> chcap "CAP_SCHED_MGT+epi" /opt/mysql/libexec/mysqld
Вам, вероятно, придется разопределить некоторые вещи в config.h
после выполнения configure
, но перед компиляцией.
В некоторых реализациях Irix функция alloca()
ошибочна. Если
сервер mysqld
рушится на некоторых инструкциях
SELECT
, удалите из config.h строки, которые определяют
HAVE_ALLOC
и HAVE_ALLOCA_H
. Если mysqladmin
create
не работает, удалите из config.h строку, определяющую
HAVE_READDIR_R
. Вам, вероятно, придется также удалить строку
HAVE_TERM_H
.
SGI рекомендует, чтобы Вы установили все заплаты с этой страницы как набор: http://support.sgi.com/surfzone/patches/patchset/6.2_indigo.rps.html.
Как минимум, Вы должны установить последние kernel rollup,
rld
и библиотеку libc
.
Вы определенно нуждаетесь во всех заплатах POSIX на этой странице для поддержки потоков pthreads: http://support.sgi.com/surfzone/patches/patchset/6.2_posix.rps.html.
Если Вы получаете нечто вроде следующей ошибки при компиляции mysql.cc:
"/usr/include/curses.h", line 82: error(1084): invalid combination of type
Введите следующее в верхнем каталоге дерева исходников MySQL:
shell> extra/replace bool curses_bool < /usr/include/curses.h > include/curses.h shell> make
Также имелись отчеты о проблемах с планировщиком. Если только один поток запущен, все работает медленно. Избегайте этого, запуская другого пользователя. Это может привести к увеличению быстродействия выполнения в 2-10 раз с этого времени для другого потока. Это плохо понятная проблема с потоками Irix. Вам, вероятно, придется импровизировать, чтобы найти оптимальное решение, пока это не может быть исправлено радикально.
Если Вы компилируете с gcc
, Вы можете использовать следующий
вызов команды configure
:
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --enable-thread-safe-client \ --with-named-thread-libs=-lpthread
На Irix 6.5.11 с собственным компилятором Irix C и C++ ver. 7.3.1.2, следующее, как сообщают, работает:
CC=cc CXX=CC CFLAGS='-O3 -n32 -TARG:platform=IP22 -I/usr/local/include \ -L/usr/local/lib' CXXFLAGS='-O3 -n32 -TARG:platform=IP22 \ -I/usr/local/include -L/usr/local/lib' ./configure --prefix=/usr/local/mysql --with-berkeley-db --with-innodb \ --with-libwrap=/usr/local \ --with-named-curses-libs=/usr/local/lib/libncurses.a
Текущий порт проверен только на системах sco3.2v5.0.4 и sco3.2v5.0.5. Также имелось много прогресса на порте к sco 3.2v4.2.
Сейчас рекомендуемый транслятор на OpenServer: 2.95.2. С ним Вы должны компилировать MySQL так:
CC=gcc CXX=gcc ./configure ... (options)
gcc
2.7.2 в Skunkware 97
не имеет GNU as
. Вы можете также использовать egcs
1.1.2 или более новый с
http://www.egcs.com. Если Вы используете egcs
1.1.2, Вы
должны выполнить следующую команду:
shell> cp -p /usr/include/pthread/stdtypes.h \ /usr/local/lib/gcc-lib/i386-pc-sco3.2v5.0.5/egcs-2.91.66/include/pthread/
./configure
в каталоге threads/src и
выберите опцию SCO OpenServer. Эта команда скопирует Makefile.SCO5 в
Makefile.
make
.
cd
в каталог thread/src и
выполните оттуда make install
.make
при создании MySQL.
safe_mysqld
как root, Вы, вероятно,
получите только значение по умолчанию 110 открытых файлов на процесс. Сервер
mysqld
будет писать замечание относительно этого в журнал.
configure
должна работать:
shell> ./configure --prefix=/usr/local/mysql --disable-shared
configure
должна работать:
shell> CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4" \ ./configure --prefix=/usr/local/mysql \ --with-named-thread-libs="-lgthreads -lsocket -lgen \ -lgthreads" --with-named-curses-libs="-lcurses"Вы можете получать некоторые проблемы с включаемыми файлами. В этом случае Вы можете найти новые SCO-специфичные включаемые файлы по адресу http://www.mysql.com/Downloads/SCO/SCO-3.2v4.2-includes.tar.gz. Вы должны распаковать этот файл в каталог include дерева исходников MySQL.
Замечания для разработчиков под SCO:
mysqld
с -lgthreads -lsocket -lgthreads
.
malloc
. Если Вы
сталкиваетесь с проблемами с использованием памяти, удостоверьтесь, что
gmalloc.o включен в libgthreads.a и в
libgthreads.so.
read()
, write()
, getmsg()
,
connect()
, accept()
, select()
и
wait()
.Если Вы хотите устанавливать DBI на SCO, Вы должны отредактировать Makefile DBI-xxx и в каждом подкаталоге.
Обратите внимание на следующие изменения для gcc 2.95.2 или новее:
OLD: NEW: CC = cc CC = gcc CCCDLFLAGS = -KPIC -W1,-Bexport CCCDLFLAGS = -fpic CCDLFLAGS = -wl,-Bexport CCDLFLAGS = LD = ld LD = gcc -G -fpic LDDLFLAGS = -G -L/usr/local/lib LDDLFLAGS = -L/usr/local/lib LDFLAGS = -belf -L/usr/local/lib LDFLAGS = -L/usr/local/lib LD = ld LD = gcc -G -fpic OPTIMISE = -Od OPTIMISE = -O1 OLD: CCCFLAGS = -belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include NEW: CCFLAGS = -U M_XENIX -DPERL_SCO5 -I/usr/local/include
Это потому, что Perl dynaloader не будет загружать
DBI
-модули, если они компилировались с icc
или
cc
.
Perl работает лучше всего, когда компилируется с cc
.
Вы должны использовать версию MySQL, по крайней мере не ниже Version 3.22.13 потому, что та версия исправляет некоторые проблемы с Unixware.
Я компилировал MySQL следующей
командой configure
в Unixware 7.0.1:
CC=cc CXX=CC ./configure --prefix=/usr/local/mysql
Если Вы хотите использовать gcc
, Вы должны использовать
gcc
2.95.2 или более новый.
MySQL использует несколько открытых файлов. Из-за этого, Вы должны добавить нечто вроде следующего к Вашему файлу CONFIG.SYS:
SET EMXOPT=-c -n -h1024
Если Вы не сделаете это, Вы, вероятно, столкнетесь со следующей ошибкой:
File 'xxxx' not found (Errcode: 24)
При использовании с OS/2 Warp 3, требуется FixPack 29 или выше. Для OS/2 Warp 4 нужен FixPack 4 или выше. Это требование библиотеки Pthreads. MySQL должен быть установлен в раздел, который поддерживает длинные имена файлов, типа HPFS или FAT32.
Скрипт INSTALL.CMD должен быть выполнен собственным интерпретатором OS/2 CMD.EXE, и не может работать с оболочками замены, типа 4OS2.EXE.
Скрипт scripts/mysql-install-db был переименован. Он теперь назван install.cmd и является REXX-скриптом, который установит заданные по умолчанию параметры настройки защиты MySQL и создаст пиктограммы WorkPlace Shell для MySQL.
Динамическая поддержка модулей компилируется, но пока не полностью проверена. Динамические модули должны компилироваться, используя библиотеку поддержки Pthreads run-time library.
gcc -Zdll -Zmt -Zcrtdll=pthrdrtl -I../include -I../regex -I.. \ -o example udf_example.cc -L../lib -lmysqlclient udf_example.def mv example.dll example.udf
Обратите внимание: из-за ограничений OS/2, имена модулей
UDF не должны превышать 8 символов. Модули сохранены в каталоге
/mysql2/udf. Скрипт safe-mysqld.cmd
поместит этот
каталог в системную переменную BEGINLIBPATH
. При использовании
UDF-модуля, определенные расширения игнорируются, должны быть .udf.
Например, в Unix общедоступный модуль мог бы быть именован как
example.so, и Вы загрузите функцию из него примерно так:
mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME "example.so";
В OS/2 модуль будет именован как example.udf, но Вы не будете определять расширение модуля:
mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME "example";
Разработчики пакета очень заинтересованы получением MySQL, чтобы работать на BeOS, но, к сожалению, не имеют человека, который знает BeOS или имеет время, чтобы сделать порт.
Разработчики пакета заинтересованы нахождением кого-то, чтобы сделать порт, и помогут им с любыми техническими вопросами, которые они могут иметь при выполнении порта.
Они уже предварительно говорили с некоторыми BeOS-разработчиками, которые сказали, что MySQL на 80%, перенесен на BeOS, но так и не получили известий от них вовремя.
Разработчики пакета очень заинтересованы получением MySQL, чтобы работать на Netware, но, к сожалению, не имеют человека, который знает Netware или имеет время, чтобы сделать порт.
Разработчики пакета заинтересованы нахождением кого-то, чтобы сделать порт, и помогут им с любыми техническими вопросами, которые они могут иметь при выполнении порта.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |