![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Примечания ниже относительно glibc применяются только в
ситуации, когда Вы формируете MySQL самостоятельно. Если Вы управляете Linux
на x86 машине, в большинстве случаев для Вас намного лучше использовать
двоичный дистрибутив. Авторы линкуют свой двоичный дистрибутив с самой лучшей
исправленной версией glibc, которую могут найти, и с самыми
лучшими параметрами компилятора в попытке сделать его подходящим для сервера
с высокой загрузкой. Так что, если Вы читаете текст ниже и находитесь в
сомнении относительно того, что Вы должны делать, стоит сначала попробовать
применить двоичный дистрибутив, чтобы увидеть, отвечает ли он Вашим
потребностяи, и строить свою версию только после того, как Вы обнаружили, что
двоичный дистрибутив недостаточно хорош. В этом случае, авторы оценят
замечания относительно этого процесса, чтобы в следующий раз лучше
сформировать свой двоичный дистрибутив. Для типичного пользователя, даже для
установок с большим количеством параллельных подключений и/или при превышении
лимита в 2GB, двоичный дистрибутив в большинстве случаев представляет собой
самый лучший выбор. MySQL использует LinuxThreads в Linux. Если Вы используете старую версию
Linux, которая не имеет ОБРАТИТЕ ВНИМАНИЕ: Авторы MySQL видели некоторые странные
проблемы с Linux 2.2.14 и MySQL на SMP-системах. Если Вы имеете SMP систему,
рекомендуется обновить систему до Linux 2.4 ASAP! Ваша система будет быстрее
и более устойчивой после этого! Обратите внимание, что Если Вы планируете иметь 1000+ параллельных подключений, Вы должны сделать
некоторые изменения в LinuxThreads, перекомпилировать пакет и повторно
слинковать MySQL с новой версией библиотекой libpthread.a. Увеличьте
Если Вы имеете проблему, с которой MySQL не может открывать достаточно
файлов или подключений, может быть Вы не конфигурировали Linux, чтобы
обработать достаточное число файлов. В Linux 2.2 и выше Вы можете проверять число распределенных обработчиков:
Если Вы имеете больше, чем 16 MB памяти, Вы должны добавить нечто вроде
следующего в Ваш скрипт начальной загрузки (например,
/etc/rc/boot.local в SuSE): Вы можете также выполнять вышеупомянутое из командной строки как root, но
в этом случае Ваши старые ограничения будут использоваться в следующий раз,
когда система перезагрузится. Вы должны также добавить в файл /etc/my.cnf: Вышеупомянутое должно позволить MySQL создавать до 8192 подключений+файлы.
Константа Если Вы формируете MySQL самостоятельно, и не хотите проблем с внесением
исправлений в LinuxThreads, Вы должны установить Если Вы используете много параллельных подключений, Вы можете страдать от
"особенности" в ядре 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. Авторы также обнаружили, что
необходимо выполнить процесс Имеется другая проблема, которая причиняет значительный вред эффективности
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 для процесса
Лучше всего, чтобы Вы использовали вышеупомянутые заплаты, чтобы
формировать специальную статическую версию Если Вы испытываете любые странные проблемы при установке MySQL, или с
общим зависанием утилит, вероятно, что они вызваны компилятором или
библиотекой. Если дело обстоит так, применение двоичного дистрибутива должно
решить эти проблемы. Одна известная проблема с двоичным дистрибутивом состоит в том, что со
старыми Linux-системами, которые используют При использовании LinuxThreads Вы увидите три процесса: один для менеджера
LinuxThreads, второй для обработки соединений, а третий для сигналов. Обратите внимание, что ядро Linux и библиотека LinuxThread могут по
умолчанию иметь только 1024 процесса. Это означает, что Вы можете иметь
только до 1020 подключений к MySQL на неисправленной системе. Страница
http://www.volano.com/linuxnotes.html имеет информацию о том, как обойти
это досадное ограничение. Если Вы видите свалившийся процесс Чтобы получить дамп ядра под Linux, если Если Вы компонуете свой клиент MySQL и получаете ошибку: при его выполнении, проблемы можно избежать одним из следующих методов:
Если Вы используете компилятор от Fujitsu Следующая простая строка в MySQL требует как минимум Linux Version 2.0. ПРЕДУПРЕЖДЕНИЕ: Есть отчеты от некоторых пользователей
MySQL, что они имеют серьезные проблемы стабильности MySQL с ядром Linux
2.2.14. Если Вы используете это ядро, Вы должны обновить его до 2.2.19 (или
выше) или перейти на ядро 2.4. Если Вы имеете многопроцессорный сервер, то Вы
должны серьезно рассмотреть использование 2.4, поскольку это даст Вам
значительное увеличение быстродействия. Двоичный релиз компонуется с опцией Если Вы используете Или следующую ошибку, когда Вы попробуете выполнять Вы можете решить эту проблему одним из следующих путей: Linux-Intel двоичный и RPM-дистрибутивы MySQL сконфигурированы для
самого высокого возможного быстродействия. Поддержка MySQL Perl требует Perl Version 5.004_03 или выше. На некоторых версиях Linux 2.2 Вы можете получать ошибку Проблема состоит в том, что Linux имеет задержку между тем, когда Вы
закрываете TCP/IP-порт и тем, когда он фактически будет освобожден системой.
Поскольку имеется участок памяти только для конечного числа портов TCP/IP, Вы
получите вышеупомянутую ошибку, если Вы пробуете делать слишком много новых
TCP/IP-подключений в течение маленького времени подобно тому, когда Вы
выполняете эталонный тест MySQL test-connect через TCP/IP. Единственное известное исправление этой проблемы должно использовать
постоянные подключения в Ваших клиентах или применять сокеты, если сервер и
программы-клиенты работают на одной и той же физической машине. Надеюсь, что
ядро MySQL требует В некоторых старых версиях Linux вызов Сделайте то, что говорит сообщение об ошибках и добавьте символ
подчеркивания к макрокоманде Вы можете получать некоторые предупреждения при компиляции. Показанные
ниже могут игнорироваться: В Debian GNU/Linux, если Вы хотите, чтобы MySQL запустился автоматически,
когда система загружается, сделайте следующее: Если Если Вы получаете следующую ошибку при компоновке Вы можете избежать использования libg++.a запуском
В некоторых реализациях Некоторые проблемы требуют внесения исправлений в Вашу установку Linux.
Заплата может быть найдена в
http://www.mysql.com/Downloads/patches/Linux-sparc-2.0.30.diff. Эта
заплата для дистрибутива Linux sparclinux-2.0.30.tar.gz, который
является доступным на 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. Пакет также
компилируется статически, чтобы избежать разных библиотечных проблем. Если Вы хотите использовать egcs, следующая строка настройки пригодится:
Некоторые известные проблемы при управлении MySQL на Linux-Alpha: MySQL должен работать на MkLinux с самым новым пакетом Чтобы получить MySQL, работающий на Qube2 (Linux Mips), Вы нуждаетесь в
самой новой библиотеке Чтобы компилировать MySQL на Linux Ia64, Вы должны сделать следующее: Использовать После Теперь Вы можете сделать следующее: и На Ia64 клиенты MySQL используют общедоступные библиотеки. Это означает,
что, если Вы устанавливаете двоичный дистрибутив в некоторое другое место, а
не в /usr/local/mysql, Вы должны или изменить
/etc/ld.so.conf или добавить путь к каталогу, где Вы имеете
libmysqlclient.so к системной переменной
Подробности есть в разделе "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, так что
вышеупомянутое на нее не распространяется. Чтобы запустить сервер Это запустит Вы можете уничтожить сервер MySQL, выполняя: Обратите внимание, что Win95 и Win98 не поддерживают создание именованных
каналов. В Win95 и Win98, Вы можете только использовать именованные каналы,
чтобы подключиться к удаленной MySQL-системе, работающей под Windows NT.
Сервер MySQL должен также поддерживать именованные каналы, конечно. Например,
использование Если Можно попробовать запустить Раздел по Win95/Win98 также применим к MySQL под NT/Win2000 со следующими
небольшими поправками и особенностями: Чтобы MySQL мог работать с TCP/IP на NT, Вы должны установить service
pack 3 (или выше)! Для NT/Win2000 имя сервера: или Под Windows NT Вы можете фактически устанавливать любой сервер как сервис,
но только те, чьи имена заканчиваются на Вы можете запускать и завершать сервис MySQL командами: Обратите внимание, что в этом случае Вы не можете использовать любые
другие параметры для Вы можете также выполнять Сервис будет установлен с именем На NT Вы можете получать следующие сервисные сообщения об ошибках: Если Вы имеете проблемы при установке Если это не работает, Вы можете запустить Если Вы не хотите запускать или Последняя версия дает Вам трассировку отладки в файле
C:\mysqld.trace. Подробности в разделе
"6.1.2 Создание файлов трассировки
". MySQL поддерживает TCP/IP на всех платформах Windows и именованные каналы
на NT. По умолчанию он должен использовать именованные каналы для локальных
подключений на NT и TCP/IP для всех других случаев, если пользователь
имеет установленный TCP/IP. Имя хоста определяет, какой протокол используется:
Вы можете вынуждать клиента MySQL использовать именованный канал,
определяя опцию Вы можете проверять, работает или нет MySQL, выполняя следующие команды:
Если Имеется две версии инструмента командной строки MySQL:
Если Вы хотите использовать Заданные по умолчанию привилегии на Windows дают всем локальным
пользователям полные привилегии для доступа ко всем базам данных без того,
чтобы определить пароль. Чтобы сделать MySQL более безопасным, Вы должны
установить пароли для всех пользователей и удалить строку в таблице
Вы должны также добавить пароль для пользователя После того, как вы установили пароль, если Вы хотите завершить сервер
Если Вы используете старую shareware-версию MySQL Version 3.21 под
Windows, вышеупомянутая команда будет терпеть неудачу с ошибкой:
С текущими версиями MySQL Вы можете легко добавлять новых пользователей и
изменять привилегии командами Имеется замечание относительно того, как соединяться, чтобы получить
безопасное подключение к удаленному серверу MySQL через SSH (автор: David
Carlson, dcarlson@mplcomm.com): Вы должны теперь иметь ODBC-подключение к MySQL, зашифрованное посредством
использования протокола SSH. Начиная с MySQL Version 3.23.16, серверы В Windows Вы делаете символическую связь с базой данных, создавая файл,
который содержит путь к каталогу-адресату и пишете его в каталог
mysql_data под именем database.sym. Обратите внимание, что
символическая связь будет использоваться только, если каталог
mysql_data_dir\database не существует. Например, если каталог данных MySQL C:\mysql\data, и Вы хотите
иметь базу данных Обратите внимание, что из-за снижения быстродействия при открытии таблиц,
авторы не включили это дело по умолчанию, даже если Вы компилировали MySQL с
соответствующей поддержкой. Чтобы запустить символические связи, Вы должны
поместить в Ваш файл В MySQL 4.0 связи включены по умолчанию. Зато Вы должны использовать опцию
В ваших исходных файлах Вы должны включить windows.h прежде, чем
Вы включаете mysql.h: Вы можете или связывать Ваш код с динамической библиотекой
libmysql.lib, которая является только оберткой, чтобы загрузить по
требованию libmysql.dll, или скомпоновать со статической библиотекой
mysqlclient.lib. Обратите внимание, что, поскольку библиотеки mysqlclient компилируются как
threaded, Вы должны также компилировать Ваш код, как multi-threaded! MySQL-Windows к настоящему времени доказал свою устойчивость, насколько
под этой системой возможно существование устойчивых программ. Эта версия
MySQL имеет те же самые свойства, что и соответствующая Unix-версия со
следующими исключительными ситуациями: Имеются некоторые проблемы для любого, кто мог бы помочь с портированием
пакета под Windows: Другие специфические для Windows проблемы описаны в файле
В Solaris Вы можете сталкиваться с проблемой даже прежде, чем Вы получите
распакованный дистрибутив MySQL! Solaris В этом случае Вы должны использовать GNU Собственные потоки Sun работают только на Solaris 2.5 и выше. Для Version
2.4 и раньше MySQL автоматически использует MIT-pthreads. Подробности в
разделе "2.3.6 Замечания по MIT-pthreads
". Если Вы получаете следующую ошибку из выбора конфигурации: Это означает, что Вы имеете что-то неправильное с настройкой компилятора!
В этом случае Вы должны его обновить до более свежей версии. Вы можете также
решить эту проблему, вставляя следующую строку в файл config.cache:
Если Вы используете Solaris на SPARC, рекомендуемый транслятор
Рекомендуемая строка Если Вы имеете ultra sparc, Вы можете получить примерно на 4% больше
эффективности, добавляя "-mcpu=v8 -Wa,-xarch=v8plusa" к CFLAGS и CXXFLAGS.
Если Вы имеете компилятор Sun Workshop (Fortre) 5.3 (или новее),
Вы можете выполнять В эталонных тестах MySQL получено ускорение на 6% на Ultrasparc при
использовании Sun Workshop 5.3 в сравнении с gcc с опцией -mcpu. Если Вы получаете проблему с Следующий параграф относится к компиляторам старше, чем WorkShop 5.3: Вам, вероятно, также придется редактировать скрипт на эту строку: Если Вы включаете Если Добавьте Если Вы получаете следующую ошибку при компиляции MySQL с
В этом случае надо получить самую новую версию Solaris не обеспечивает статические версии всех библиотек системы
( Если слишком много процессов очень быстро пробуют соединяться с
Вы можете попробовать запускать сервер с опцией Если Вы компонуете собственного MySQL-клиента, можете получить следующую
ошибку, когда Вы попробуете выполнить его: Проблемы можно избежать одним из следующих методов: При использовании опции настройки Если Вы имеете проблемы с выбором конфигурации, пробуя скомпоноваться с
Если Вы используете gcc и имеете проблемы с загрузкой функций
Если Вы хотели бы, чтобы 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 имеет некоторые ошибки во включаемых файлах. Вы можете
видеть следующую ошибку, когда Вы используете Если это происходит, Вы можете сделать следующее, чтобы обойти проблему:
Скопируйте Альтернативно, Вы можете непосредственно отредактировать файл
/usr/include/widec.h. В любом случае Вы должен удалить
config.cache и снова запустить скрипт Если Вы получаете показанные ниже ошибки при выполнении Решение состоит в том, чтобы сделать одно из следующих действий: Если Вы получаете проблему из-за того, что Ваш компоновщик не может найти
В Solaris 2.8 на x86 Если Вы используете Это обходит проблемы с Если это не помогает, Вы должны компилировать версию для отладки и
выполнять ее с файлом трассировки или под отладчиком FreeBSD 3.x рекомендуется для работы MySQL, так как пакет потоков намного
больше интегрирован в систему. Самый простой способ установить пакет состоит в том, чтобы использовать
mysql-server и mysql-client, доступные на
http://www.freebsd.org. Использование их дает Вам:
Рекомендуется, чтобы Вы использовали MIT-pthreads на FreeBSD 2.x и местные
потоки на Versions 3 и выше. Возможно выполнять пакет с местными потоками на
некоторых поздних версиях 2.2.x, но Вы можете сталкиваться с проблемами при
закрытии сервера MySQL Makefile требует для работы GNU make. Если Вы хотите
компилировать MySQL, Вы должны сначала установить GNU Убедитесь, что имеете правильную установку системы имен. Иначе Вы можете
испытывать задержки сервера имен или сбои при соединении с
Удостоверьтесь, что запись для Если Вы обращаете внимание, что Если Вы получаете ошибку из скрипта FreeBSD, как известно, имеет очень низкое заданное по умолчанию
ограничение на число дескрипторов файла. Подробности в разделе
"8.2.16 Файл не найден".
Раскомментируйте секцию ulimit -n в safe_mysqld или поднимите ограничения для
пользователя Если Вы получаете проблемы с текущей датой в MySQL, установка переменной
Чтобы получать безопасную и устойчивую систему, Вы должны использовать
только ядра FreeBSD, которые отмечены как Чтобы компилировать пакет на NetBSD, Вы нуждаетесь в GNU Данная систем имеет несколько версий, в которых MySQL работает совершенно
иначе. Поэтому невозможно дать каких-то конкретных рекомендаций для всех
версий данной ОС. Рассмотрим отдельные версии. В OpenBSD Version 2.5 Вы можете компилировать MySQL с местными потоками со
следующими параметрами: OpenBSD 2.8 имеет ошибку, которая вызывает проблемы с MySQL. Разработчики
OpenBSD исправили ошибку, но только с 25 января 2001 новая версия доступна
как ``-current''. Признаки этой ошибки: медленный ответ, высоко загружается
CPU и ряд сбоев. Данная систем имеет несколько версий, в которых MySQL работает совершенно
иначе. Поэтому невозможно дать каких-то конкретных рекомендаций для всех
версий данной ОС. Рассмотрим отдельные версии. Если Вы получаете следующую ошибку при компиляции MySQL, Ваше значение
Попробуйте использовать Если Вы используете Если Вы получаете проблемы с текущей датой в MySQL, установка переменной
Обновитесь до BSD/OS Version 3.1. Если это невозможно, установите
BSDIpatch M300-038. Используйте следующую команду для конфигурирования MySQL: Следующее, как правило, работает: Вы можете изменять расположение каталога, если Вы желаете, или только
использовать значения по умолчанию, не определяя любые расположения. Если Вы имеете проблемы с эффективностью при тяжелой загрузке, попробуйте
использовать опцию Если Вы получаете ошибку " BSDI Version 4.x имеет глюк с потоками. Если Вы хотите использовать MySQL
на этой системе, Вы должны установить все связанные с потоками патчи. По
крайней мере M400-023 должна быть установлена. На некоторых версиях BSDI Version 4.x Вы можете получать проблемы с
общедоступными библиотеками. Признаком этого является то, что Вы не можете
выполнять любые программы пользователя, например, Некоторые заказчики имели проблемы на BSDI 4.0.1: двоичный дистрибутив
Либо обновитесь до версии 3.23.34 или более поздней, либо после выполнения
Обратите внимание, что вышеупомянутое означает, что Вы не сможете
символически связать каталоги баз данных с другим каталогом баз данных или
таблицу к другой базе данных на 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 со
следующей строкой Вы могли бы также добавлять псевдонимы к файлу ресурсов Вашей оболочки,
чтобы обращаться к утилитам Некоторые из двоичных дистрибутивов 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. Другие конфигурации, которые могут работать:
Следующие конфигурации почти наверняка не будут работать:
Чтобы устанавливать дистрибутив, используйте одну из команд ниже, где
Базовые места двоичных модулей и библиотек: /opt/mysql, данных:
/var/opt/mysql. Базовый пакет также создает соответствующие записи в
/etc/init.d и /etc/rc2.d, чтобы запустить сервер
автоматически при начальной загрузке. Очевидно, что для установки надо
работать в системе как Чтобы устанавливать дистрибутив HP-UX tar.gz, Вы должны иметь копию GNU
Имеется пара маленьких проблем при компиляции MySQL на HP-UX.
Рекомендуется, чтобы Вы использовали Лучше применить gcc 2.95 на HP-UX. Не используйте высокие флажки
оптимизации (подобно -O6), поскольку это не может быть безопасно на HP-UX.
Обратите внимание, что MIT-pthreads не может компилироваться компилятором
HP-UX потому, что он не может компилировать файлы ассемблера
( Следующая строка конфигурации должна работать: Если Вы компилируете Для HP-UX Version 11.x рекомендуется использовать MySQL Version 3.23.15
или более позднюю. Из-за некоторых критических ошибок в стандартных библиотеках HP-UX Вы
должны установить следующие заплаты перед попыткой выполнить MySQL на HP-UX
11.0: Это решит проблему, что каждый получает Если Вы используете Проблема в том, что HP-UX, не определяет Одно решение состоит в том, чтобы копировать
/usr/include/sys/unistd.h в mysql/include и отредактировать
unistd.h так, чтобы соответствовать определению в
pthread.h: После того, как это будет сделано, следующая строка выбора конфигурации
должна нормально работать: Имеется некоторая информация, которую пользователь HP-UX Version 11.x
предоставил относительно компиляции MySQL оригинальным компилятором HP-UX:x:
Если Вы получаете следующую ошибку из Проверьте, что Вы не имеете путь к компилятору K&R перед путем к
компиляторам HP-UX C и C++. Автоматическое обнаружение Выше даны параметры, используемые, чтобы скомпилировать дистрибутив MySQL,
который доступен на
http://www-frec.bull.com. Если Вы изменяете Если Вы используете Автор рекомендует следующую строку Опции Если Вы имеете проблему с кодом ассемблера, попробуйте заменить -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 не использовал сигналы, конфигурируя его так:
Это не воздействует на эффективность MySQL, но имеет побочный эффект: Вы
не сможете уничтожать клиентуру, которая является бездействующей, с помощью
На некоторых версиях AIX, компонующихся с Для AIX 4.2.1 и gcc Вы должны сделать следующие изменения: После конфигурирования, отредактируйте config.h и
include/my_config.h и смените строку на В mysqld.cc Вы должны добавить прототип для initgoups. В SunOS 4 пакет MIT-pthreads необходим, чтобы компилировать MySQL, что в
свою очередь означает, что Вы будете нуждаться в GNU Некоторые системы SunOS 4 имеют проблемы с динамическими библиотеками и
При компиляции При компиляции Если Вы используете egcs 1.1.2 на Digital Unix, Вы должны обновиться до
gcc 2.95.2, поскольку egcs в DEC имеет некоторые серьезные ошибки! При компиляции поточных программ под Digital Unix документация рекомендует
использовать опцию При построении Вы можете безопасно игнорировать эти предупреждения. Они происходят
потому, что скрипт Если Вы запускаете сервер непосредственно с командной строки, Вы можете
иметь проблемы с этим, когда Вы регистрируете извне, по сети: Ваши ожидающие
обработки процессы получают сигнал Вызов Если Вы получаете проблему при компиляции Если Вы используете компилятор Compac's CC compiler, следующая строка
выбора конфигурации должна работать:
Если Вы получаете проблему с libtool при компиляции с общедоступными
библиотеками, то при компоновке Если Вы имеете проблемы при компиляции и имеете установленные DEC
Если Вы получаете проблемы с файлом c_asm.h, Вы можете создать и
использовать пустой файл c_asm.h:
Обратите внимание, что следующие проблемы с программой На OSF1 V4.0D с компилятором "DEC C V5.6-071 on Digital Unix V4.0 (Rev.
878)" транслятор имел некоторое странное поведение (неопределенные символы
С Digital compiler "C++ V6.1-029" следующее должно работать:
В некоторых версиях OSF1 функция Функция При использовании Если Вы имеете проблемы с сигналами (MySQL неожиданно валится при высокой
загрузке) Вы, возможно, нашли ошибку OS с потоками и сигналами. В этом случае
Вы можете сообщать, чтобы MySQL не использовал сигналы, конфигурируя его так:
Это не воздействует на эффективность MySQL, но имеет побочный эффект: Вы
не сможете уничтожать клиентуру, которая является бездействующей, с помощью
С Чтобы это исправить, Вы должны изменить текущий каталог на
Если Вы используете Irix Version 6.5.3 или более новую,
Вам, вероятно, придется разопределить некоторые вещи в config.h
после выполнения В некоторых реализациях Irix функция SGI рекомендует, чтобы Вы установили все заплаты с этой
страницы как набор:
http://support.sgi.com/surfzone/patches/patchset/6.2_indigo.rps.html. Как минимум, Вы должны установить последние kernel rollup,
Вы определенно нуждаетесь во всех заплатах POSIX на этой странице для
поддержки потоков pthreads:
http://support.sgi.com/surfzone/patches/patchset/6.2_posix.rps.html. Если Вы получаете нечто вроде следующей ошибки при
компиляции mysql.cc:
Введите следующее в верхнем каталоге дерева исходников MySQL:
Также имелись отчеты о проблемах с планировщиком. Если только один поток
запущен, все работает медленно. Избегайте этого, запуская другого
пользователя. Это может привести к увеличению быстродействия выполнения в
2-10 раз с этого времени для другого потока. Это плохо понятная проблема с
потоками Irix. Вам, вероятно, придется импровизировать, чтобы найти
оптимальное решение, пока это не может быть исправлено радикально. Если Вы компилируете с На Irix 6.5.11 с собственным компилятором Irix C и C++ ver. 7.3.1.2,
следующее, как сообщают, работает:
Текущий порт проверен только на системах sco3.2v5.0.4 и
sco3.2v5.0.5. Также имелось много прогресса на порте к sco 3.2v4.2. Сейчас рекомендуемый транслятор на OpenServer: 2.95.2. С ним Вы должны
компилировать MySQL так:
Замечания для разработчиков под SCO: Если Вы хотите устанавливать DBI на SCO, Вы должны отредактировать
Makefile DBI-xxx и в каждом подкаталоге. Обратите внимание на следующие изменения для gcc 2.95.2 или новее: Это потому, что Perl dynaloader не будет загружать
Perl работает лучше всего, когда компилируется с Вы должны использовать версию MySQL, по крайней мере не ниже Version
3.22.13 потому, что та версия исправляет некоторые проблемы с Unixware. Я компилировал MySQL следующей
командой Если Вы хотите использовать MySQL использует несколько открытых файлов. Из-за этого, Вы должны
добавить нечто вроде следующего к Вашему файлу CONFIG.SYS:
Если Вы не сделаете это, Вы, вероятно, столкнетесь со следующей ошибкой:
При использовании с 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.
Обратите внимание: из-за ограничений OS/2, имена модулей
UDF не должны превышать 8 символов. Модули сохранены в каталоге
/mysql2/udf. Скрипт В OS/2 модуль будет именован как example.udf, но Вы не будете
определять расширение модуля:
Разработчики пакета очень заинтересованы получением MySQL, чтобы работать
на BeOS, но, к сожалению, не имеют человека, который знает BeOS или имеет
время, чтобы сделать порт. Разработчики пакета заинтересованы нахождением кого-то, чтобы сделать
порт, и помогут им с любыми техническими вопросами, которые они могут иметь
при выполнении порта. Они уже предварительно говорили с некоторыми BeOS-разработчиками, которые
сказали, что MySQL на 80%, перенесен на BeOS, но так и не получили известий
от них вовремя. Разработчики пакета очень заинтересованы получением MySQL, чтобы работать
на Netware, но, к сожалению, не имеют человека, который знает Netware или
имеет время, чтобы сделать порт. Разработчики пакета заинтересованы нахождением кого-то, чтобы сделать
порт, и помогут им с любыми техническими вопросами, которые они могут иметь
при выполнении порта.
2.6
Замечания по отдельным операционным системам
2.6.1 Замечания по Linux (все версии Linux)
glibc2
, Вы должны установить
LinuxThreads перед попыткой откомпилировать MySQL. Вы можете получить пакет
LinuxThreads с адреса
http://www.mysql.com/Downloads/Linux.glibc
Version 2.1.1 и раньше имеет
фатальную ошибку в обработке pthread_mutex_timedwait
, которая
используется, когда Вы вызываете INSERT DELAYED
. Рекомендую Вам
не использовать INSERT DELAYED
до обновления glibc.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.
cat /proc/sys/fs/file-max
cat /proc/sys/fs/dquot-max
cat /proc/sys/fs/super-max
echo 65536 > /proc/sys/fs/file-max
echo 8192 > /proc/sys/fs/dquot-max
echo 1024 > /proc/sys/fs/super-max
[safe_mysqld]
open-files-limit=8192
STACK_SIZE
в LinuxThreads управляет интервалом
стеков потоков в адресном пространстве. Она должна быть достаточно большой,
чтобы имелся участок памяти для стека каждого индивидуального потока, но
достаточно маленькой, чтобы уберечь стек некоторого потока от столкновения с
глобальной переменной mysqld
. К сожалению, Linux-реализация
mmap()
не совсем правильно отображает адреса уже распределенных
регионов при их очистке. Так что безопасность mysqld
, как и
любой другой поточной программы, зависит от поведения кода, который создает
потоки. Выходит, что запросто можно влезть в свои же рабочие данные... Каждая
программа должна самостоятельно следить за тем, куда и что она пишет. В
mysqld
Вы должны предписать это поведение, устанавливая
приемлемое значение для переменной max_connections
.max_connections
к значению не выше, чем 500. Это должно быть еще меньше, если Вы имеете
большой буфер ключей, большие таблицы heap или некоторые другие вещи, которые
заставляют mysqld
распределять много памяти, или если Вы
управляете ядром 2.2 с 2GB-заплатой. Если Вы используете RPM version 3.23.25
(или позже) или двоичный дистрибутив, Вы можете безопасно устанавливать
max_connections
в 1500. Для STACK_SIZE
в
LinuxThreads рекомендуются значения в диапазоне 128K и 256K.mysqld
с самым высоким возможным
приоритетом, чтобы достигнуть максимальной эффективности. Это может быть
выполнено добавлением команды renice -20 $$
в скрипт
safe_mysqld
. Это дало 60% рост производительности с 400
клиентами на 4-процессорной машине.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 и сильно улучшают эффективность, но кто может сказать
хоть что-нибудь относительно других прикладных программ? Если Вы компонуете
другие прикладные программы с исправленной версией библиотеки, или формируете
исправленную общедоступную версию и устанавливаете ее на Вашей системе, за
последствия отвечайте сами.libc
(подобно RedHat
4.x или Slackware), Вы получите некоторые с разрешением hostname. Подробности
в разделе "2.6.1.1 Замечания по Linux
для двоичных дистрибутивов".mysqld
с помощью команды
ps
, это обычно означает, что Вы нашли ошибку в MySQL, или Вы
имеете разрушенную таблицу. Подробности в разделе
"8.4.1 Что делать, если MySQL рушится".
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".
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
перед запуском клиента.(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
2.6.1.1 Замечания по Linux
для двоичных дистрибутивов
-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
.Resource
temporarily unavailable
, когда Вы делаете много новых подключений к
серверу mysqld
через TCP/IP.Linux 2.4
эту проблему в будущем снимет.2.6.1.2 Замечания по Linux x86
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, как известно,
работают вполне прилично.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'
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'
configure
примерно так:
shell> CXX=gcc ./configure
2.6.1.3 Замечания по Linux SPARC
readdir_r()
разрушен. Симптом этого:
SHOW DATABASES
всегда возвращает пустой набор. Это может быть
исправлено удалением HAVE_READDIR_R
из config.h после
настройки, но перед компиляцией.vger.rutgers.edu
(версия Linux, которая
никогда не была объединена с официальным выпуском 2.0.30). Вы должны также
установить LinuxThreads Version 0.6 или более новую.2.6.1.4 Замечания по Linux Alpha
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
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
gdb 4.18
. Вы должны загрузить и использовать gdb 5.0!
mysqld
статически при
использовании gcc
, возникающий в результате образ будет падать в
дамп. Другими словами: НЕ используйте
--with-mysqld-ldflags=-all-static
с gcc
!!!2.6.1.5 Замечания по Linux PowerPC
glibc
(проверен с glibc
2.0.7).2.6.1.6 Замечания по Linux MIPS
glibc
(известно, что
glibc-2.0.7-29C2
работает нормально). Вы должны также
использовать компилятор egcs
C++ (egcs-1.0.2-9
,
gcc 2.95.2
или более новый).2.6.1.7 Замечания по 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
должен быть готов выполниться.LD_LIBRARY_PATH
.2.6.2 Замечания по Windows
2.6.2.1 Запуск MySQL под
Windows 95 или в Windows 98
mysqld
, Вы должны запустить окно
MS-DOS и напечатать:
C:\> C:\mysql\bin\mysqld
mysqld
на заднем плане без окна.
C:\> C:\mysql\bin\mysqladmin -u root shutdown
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 Создание файлов трассировки
".2.6.2.2 Запуск MySQL под Windows NT или Windows 2000
mysqld-nt
. Обычно Вы должны
установить MySQL как сервис под NT/Win2000:
C:\> C:\mysql\bin\mysqld-nt --install
C:\> C:\mysql\bin\mysqld-max-nt --install
-nt.exe
, обеспечивают
поддержку для именованных каналов.
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
не имеет никакого доступа к консоли, так что никакие
сообщения не могут быть замечены.
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
2.6.2.3 Запуск MySQL под Windows
Имя хоста
Протокол
NULL (none) Под NT сначала попробовать именованный канал.
Если ничего не вышло, использовать TCP/IP. Под Win95/Win98 использовать
TCP/IP сразу. . Именованный канал localhost TCP/IP-связь с текущим хостом hostname TCP/IP --pipe
или указывая точку (.
) как
имя хоста. Применяйте опцию --socket
, чтобы задать имя канала.
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
Скомпилирован с библиотеками Windows,
которые предлагают очень ограниченные возможности редактирования текста.
mysqlc
Собран с помощью Cygnus GNU compiler и
библиотек, которые предлагают редактирование через readline
.
mysqlc.exe
, Вы должны скопировать
файл C:\mysql\lib\cygwinb19.dll в Ваш системный каталог Windows
(\windows\system).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
parse error near 'SET OPTION password'
. Обновитесь до текущей
версии MySQL, которая свободно доступна.GRANT
и REVOKE
.
Подробности в разделе "4.3.1 Синтаксис
GRANT
и REVOKE
".2.6.2.4 Соединение с удаленной системой MySQL
из Windows через SSH
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
.2.6.2.5 Разделение данных по
различным дискам в Windows
mysqld-max
и
mysql-max-nt
в дистрибутивах MySQL компилируются с опцией
-DUSE_SYMDIR
. Это позволяет Вам помещать базу данных на другом
диске, добавляя символическую связь с текущим (аналогично тому, как
символические связи работают в Unix).foo
, размещенной в D:\data\foo, Вы
должны создать файл C:\mysql\data\foo.sym, который содержит текст
D:\data\foo\
. После того, как это сделано, все таблицы,
созданные в базе данных foo
, будут созданы в каталоге
D:\data\foo.my.cnf
или my.ini
следующее:
[mysqld]
use-symbolic-links
skip-symlink
, если Вы хотите отключить это свойство.2.6.2.6 Компиляция клиентов MySQL под Windows
#if defined(_WIN32) || defined(_WIN64)
#include <windows.h>
#endif
#include <mysql.h>
2.6.2.7 MySQL-Windows в сравнении с Unix MySQL
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
.
MYSQL.DLL
. Это
должно включать все из стандартного сервера MySQL, за исключением создания
потоков. Это сделает MySQL намного проще, чтобы использовать в прикладных
программах, которые не нуждаются в истинном протоколе клиент-сервер, и им не
надо обращаться к серверу с других компьютеров.
mysqld
как сервис с опцией
--install
(на NT) было бы хорошо, если бы Вы могли также
добавлять заданные по умолчанию параметры в командной строке.
mysqld
из менеджера задач.
Сейчас для этого надо использовать mysqladmin shutdown
.
readline
под Windows для использования в
инструменте командной строки mysql
.
mysql
,
mysqlshow
, mysqladmin
и mysqldump
).
mysqladmin kill
.
mysqld
всегда запускается с локалью "C". Следует сделать
mysqld
, который использует текущий язык для порядка сортировки.
.DLL
.
README
, который приходит с дистрибутивом MySQL-Windows.2.6.3 Замечания по 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
tar
(gtar
), чтобы распаковать дистрибутив. Откомпилированная версия
gtar
для Solaris есть на
http://www.mysql.com/Downloads.
checking for restartable system calls... configure: error can not run test
programs while cross compiling
ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'}
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
configure
так:
CC=cc CFLAGS="-Xa -fast -xO4 -native -xstrconst -mt" \
CXX=CC CXXFLAGS="-noex -xO4 -mt" ./configure --prefix=/usr/local/mysql \
--enable-assembler
fdatasync
или
sched_yield
, Вы можете решить ее добавлением к строке настройки
LIBS=-lrt
.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
,
после чего попробуйте снова.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
имеют старые, непригодные, включаемые файлы, которые разорвут все программы,
использующие потоки (и, возможно, другие программы)!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".
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
.UDF
в MySQL, попробуйте добавить -lgcc
в строку
компоновки для функций UDF
.2.6.3.1 Замечания по 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)
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
.2.6.3.2 Замечания по Solaris 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".2.6.4 Замечания по BSD
2.6.4.1 Замечания по FreeBSD
mysqld
.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
mysqld
в /etc/login.conf (и пересоздайте его с
cap_mkdb /etc/login.conf). Также убедитесь, что Вы устанавливаете
соответствующий класс для этого пользователя в файле паролей, если Вы не
используете значение по умолчанию (скомандуйте chpass mysqld-user-name).
Подробности в разделе "4.7.2 safe_mysqld,
обертка вокруг mysqld".TZ
, вероятно, поможет. Подробности в разделе
"Приложение 2. Переменные окружения
".-STABLE
.2.6.4.2 Замечания по NetBSD
make
.
Иначе компиляция рухнет, когда make
попробует запустить
lint
на файлах C++.2.6.4.3 Замечания по OpenBSD
2.6.4.4 Замечания по OpenBSD 2.5
CFLAGS=-pthread CXXFLAGS=-pthread ./configure --with-mit-threads=no
2.6.4.5 Замечания по OpenBSD 2.8
2.6.4.6 Замечания по BSD/OS
2.6.4.7 Замечания по BSD/OS Version 2.x
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.TZ
, вероятно, поможет. Подробности в разделе
"Приложение 2. Переменные окружения
".2.6.4.8 Замечания по BSD/OS Version 3.x
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
.2.6.4.9 Замечания по BSD/OS Version 4.x
mysqladmin
. В
этом случае Вы должны реконфигурировать пакет, чтобы не использовать
общедоступные библиотеки с опцией настройки --disable-shared
.
mysqld
через некоторое время не мог открывать таблицы. Это
потому, что некоторая связанная с системой ошибка заставляет
mysqld
изменять текущий каталог без того, чтобы просить об этом!
configure
перед запуском make удалите строку
#define HAVE_REALPATH
из config.h
.2.6.5 Замечания по Mac OS X
2.6.5.1 Замечания по Mac OS X Public Beta
2.6.5.2 Замечания по Mac OS X Server
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'
2.6.6 Замечания по прочим Unix
2.6.6.1 Замечания по HP-UX
для двоичных дистрибутивов
/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
root
.tar
.2.6.6.2 Замечания по HP-UX Version 10.20
gcc
вместо местного
компилятора HP-UX потому, что gcc
производит лучший код!.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!2.6.6.3 Замечания по HP-UX Version 11.x
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:
pthreads_atfork()
.
Это имеет противоречивые прототипы в /usr/include/sys/unistd.h:184 и
/usr/include/sys/pthread.h:440 (в деталях разберемся позже).
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
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.
2.6.6.4 Замечания по IBM-AIX
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
-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
.
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
mysqladmin kill
или mysqladmin shutdown
.libbind.a
вызов
getservbyname
создает дамп ядра. Это ошибка AIX. Она должна быть
сообщена в фирму IBM.
#define HAVE_SNPRINTF 1
#undef HAVE_SNPRINTF
#ifdef _AIX41
extern "C" int initgroups(const char *,int);
#endif
2.6.6.5 Замечания по SunOS 4
make
.libtool
. Вы можете использовать следующую строку для
configure
, чтобы избежать этой проблемы:
shell> ./configure --disable-shared --with-mysqld-ldflags=-all-static
readline
Вы можете получить предупреждения
относительно дубликата определений. Они могут спокойно игнорироваться.mysqld
будет предупреждение implicit
declaration of function
. Можно игнорировать.2.6.6.6 Замечания по Alpha-DEC-UNIX (Tru64)
-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
из начала этого файла!
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
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
2.6.6.7 Замечания по Alpha-DEC-OSF1
CC
и gcc
, попробуйте
так запустить configure
:
CC=cc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql
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.asm
). /bin/ld
также неправильный (проблемы с
ошибкой _exit undefined
при компоновке mysqld
). На
этой системе удалось собрать MySQL со следующей строкой для вызова
configure
, после замены /bin/ld
на
версию из OSF 4.0C:
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
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"
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 ....
shell> CFLAGS=-DDONT_USE_THR_ALARM \
CXXFLAGS=-DDONT_USE_THR_ALARM \
./configure ...
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
.2.6.6.8 Замечания по SGI Irix
mysqld
будет способен создать только, если Вы выполняете его как
пользователь с привилегиями CAP_SCHED_MGT
(подобно
root
) или даете серверу mysqld
эту привилегию с
следующей командой оболочки:
shell> chcap "CAP_SCHED_MGT+epi" /opt/mysql/libexec/mysqld
configure
, но перед компиляцией.alloca()
ошибочна. Если
сервер mysqld
рушится на некоторых инструкциях
SELECT
, удалите из config.h строки, которые определяют
HAVE_ALLOC
и HAVE_ALLOCA_H
. Если mysqladmin
create
не работает, удалите из config.h строку, определяющую
HAVE_READDIR_R
. Вам, вероятно, придется также удалить строку
HAVE_TERM_H
.rld
и библиотеку libc
.
"/usr/include/curses.h", line 82: error(1084): invalid combination of type
shell> extra/replace bool curses_bool < /usr/include/curses.h >
include/curses.h
shell> make
gcc
, Вы можете использовать следующий
вызов команды configure
:
CC=gcc CXX=gcc CXXFLAGS=-O3
./configure --prefix=/usr/local/mysql --enable-thread-safe-client \
--with-named-thread-libs=-lpthread
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
2.6.6.9 Замечания по SCO
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.
mysqld
с -lgthreads -lsocket -lgthreads
.
malloc
. Если Вы
сталкиваетесь с проблемами с использованием памяти, удостоверьтесь, что
gmalloc.o включен в libgthreads.a и в
libgthreads.so.
read()
, write()
, getmsg()
,
connect()
, accept()
, select()
и
wait()
.
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
DBI
-модули, если они компилировались с icc
или
cc
.cc
.2.6.6.10 Замечания по SCO Unixware Version 7.0
configure
в Unixware 7.0.1:
CC=cc CXX=CC ./configure --prefix=/usr/local/mysql
gcc
, Вы должны использовать
gcc
2.95.2 или более новый.2.6.7 Замечания по OS/2
SET EMXOPT=-c -n -h1024
File 'xxxx' not found (Errcode: 24)
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
safe-mysqld.cmd
поместит этот
каталог в системную переменную BEGINLIBPATH
. При использовании
UDF-модуля, определенные расширения игнорируются, должны быть .udf.
Например, в Unix общедоступный модуль мог бы быть именован как
example.so, и Вы загрузите функцию из него примерно так:
mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME "example.so";
mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME "example";
2.6.8 Замечания по BeOS
2.6.9 Замечания по Novell Netware
Найди своих коллег! |