WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Программное обеспечение MySQL поставляет очень быстрый, мультипоточный и
многопользовательский сервер базы данных SQL. Сервер MySQL предназначен для
решения ответственных задач, производственных систем тяжелой нагрузки, так же
как для того, чтобы встроить в массово развернутое программное обеспечение.
Oracle зарегистрированная торговая марка Oracle Corporation и/или ее
филиалов. MySQL торговая марка Oracle Corporation и/или ее филиалов, и не
должна использоваться клиентом без явно записанного разрешения Oracle.
Другие имена могут быть торговыми марками соответствующих владельцев. Программное обеспечение MySQL имеет двойную лицензию. Пользователи могут
использовать программное обеспечение MySQL в качестве общедоступного продукта
в соответствии с GNU General Public License
(
http://www.fsf.org/licenses/) или могут купить стандартную коммерческую
лицензию от Oracle. См.
http://www.mysql.com/company/legal/licensing/. Следующий список описывает некоторые особенно интересные
разделы в этом руководстве: Для обсуждения способностей сервера базы данных MySQL см.
раздел 1.3.2. Чтобы сообщить о проблемах или ошибках, пожалуйста, используйте
инструкции в разделе 1.7.
Если Вы находите чувствительную ошибку безопасности в сервере MySQL,
пожалуйста, сообщите нам немедленно, посылая электронное письмо на
Это руководство для системы базы данных MySQL версии 8.0.
Различия между незначительными версиями MySQL 8.0 отмечены в существующем
тексте в отношении номеров выпуска (8.0.x). Для информации о лицензии см.
Legal Notices. Это руководство не предназначено для использования с более старыми
версиями программного обеспечения MySQL из-за многих функциональных и других
различий между MySQL 8.0 и предыдущими версиями. Если Вы используете более
ранний выпуск программного обеспечения MySQL, пожалуйста, используйте
соответствующее руководство. Например,
MySQL 5.7 Reference Manual
покрывает ряд 5.7 программного обеспечения MySQL. Поскольку это руководство служит справочником, оно не обеспечивает общую
инструкцию по понятиям реляционной базы данных или SQL. Это также не учит
Вас, как использовать Вашу операционную систему. MySQL Database Software находится в процессе постоянного развития, и
это руководство также обновлено часто. Новая версия руководства доступна
онлайн в доступной для поиска форме на
http://dev.mysql.com/doc/. Другие форматы также доступны там, включая
HTML, PDF и EPUB. Исходные файлы Руководства написаны в формате DocBook XML. Версия HTML
и другие форматы произведены автоматически, прежде всего используя
таблицы стилей DocBook XSL. См.
http://docbook.org/. Исходный код для самого MySQL содержит внутреннюю документацию,
созданную с прменением Doxygen. Произведенный контент Doxygen доступен га
at
http://dev.mysql.com/doc/dev/mysql-server/latest/. Также возможно
произвести этот контент в местном масштабе от исходного дистрибутива MySQL,
используя инструкции в
разделе 2.8.7. Если у Вас есть вопросы об использовании MySQL, Вы можете задать их,
используя наши списки рассылки или форумы. См. разделы
1.6.1 и
раздел 1.6.2.
Если у Вас есть предложения относительно дополнений или исправлений к
руководству непосредственно, пожалуйста, пошлите их в
http://www.mysql.com/company/contact/. Это руководство использует определенные типографские соглашения: Когда показывают команды, которые предназначаются, чтобы выполнить
изнутри особой программы, подсказка, показанная перед командой, указывает,
которую программу использовать. Например, Когда Вы вводите команду или запрос, не вводите
подсказку, показанную в примере. Имена баз данных, таблиц и столбцов нужно часто заменять. Чтобы
указать, что такая замена необходима, это руководство использует db_name,
tbl_name и col_name. Например, Вы могли бы видеть такой запрос:
В описаниях синтаксиса квадратные скобки
( Многоточие может также указать, что предыдущий элемент синтаксиса
может быть повторен. В следующем примере, многократные значения
reset_option могут быть даны, после каждого из них должна быть запятая:
Если Вы используете csh или
tcsh, Вы должны выпустить команды
несколько по-другому:
MySQL самая популярная общедоступная система управления базой данных SQL,
развит, распределен и поддержан Oracle Corporation. MySQL Web-сайт (
http://www.mysql.com/) предоставляет последнюю информацию о
программном обеспечении MySQL. MySQL система управления базами данных.
База данных это структурированный набор данных. Это может быть что-либо от
простого списка покупок до картинной галереи или огромного количества
информации в корпоративной сети. Чтобы добавить, получить доступ и обработать
данные, сохраненные в компьютерной базе данных, Вы нуждаетесь в системе
управления базой данных, такой как сервер MySQL. Так как компьютеры очень
хороши в обработке больших объемов данных, системы управления базой данных
играют центральную роль в вычислениях, как автономные утилиты или как
части других приложений. Реляционная база данных хранит данные в отдельных таблицах вместо того,
чтобы поместить все данные в одно большое хранилище. Структуры базы данных
организованы в физические файлы, оптимизированные для скорости. Логическая
модель, с объектами, такими как базы данных, таблицы, представления, строки и
столбцы, предлагает гибкую программную окружающую среду. Вы настраиваете
правила, управляющие отношениями между различными полями данных, такие как
непосредственные, "один многим", уникальный, требуемый или
дополнительный и указатели между различными таблицами. База
данных проводит в жизнь эти правила так, чтобы с хорошо разработанной базой
данных, Ваше приложение никогда не видело непоследовательных, двойных,
устаревших или недостающих данных. SQL-часть MySQL выдерживает
Structured Query Language. SQL наиболее распространенный
стандартизированный язык, используемый, чтобы получить доступ к базам данных.
В зависимости от Вашей программной среды, Вы могли бы ввести SQL
непосредственно (например, чтобы произвести отчеты), встроить запросы SQL в
код, написанный на другом языке, или использовать определенный для языка API,
который скрывает синтаксис SQL. SQL определен ANSI/ISO SQL Standard. SQL развивался с 1986, и несколько
версий существуют. В этом руководстве SQL-92
обращается к стандарту, выпущенному в 1992, SQL:1999 в 1999, а
SQL:2003 обращается к текущей версии стандарта. Мы используем
фразу "стандарт SQL", чтобы обозначить текущую версию стандарта
SQL в любое время. Open Source подразумевает, что для любого возможно использовать и изменить
программное обеспечение. Любой может загрузить программное обеспечение MySQL
из Интернета и использовать это, не платя ничего. Если Вы желаете, Вы можете
изучить исходный код и изменить его, чтобы удовлетворить Вашим потребностям.
Программное обеспечение MySQL использует GPL (GNU General Public License),
http://www.fsf.org/licenses/, чтобы определить то, что Вы можете и не
можете сделать с программным обеспечением в различных ситуациях. Если Вы
чувствуете себя неловко из-за GPL или должны встроить код MySQL в
коммерческое применение, Вы можете купить коммерчески имеющую лицензию
версию. См. http://www.mysql.com/company/legal/licensing/. Сервер MySQL может работать удобно на десктопе или ноутбуке, рядом с
другими Вашими приложениями, веб-серверами и так далее, требуя небольшого или
никакого внимания. Если Вы посвящаете всю машину MySQL, Вы можете
скорректировать настройки, чтобы использовать в своих интересах всю память,
процессор и доступную пропускную способность ввода/вывода. MySQL может также
расшириться к кластерам машин. MySQL Server был первоначально развит, чтобы обработать большие базы
данных намного быстрее, чем существующие решения и успешно использовался в
очень требовательных производственных средах в течение нескольких лет. Хотя и
пребывает в постоянной разработке, MySQL сегодня предлагает богатый и
полезный набор функций. Связь, скорость и безопасность делают MySQL
чрезвычайно подходящим для того, чтобы получить доступ к
базам данных в Интернете. MySQL Database Software система клиент-сервер, которая состоит из
мультипоточного SQL-сервера, который поддерживает различные интерфейсы,
несколько различных программ клиента и библиотек, административных
инструментов, и широкий диапазон интерфейсов прикладного программирования.
Мы также обеспечиваем MySQL Server как встроенную мультипоточную
библиотеку, которую Вы можете встроить в свое приложение, чтобы получить
быстрый автономный продукт. У MySQL Server есть практический набор особенностей, развитых в тесном
сотрудничестве с нашими пользователями. Вероятно, что Ваше любимое приложение
или язык поддерживают MySQL Server. Официальным способом произношения MySQL является My
Ess Que Ell (не my sequel),
но мы не возражаем, если Вы объявляете это как my sequel
или некоторым другим ограниченным способом. Этот раздел описывает некоторые из важных характеристик программного
обеспечения базы данных MySQL. В большинстве отношений дорожная карта
относится ко всем версиям MySQL. Для информации об особенностях, поскольку
они введены в MySQL на определенной для ряда основе, см. раздел
In a Nutshell соответствующего руководства: MySQL 8.0: раздел 1.4 Написан на C и C++. Много типов данных: signed/unsigned integer в 1, 2, 3, 4 или 8
байт длиной, Полная поддержка операторов и функций в
Система привилегии и паролей, которая очень гибка и безопасна.
Поддержка больших баз данных. Мы используем MySQL Server
с базами данных, которые содержат 50 миллионов записей. Мы также знаем о
пользователях, которые используют MySQL Server с 200000
таблиц и около 5000000000 строк. Клиенты могут соединиться с MySQL Server,
используя несколько протоколов: Клиенты могут соединиться с использованием TCP/IP
на любой платформе. Программы клиента MySQL могут быть написаны на многих языках.
Библиотека клиента, написанная на C, доступна клиентам, написанным на C или
C++, или для любого языка, который обеспечивает работу с C. Сервер может предоставить сообщения об ошибках клиентам на многих
языках. См. раздел 11.2. MySQL включает несколько клиентов и утилит. Они включают программы
командной строки, такие как
mysqldump и
mysqladmin, и графические программы, такие как
MySQL Workbench. Мы начали с намерения использовать систему базы данных MySQL называют в честь дочери соучредителя Monty Widenius's, My. MySQL Dolphin (лого) был выбран из огромного списка имен, предложенных
пользователями в нашем соревновании Name the Dolphin.
Имя победы было представлено Ambrose Twebaze, как разработчиком
программного обеспечения Open Source из Swaziland, Africa.
Согласно Ambrose, у женского имени Sakila есть свои корни в SiSwati, местном
языке. Sakila также название города в Arusha, Tanzania,
около страны происхождения Ambrose's, Uganda. Этот раздел суммирует то, что было добавлено и удалено из MySQL 8.0.
Сопутствующий раздел перечисляет параметры сервера MySQL и переменные,
которые были добавлены или удалены в MySQL 8.0. См.
раздел 1.5. Следующие опции были добавлены к MySQL 8.0: Словарь данных. Эти улучшения были добавлены: MySQL Server теперь включает словарь данных, который хранит
информацию об объектах базы данных. В предыдущих выпусках MySQL данные
словаря хранились в метафайлах с данными и нетранзакционных таблицах. См. главу 15. Управление учетками.
MySQL теперь поддерживает роли, которые называют наборами привилегий. Роли
могут быть созданы и удалены. Ролям можно было предоставить привилегии.
Роли можно предоставить и отменить для учетных записей пользователя. Активные
применимые роли для учетной записи могут быть выбраны из числа
предоставленных учетной записи и могут быть изменены во время сеансов для той
учетной записи. Для получения дополнительной информации см.
раздел 7.3.4. Текущее максимальное значение счетчика автоинкремента написано в
журнал redo каждый раз при изменении значения, и это сохранено в частной для
механизма системной таблице на каждой контрольной точке. Эти изменения делают
текущее максимальное значение счетчика автоинкремента постоянным при
перезапусках сервера. Дополнительно: Перезапуск сервера больше не отменяет эффект опции
См. раздел 16.8.5
и InnoDB
AUTO_INCREMENT Counter Initialization. Улучшения JSON. Следующие улучшения или дополнения были сделаны
к функциональности MySQL JSON: Добавлен Это обработка оператора пути столбца
Этот оператор осуществлен в MySQL 8.0.0. Эти функции доступны с MySQL 8.0.1. Следующие особенности устарели в MySQL 8.0 и могут быть или будут удалены
в будущем ряду. Где альтернативы показаны, приложения должны быть обновлены,
чтобы использовать их. Следующие элементы являются устаревшими и были удалены в MySQL 8.0. Где
альтернативы показаны, приложения должны быть обновлены,
чтобы использовать их. Словарь данных предоставляет информацию об объектах базы данных,
таким образом, сервер больше не проверяет имена каталогов в каталоге данных,
чтобы найти базы данных. Следовательно, переменные
Эти функции удалены в пользу Клиентские опции Для C API опции Обновления поддержаны только от одной главной версии до другой
(например, 5.0 к 5.1, или 5.1 к 5.5), таким образом должна быть небольшая
остающаяся потребность в преобразовании более старых имен базы данных 5.0 к
текущим версиям MySQL. Как обходное решение, обновите MySQL 5.0 до MySQL
5.1 прежде, чем обновить до более свежего выпуска. Два механизма хранения MySQL в настоящее время предоставляют
поддержку разделов: Разветвления для обновлений. Прямое обновление разделенной таблицы,
используя механизм хранения кроме Удалите разделение таблицы с использованием
По крайней мере одна из этих двух операций
должна быть выполнена для каждой разделенной не- Вследствие того, что табличные запросы создания, которые привели бы к
разделенной таблице, используя механизм хранения без соответствующей
поддержки теперь терпят неудачу с ошибкой
(ER_CHECK_NOT_IMPLEMENTED),
Вы должны удостовериться, что любые запросы в файле дампа
(например, созданном
mysqldump) от более старой версии MySQL, что Вы хотите
импортировать в MySQL 8.0 серверов, которые составляют разделенные таблицы,
также не определяют такой механизм хранения, как Удалите любые ссылки на разделение из
См.
раздел 20.6.2. В MySQL 5.7 столбец С этим изменением, переместить отдаленное табличное пространство в то
время, как сервер выключен, вручную изменяя файл Параметры конфигурации формата файла были необходимы для того, чтобы
составить таблицы, совместимые с более ранними версиями
Столбец Этот раздел перечисляет переменные сервера, переменные состояния и опции,
которые были добавлены, устарели или были удалены в MySQL 8.0. Где применимый, отдельные списки были предоставлены
для переменных и опций, которые были добавлены, удалены или устарели
в пределах каждого раздела. Следующие системные переменные, переменные состояния и опции новы в MySQL
8.0 и не были включены ни в какую предыдущую серию выпуска. В настоящее время, никакие опции или переменные не устарели в MySQL 8.0.
Следующие системные переменные, переменные состояния и опции
были удалены в MySQL 8.0. Этот раздел перечисляет источники дополнительной информации, которую Вы
можете счесть полезным, такие как списки рассылки MySQL, пользовательские
форумы и Internet Relay Chat. Этот раздел вводит списки рассылки MySQL и обеспечивает направления
относительно того, как списки должны использоваться. Когда Вы подписываетесь
на список рассылки, Вы получаете все сообщения списка как электронные письма.
Вы можете также послать свои собственные вопросы и ответы в список. Чтобы подписаться или отписаться от любого из списков рассылки, описанных
в этом разделе, посетите
http://lists.mysql.com/.
Для большинства из них Вы можете выбрать регулярную версию списка, где Вы
получаете отдельные сообщения, или версию обзора, где Вы получаете одно
большое сообщение в день. Пожалуйста, не посылайте сообщения о подписке или
отмене подписки к любому из списков рассылки, потому что такие сообщения
распределены автоматически тысячам других пользователей. У Вашего местного сайта может быть много подписчиков на список рассылки
MySQL. Если так, у сайта может быть местный список рассылки, чтобы сообщения
с Чтобы направить трафик списка рассылки в отдельный почтовый ящик в Вашей
почтовой программе, настройте фильтр, основанный на заголовках сообщения. Вы
можете использовать Списки рассылки MySQL следующие: Список для объявлений о новых версиях MySQL и связанных программ.
Это список низкого объема, на который должны подписаться
все пользователи MySQL. Основной список для обсуждения MySQL. Пожалуйста, отметьте, что некоторые
темы лучше обсуждены в более специализированных списках. Если Вы отправляете
в неправильный список, Вы не можете получить ответ. Список для людей, которые хотят остаться информированными о проблемах,
начиная с последнего выпуска MySQL или кто хочет быть активно вовлеченным в
процесс охоты на сбои и их исправление. См.
раздел 1.7. Список для людей, которые работают над кодом MySQL. Это также форум для
обсуждений развития MySQL и для того, чтобы отправить патчи. Список для людей, которые работают над документацией MySQL. Список для любого заинтересованного исполнительными проблемами.
Обсуждения концентрируются на работе базы данных (не ограничиваясь MySQL), но
также и включают более широкие категории, такие как исполнение ядра, файловой
системы, дисковой системы и так далее. Список для обсуждений упаковки и дистрибутвов MySQL. Это форум,
используемый, чтобы обменяться идеями при упаковке MySQL и при обеспечении,
чтобы MySQL выглядел и чувствовал себя настолько похоже, насколько возможно
на всех поддержанных платформах и операционных системах. Список для дискуссий о сервере MySQL и Java. Это главным образом
используется, чтобы обсудить драйверы JDBC, такие как MySQL Connector/J. Список для всех тем относительно программного обеспечения MySQL на
операционных системах Microsoft, таких как
Windows 9x, Me, NT, 2000, XP и 2003. Список для всех тем относительно соединения с сервером MySQL с ODBC. Список для всех тем относительно инструментов графического интерфейса
пользователя MySQL, таких как MySQL Workbench. Список для обсуждения MySQL Cluster. Список для обсуждения сервера MySQL и платформы .NET. Это главным образом
связано с MySQL Connector/Net. Список для всех тем относительно программирования с C++ API для MySQL.
Список для всех тем относительно Perl для MySQL с Если Вы неспособны получить ответ на свои вопросы от списка рассылки MySQL
или форума, можно купить поддержку со стороны Oracle.
Это помещает Вас в прямой контакт с разработчиками MySQL. Следующие списки рассылки MySQL на языках кроме английского языка.
Этими списками не управляет Oracle. Французский список рассылки. Корейский список рассылки. Чтобы подписаться, надо послать по электронной
почте Немецкий список рассылки. Чтобы подписаться, надо послать по электронной
почте Португальский список рассылки. Чтобы подписаться, надо послать по
электронной почте Испанский список рассылки. Чтобы подписаться, надо послать по электронной
почте Пожалуйста, не посылайте почтовые объявления из своего браузера с
включенным режимом HTML. Много пользователей не читают почту с браузером.
Когда Вы отвечаете на вопрос, посланный в список рассылки, если Вы
полагаете, что у Вашего ответа есть широкий интерес, Вы можете хотеть
отправить это в список вместо того, чтобы ответить непосредственно человеку,
который спросил. Попытайтесь сделать свой ответ достаточно общим, чтобы люди
кроме могли извлечь пользу из него. Когда Вы отправляете в список,
пожалуйста, удостоверьтесь, что Ваш ответ не дублирование предыдущего ответа.
Попытайтесь суммировать основную часть вопроса в Вашем ответе.
Не чувствуйте себя обязанными заключить все исходное сообщение в кавычки. Когда ответы посылают Вам индивидуально а не списку рассылки,
считают хорошим этикетом суммировать ответы и послать резюме в список
рассылки так, чтобы другие могли обладать преимуществом ответов, которые Вы
получили, что помогло Вам решить свою проблему. Форумы в
http://forums.mysql.com являются важным ресурсом сообщества.
Много форумов доступны, сгруппированные в эти общие категории: Migration В дополнение к различным спискам рассылки MySQL и форумам, Вы можете найти
опытных людей сообщества в Internet Relay Chat (IRC).
Это лучшие сети/каналы, в настоящее время известные нам: freenode (см.
http://www.freenode.net/
). Если Вы ищете клиентское программное обеспечение IRC, чтобы соединиться с
сетью IRC, попробуйте Oracle предлагает техническую поддержку в форме MySQL Enterprise.
Для организаций, которые полагаются на систему управления базами данных MySQL
для транзакционных критических производственных приложений, MySQL Enterprise
это коммерческое подписное предложение, которое включает: MySQL Enterprise Server. MySQL Enterprise доступна, давая Вам гибкость, чтобы выбрать уровень
обслуживания, лучше соответствующий Вашим потребностям.
Для получения дополнительной информации см.
MySQL Enterprise. Прежде, чем отправить отчет об ошибке, пожалуйста, попытайтесь проверить,
что это ошибка, и что об этом еще не сообщили: Начните с поиска в MySQL online manual на
http://dev.mysql.com/doc/
. Мы пытаемся усовершенствовать руководство, обновляя это часто с
решениями недавно найденных проблем. Кроме того, информация о версии,
сопровождающая руководство, может быть особенно полезной, так как возможно,
что более новая версия содержит решение Вашей проблемы.
Информация о версии доступна вместе с руководством. Если руководство касается синтаксиса, который Вы используете, но у Вас
есть более старая версия MySQL, Вы должны проверить историю изменения MySQL,
чтобы видеть, когда синтаксис был осуществлен. В этом случае у Вас есть опция
обновления до более новой версии MySQL. Если Вы не можете найти ответ в руководстве, базе данных ошибок или
архивах списка рассылки, согласуйте со своим местным экспертом MySQL. Если Вы
все еще не можете найти ответ на свой вопрос, пожалуйста, используйте
следующие шаги для того, чтобы сообщить об ошибке. Нормальный способ сообщить об ошибках состоит в том, чтобы посетить
http://bugs.mysql.com/,
который является адресом для нашей базы данных ошибок. Эта база данных
является общественной и может быть просмотрена любым. Если Вы входите в
систему, Вы можете ввести новые отчеты. Ошибки в базе данных ошибок на http://bugs.mysql.com/, которые исправлены для данного
выпуска, отмечены в информации о версии. Если Вы находите чувствительную ошибку безопасности в MySQL Server,
пожалуйста, сообщите нам немедленно, посылая электронное письмо на
Чтобы обсудить проблемы с другими пользователями, Вы можете использовать
один из списков рассылки MySQL. См. раздел
1.6.1. Написание хорошего отчета об ошибках требует терпения, но выполнение этого
экономит время для нас и для вас непосредственно. Хороший отчет об ошибках,
содержащий полный прецедент для ошибки, делает очень вероятным, что мы
исправим ошибку в следующем выпуске. Этот раздел помогает Вам написать свой
отчёт правильно так, чтобы Вы не потратили впустую свое время. Пожалуйста,
читайте этот раздел тщательно и удостоверьтесь, что вся информация, описанная
здесь, включена в Ваш отчет. Предпочтительно, Вы должны проверить проблему, используя последнюю версию
MySQL Server. Любой должен быть в состоянии повторить ошибку, используя
только Является самым полезным, когда хорошее описание проблемы включено в отчет
об ошибках. Таким образом, дайте хороший пример всего, что Вы сделали,
который привел к проблеме, и опишите, в точных деталях, проблему. Лучшие
отчеты те, которые включают полный пример, показывающий, как воспроизвести
ошибку или проблему. См. раздел 26.5. Помните, что для нас возможно ответить на отчет, содержащий слишком
большую информацию, но не слишком мало. Люди часто опускают факты, потому что
они думают, что знают причину проблемы и предполагают, что некоторые детали
не имеют значения. Хороший принцип: если есть сомнение о чем-то, заявите это.
Быстрее и проще написать пару лишних строк в Вашем отчете, чем ждать дольше
ответа, если мы должны попросить, чтобы Вы предоставили информацию, которая
отсутствовала в первоначальном сообщении. Наиболее распространенные ошибки, сделанные в отчетах об ошибках, (a)
не включен номер версии MySQL, которую Вы используете, и (b) не полностью
описана платформа, на которой сервер MySQL установлен (включая тип платформы
и номер версии). Это очень важные сведения, в 99 ситуациях из 100 отчет об
ошибках бесполезен без них. Ошибки часто зависимы от платформы. В таких
случаях почти невозможно установить что-либо, не зная операционную систему и
номер версии платформы. Если Вы собирали MySQL из исходных текстов, не забудьте также
предоставлять информацию о своем компиляторе, если это связано с проблемой.
Часто люди находят ошибки в компиляторах и думают, что проблема связана с
MySQL. Большинство компиляторов разрабатывается все время. Чтобы определить,
зависит ли Ваша проблема от Вашего компилятора, мы должны знать, какой
компилятор Вы использовали. Отметьте, что каждая проблема компилирования
должна быть расценена как ошибка и сообщена соответственно. Если программа производит сообщение об ошибке, очень важно включать
сообщение в Ваш отчет. Если мы пытаемся искать что-то из архивов, лучше,
чтобы сообщение об ошибке сообщило точно, что искать. Даже регистр символов
важен. Лучше копировать и вставлять все сообщение об ошибке в Ваш отчет. Вы
никогда не должны пытаться воспроизвести сообщение по памяти. Если у Вас есть проблема с Connector/ODBC (MyODBC), пожалуйста,
попытайтесь произвести файл трассировки и послать его с Вашим отчетом. См.
How to Report Connector/ODBC Problems or Bugs. Если Ваш доклад включает в себя длинные выходные строки запроса от
прецедентов, которые Вы выполняете с
mysql, Вы можете сделать вывод более читаемым
при использовании опции Пожалуйста, включайте следующую информацию в свой отчет: Номер версии MySQL (например, MySQL 5.7.10).
Вы можете узнать, какую версию Вы выполняете, выполняя
mysqladmin version
. mysqladmin
может быть найдена в подкаталоге Следующее пример очень хорошего отчета об ошибках. Запросы выполнены,
используя mysql
. Отметьте использование Если Вы не можете обеспечить скрипт, Вы должны, по крайней мере, включить
вывод mysqladmin variables
extended-status processlist в Ваш отчет, чтобы
предоставить некоторую информацию о том, как система работает. Если мы не можем проверить точную цель патча, мы не будем использовать
это. Прецеденты помогают нам здесь. Покажите, что патч обрабатывает все
ситуации, которые могут произойти. Если мы находим промежуточный случай (даже
редкий), где патч не будет работать, это может быть бесполезно. Механизм восстановления катастрофического отказа обрабатывает
уборку, когда сервер перезапущен, будучи уничтоженным, таким образом, что в
типичной работе нет никакой потребности в ремонте таблиц.
Если Вы сталкиваетесь с ошибкой с Если Вы запускаете Windows, пожалуйста, проверьте значение
Этот раздел описывает, как MySQL касается стандартов ANSI/ISO SQL. У MySQL
Server есть много расширений стандарта SQL, здесь Вы можете узнать то, что
они такое и как использовать их. Вы можете также найти информацию о
функциональности, отсутствующей в MySQL Server, и как работать
для некоторых из различий. Стандарт SQL развивался с 1986, и несколько версий существуют. В этом
руководстве SQL-92 обращается к стандарту, выпущенному в
SQL:1999 в 1999, SQL:2003 в 2003, а
SQL:2008 обращается к новой версии стандарта, выпущенной в 2008.
Мы используем фразу "стандарт SQL", чтобы обозначить текущую
версию стандарта SQL в любое время. Одна из наших основных целей состоит в том, чтобы продолжить работать в
согласии со стандартом SQL, но не жертвуя скоростью или надежностью. Мы не
боимся добавить расширения к SQL или поддержку особенностей не-SQL, если это
очень увеличивает удобство и простоту использования MySQL для большого
сегмента нашей пользовательской базы. Интерфейс
Мы продолжаем поддерживать транзакционные и нетранзакционные базы данных,
чтобы удовлетворить и 24/7 использование для решения ответственных задач, и
тяжелые Web-нагрузки или использование журналирования. MySQL Server был первоначально разработан, чтобы работать с базами данных
среднего размера (10-100 миллионов строк или приблизительно 100 МБ на
таблицу) на маленьких компьютерных системах. Сегодня MySQL Server
обрабатывает базы данных размера терабайта, но код может также быть собран в
уменьшенной версии, подходящей для карманных и встроенных устройств.
Компактный дизайн сервера MySQL делает развитие в обоих направлениях
возможным без любых конфликтов в исходном дереве. Мы не предназначаемся для поддержки в реальном времени, хотя способности
репликации MySQL предлагают существенную функциональность. MySQL поддерживает ODBC level 0 до 3.51. MySQL поддерживает высоконадежную кластеризацию базы данных, используя
Мы осуществляем функциональность XML, которая поддерживает большинство
W3C XPath. См. раздел 13.11. MySQL может работать в различных режимах SQL и применить эти режимы
по-другому для различных клиентов, в зависимости от значения
Режимы затрагивают синтаксис SQL и подтверждение правильности данных. Это
облегчает использование MySQL в различных средах и использование MySQL вместе
с другими серверами базы данных. См. раздел 6.1.8. Для запуска MySQL Server в режиме ANSI, запустите
mysqld
с опцией См. раздел 6.1.4. MySQL Server поддерживает некоторые расширения, которые Вы, вероятно, не
будете находить в других SQL DBMS. Будьте предупреждены, что, если Вы
используете их, Ваш код не будет переносим к другим SQL-серверам. В некоторых
случаях, Вы можете написать код, который включает расширения MySQL, но все
еще переносим при использовании комментариев следующей формы:
Организация данных на диске. MySQL Server отображает каждую базу данных на каталог в соответствии с
каталогом данных MySQL, и отображает таблицы в пределах базы данных к именам
файла в каталоге базы данных. Следовательно, имена базы данных и имена таблиц
являются чувствительными к регистру в MySQL Server на операционных системах,
у которых есть чувствительные к регистру имена файла (такие как большинство
систем Unix). См. раздел
10.2.2. По умолчанию строки могут быть приложены в
Синтаксис запроса SQL. Запросы Типы данных. Функции и операторы. Чтобы облегчить переход для пользователей, которые мигрируют от
другой окружающей среды SQL, MySQL Server поддерживает псевдонимы для многих
функций. Например, все строковые функции поддерживают стандартный синтаксис
SQL и синтаксис ODBC. Мы пытаемся заставить MySQL Server следовать стандартам ANSI SQL и ODBC
SQL, но MySQL Server выполняет операции по-другому в некоторых случаях: Есть несколько различий между MySQL и стандартными системами
привилегии SQL. Например, в MySQL, привилегии для таблицы автоматически не
отменяются, когда Вы удаляете таблицу. Вы должны явно скомандовать
MySQL Server не поддерживает в Вы можете использовать Если Вы получаете доступ к столбцу от таблицы, которая будет обновлена в
выражении, Выполнение MySQL внешних ключей отличается от стандарта SQL в
следующих ключевых моментах: Если есть несколько строк в родительской таблице, у которых есть
то же самое значение ключа, на которое ссылаются,
См. раздел 16.8.6.
Стандартный SQL использует синтаксис C Стандартный SQL использует Используя наше выполнение, нужен пробел после
Другая безопасная особенность:
mysql игнорирует строки, которые начинаются с
MySQL позволяет Вам работать и с транзакционными таблицами, которые
разрешают отмену, и с нетранзакционными таблицами, которые этого не делают.
Из-за этого обработка ограничения немного отличается в MySQL.
Мы должны обработать случай, когда Вы вставили или обновили много строк в
нетранзакционную таблицу, для которой они не могут быть отменены до прежнего
уровня изменения, когда ошибка происходит. Основная философия: MySQL Server пытается произвести ошибку для чего-либо,
что он может обнаружить, разбирая запрос, который будет выполнен, и пытается
оправиться от любых ошибок, которые происходят, выполняя запрос. Опции MySQL, когда ошибка происходит, должны остановить запрос в середине
или исправить как возможно проблему и продолжить. По умолчанию сервер следует
последним вариантом. Это означает, например, что сервер может привести
недопустимые значения к самым близким допустимым значениям. Несколько опций режима SQL доступны, чтобы обеспечить большее управление
обработкой значений неправильных данных и продолжить выполнение запроса или
аварийно прекратить работы, когда ошибки происходят. Используя эти опции, Вы
можете сконфигурировать MySQL Server, чтобы действовать более традиционным
способом, который походит на другие DBMS, которые отклоняют неподходящий
ввод. Режим SQL может быть установлен глобально при запуске сервера, чтобы
затронуть всех клиентов. Отдельные клиенты могут установить режим SQL во
время выполнения, что позволяет каждому клиенту выбрать поведение, самое
подходящее для его требований. См. раздел 6.1.8
. Следующие разделы описывают, как MySQL Server
обрабатывает различные типы ограничений. Обычно ошибки происходят для запросов изменения данных
(например, MySQL понимает ключевое слово Вы можете получить информацию о числе строк, фактически вставленных или
обновленных функцией C API Только таблицы Внешние ключи позволяют Вам перекрестно ссылаться на связанные данные
через таблицы, и
ограничения внешнего ключа помогают сохранить эти
данные распространения последовательными. MySQL понимает ссылки внешнего ключа MySQL требует, чтобы столбцы внешнего ключа были индексированы: если Вы
составляете таблицу с ограничением внешнего ключа, но не индексируете на
данном столбце, индекс создается. Вы можете получить информацию о внешних ключах от таблицы
Только По умолчанию MySQL приводит их к допустимым значениям для ввода данных.
Однако, Вы можете позволить строгому режиму SQL выбрать более традиционную
обработку плохих значений, таким образом, что сервер отклоняет их и прерывает
запрос, в котором они происходят. См.
раздел 6.1.8. Этот раздел описывает поведение MySQL по умолчанию, так же как строгий
режим SQL и как это отличается. Если Вы не используете строгий режим, то всякий раз, когда Вы вставляете
недопустимое значение в столбец, например,
Если Вы пытаетесь сохранить значение вне диапазона в числовой
столбец, MySQL Server вместо этого хранит ноль, самое маленькое значение или
самое большое значение, смотря что является самым
близким к недопустимому значению. Причина использования предыдущих правил в нестрогом режиме состоит в том,
что мы не можем проверить эти условия, пока запрос не начал выполняться. Мы
не можем просто откатиться назад, если мы сталкиваемся с проблемой после
обновления нескольких строк, потому что механизм хранения, возможно, не
поддерживает отмену. Опция завершения запроса не очень хороша, в этом случае,
обновление было бы частичным,
является, вероятно, худшим сценарием. В этом случае лучше
сделать лучшее из возможного и затем продолжать, как будто
ничего не произошло. Вы можете выбрать более строгую обработку входных значений при
использовании режимов SQL
Для транзакционных механизмов хранения значения неправильных
данных, происходящие где угодно в запросе, заставляют запрос прерываться.
Для еще более строгой проверки, надо включить
С любой из строгих опций режима Вы можете заставить ошибки быть
обработанными как предупреждения при использовании
Со строгим включенным режимом (см. раздел
6.1.8), определение Ошибки для недопустимых значений могут быть подавлены в строгом режиме,
если Вы используете Следующие разделы перечисляют разработчиков, спонсоров и сторонников,
которые помогли сделать MySQL. Хотя Oracle Corporation и/или ее филиалам принадлежат все авторские права
в Gianmassimo Vigazzola Начальный порт Win32/NT. Для конструктивной критики и реального тестирования
динамического формата записи. Порт Win32 с Borland compiler.
За усилия сделать условно-бесплатное программное обеспечение базой данных
SQL. В TcX, предшественнике MySQL AB, мы начали с Для того, чтобы помочь нам приобрести http://www.mysql.com/. Для того, чтобы настроить qmail, чтобы обработать список рассылки MySQL и
для невероятной помощи в управлении списками рассылки MySQL. mysqldump
(ранее Для поддержания на высоком уровне и распространения порта MySQL в OS/2.
Автор mysqlhotcopy. Сортировка для словенского языка. Макроопределение набора символов Основа для параллельной вставки, расширенного синтаксиса даты, отладки
под NT и ответы в списке рассылки MySQL. mysqlaccess, программа, чтобы показать
права доступа для пользователя. Для одного из ранних драйверов JDBC. Дальнейшее развитие одного из ранних драйверов JDBC и других
MySQL-связанных инструментов Java. Для того, чтобы настроить доступный для поиска архив списка
рассылки на его сайте. RPM-пакеты MySQL для Red Hat Linux. RPM-пакеты MySQL для Red Hat Linux-Alpha. RPM-пакеты клиентов MySQL для Intel и SPARC. RPM-пакеты для MySQL 3.21. Идеи для безопасной проверки имен хоста DNS. Некоторая поддержка китайского языка (BIG5). Большая функциональность для китайцев (GBK). Чешский порядок сортировки. Функции Перенес (и расширил) эталонный набор на
User-defined functions (UDF),
Расширение Помощь в настройке InstallShield для MySQL-Win32. Библиотека Mysqlmanager, Win32 GUI для администрирования MySQL Server. Перенес MIT-pthreads на NetBSD/Alpha и NetBSD 1.3/i386. Примеры в обучающей программе MySQL. Сделал mysqlaccess более безопасным. Помощь с портом Win64 сервера MySQL. Настройка обновления для Tru64, поддержки больших файлов и TCP wrappers.
Эмулятор Расширенные таблицы Превосходное определение и сообщение о неисчислимых ошибках (особенно в
коде подзапроса MySQL 4.1). Поддержание пакетов OS X и обеспечение неоценимой обратной связи о том,
как создать пакеты для OS X. Предоставление неоценимой информации и обратной связи о порте QNX. Много людей было вовлечено различными способами. Всего больше 100 человек,
слишком много, чтобы упомянуть здесь. Известное имя Ataullah Dabaghi,
кто вплоть до 1999 внес приблизительно одну треть кодовой базы. Особая
благодарность также разработчикам системы AXE, которая предоставила большую
часть архитектурных фондов для NDB Cluster с блоками, сигналами и
функциональностью рассмотрения катастрофического отказа. Также благодарность
тем, кто верил в идеи достаточно, чтобы выделить бюджет для развития с 1992
до настоящего времени. Мы хотим признать Google Inc. за вклады в распределение MySQL:
Исполнительные патчи Mark Callaghan's SMP и другие патчи. Другие помощники, оталдчики и тестеры: James H. Thompson,
Maurizio Menghini, Wojciech Tryc, Luca Berra, Zarko Mocnik, Wim
Bonis, Elmar Haneke, Много отчетов об ошибках/исправлений от людей в списке рассылки. Большая благодарность тем, кто помогает нам ответить на вопросы в
списках рассылки MySQL: Daniel Koch Установка Irix. Вопросы о точке отсчета. Вопросы о Вопросы о SCO. Вопросы о Вопросы о конфигурации модуля Apache (log & auth),
PHP, синтаксисе SQL и другие. Общие вопросы. Вопросы, имеющие отношение к специфическим особенностям с Linux,
синтаксисом SQL, и другими вещами, которым, возможно, понадобилась
бы некоторая работа. MySQL с PHP и Perl. Гибкость и обработка Linux и HP-UX. Вопросы об установке MySQL на системах Linux, используя также файлы
Простое составление billing/license по авторскому праву. Вопросы по интерфейсу ODBC и Visual C++. Вопросы по Следующие люди помогли нам с написанием документации MySQL и
преобразованием документации или сообщений об ошибках в MySQL. Paul DuBois Продолжающаяся помощь с созданием этого
руководства, правильного и понятного. Helped to rewrite Monty's and David's early attempts at
English into English. For the first MySQL manual. And a lot of spelling/language
fixes for the FAQ (that turned into the MySQL manual a
long time ago). First translator of the MySQL Reference Manual into simplified
Chinese in early 2000 on which the Big5 and HK coded versions
were based. Большая часть раздела Perl Proof-reading of the Reference Manual. French error messages. Czech error messages. Polish error messages. Spanish error messages. Norwegian error messages and testing of MySQL 3.21.xx. Russian error messages. Italian error messages. German error messages. Slovak error messages. Romanian error messages. Hungarian error messages. Portuguese error messages. Danish error messages. Dutch error messages, completing earlier partial translation
(also work on consistency and spelling).
The following is a list of creators/maintainers of some of the
most important API/packages/applications that a lot of people
use with MySQL.
We cannot list every possible package here because the list would
then be way to hard to maintain. For other packages, please refer
to the software portal at
http://solutions.mysql.com/software/.
Tim Bunce, Alligator Descartes
For the
For the Perl interface for MySQL Server.
For maintaining the Perl
For porting PHP for MySQL Server.
MySQL 4.1 testing and bug hunting. New PHP 5.0
For porting iODBC (Unix ODBC).
The author of LinuxThreads (used by the MySQL Server on Linux).
The following is a list of some of the tools we have used to
create MySQL. We use this to express our thanks to those that has
created them as without these we could not have made MySQL what
it is today.
Free Software Foundation
From whom we got an excellent compiler
(gcc), an excellent debugger
(gdb and the
For a really great editor/environment.
Author of Хотя Oracle Corporation и/или ее филиалам принадлежат все авторские
права в VA Linux / Andover.net Финансирование репликации. Редактирование MySQL. MySQL Web-сайт в 1998-2000. Развитие в Windows и Linux. Развитие в Linux/Alpha. Развитие встроенной версии
mysqld. Опция
Глава 1. Общая информация
<secalert_us@oracle.com
>
. Исключение: клиенты поддержки должны сообщить обо всех
проблемах, включая ошибки безопасности, в Oracle Support.1.1. Об этом руководстве
1.2.
Соглашения о синтаксисе в руководстве
Текст в стиле
используется для запросов SQL, имен
баз данных, таблиц и столбцов, программ, исходных кодов и переменных
окружения. Пример: Чтобы перезагрузить таблицы привилегий, используйте
FLUSH PRIVILEGES
.Текст в этом стиле
используется, чтобы указать на опцию
программы, которая затрагивает, как программа выполнена, или предоставляет
информацию, которая необходима для программы, чтобы функционировать
определенным способом. Пример: Опция
--host
(краткая форма -h
) говорит, чтобы
mysql
использовал имя узла или IP-адрес сервера MySQL, с которым соединяться
.my.cnf
расположен в каталоге /etc
.%
.shell>
указывает на команду, которую Вы выполняете от своей командной оболочки,
root-shell>
подобна, но должна быть выполнена как
root
, mysql>
указывает на запрос, что Вы
выполняете из клиента mysql
:
shell> type a shell command here
root-shell> type a shell command as root here
mysql> type a mysql statement here
В некоторых областях различные системы можно отличить друг от друга, чтобы
показать, что команды должны быть выполнены в двух различных средах.
Например, работая с репликацией команды могли бы быть предварительно
установлены с master
и slave
:
master> type a mysql command on the replication master here
slave> type a mysql command on the replication slave here
shell является Вашим командным интерпретатором. В Unix это
обычно sh,
csh или bash. В
Windows command.com или
cmd.exe в окне консоли.
mysql> SELECT col_name FROM db_name.tbl_name;
Это означает, что, если бы Вы должны были ввести подобный запрос, Вы
подставляли бы свою собственную базу данных, таблицу и имена столбцов,
возможно, как это:
mysql> SELECT author_name FROM biblio_db.author_list;
Ключевые слова SQL не являются чувствительными к регистру и могут быть
написаны в любом регистре. Это руководство использует верхний регистр.
[
и ]
)
указывают на дополнительные слова или пункты. Например, в следующем запросе
IF EXISTS
является дополнительным:
DROP TABLE [IF EXISTS] tbl_name
Когда элемент синтаксиса состоит из многих альтернатив, альтернативы отделены
вертикальными линиями (|
). Когда один участник ряда
может быть выбран, альтернативы перечислены в пределах
квадратных скобок ([
и ]
):
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
Когда один участник из ряда выбора должен быть выбран,
альтернативы перечислены в пределах фигурных скобок
({
и }
):
{DESCRIBE | DESC} tbl_name [col_name | wild]
Многоточие (...
) указывает на упущение раздела запроса, как
правило, чтобы обеспечить более короткую версию более сложного синтаксиса.
Например, SELECT ... INTO OUTFILE
сокращение для формы SELECT
,
который имеет INTO OUTFILE
после других частей запроса.
RESET reset_option [,reset_option] ...
Команды для того, чтобы установить переменные оболочки показывают, используя
синтаксис оболочки Bourne shell. Например, последовательность, чтобы
установить переменную окружения CC
и выполнить команду
configure в Bourne shell:
shell> CC=gcc ./configure
shell> setenv CC gcc
shell> ./configure
1.3. Краткий обзор СУБД MySQL
1.3.1. Что такое MySQL?
1.3.2. Основные особенности MySQL
Внутренности и мобильность
MyISAM
)
со сжатием индексов.Типы данных
FLOAT
,
DOUBLE
,
CHAR
,
VARCHAR
,
BINARY
,
VARBINARY
,
TEXT
,
BLOB
,
DATE
,
TIME
,
DATETIME
,
TIMESTAMP
,
YEAR
,
SET
,
ENUM
и пространственные типы
OpenGIS. См. глава 12.Запросы и функции
SELECT
и WHERE
:
mysql> SELECT CONCAT(first_name, ' ', last_name)
-> FROM citizen
-> WHERE income/dependents > 10000 AND age > 30;
GROUP BY
и ORDER BY
.
Поддержка групповых функций (
COUNT()
, AVG()
,
STD()
,
SUM()
,
MAX()
,
MIN()
и
GROUP_CONCAT()
).
LEFT OUTER JOIN
и RIGHT OUTER JOIN
со стандартным SQL и с синтаксисом ODBC.DELETE
,
INSERT
,
REPLACE
и
UPDATE
, чтобы
возвратить число строк, которые были изменены (затронуты) или возвратить
вместо этого число соответствующих строк, устанавливая
флаг, соединяясь с сервером.SHOW
, которые получают информацию о
базах данных, механизмах хранения, таблицах и индексах. Поддержка
INFORMATION_SCHEMA
, осуществленная согласно стандартному SQL.
EXPLAIN
,
чтобы показать, как оптимизатор решает запрос.ABS
допустимое имя столбца. Единственное ограничение: для вызова
функции никакие пробелы не разрешены между именем функции и
(
. См. раздел 10.3.
Безопасность
Масштабируемость и пределы
InnoDB
или 1000 для MyISAM
.
Индексирование может использовать приставку столбца для типов
CHAR
,
VARCHAR
,
BLOB
или
TEXT
.Связь
--enable-named-pipe
. Серверы Windows также поддерживают
соединения совместно используемой памяти, если запущены с опцией
--shared-memory
. Клиенты могут соединиться через совместно
используемую память при использовании опции --protocol=memory
.
Локализация
latin1
(cp1252), german
,
big5
, ujis
, несколько наборов символов Unicode.
Например, скандинавские символы ц╔
,
ц╓
и ц╤
разрешены в именах таблиц и именах столбцов.latin1
и шведское сопоставление использованы по
умолчанию). Возможно изменить это, когда сервер MySQL запущен. Чтобы видеть
пример очень усовершенствованной сортировки, посмотрите на чешский код
сортировки. Сервер MySQL поддерживает много различных наборов символов,
которые могут быть определены во время компиляции и выполнения.Клиенты и инструменты
MyISAM
, см.
главу 5.--help
или
-?
, чтобы получить помощь онлайн.1.3.3. История MySQL
mSQL
,
чтобы соединить с нашими таблицами, используя наш собственный быстрый низкий
уровень (ISAM). Однако, после некоторого тестирования, мы пришли к выводу,
что mSQL
не был достаточно быстр или достаточно гибок для наших
потребностей. Это привело к новому интерфейсу SQL к нашей базе данных, но с
почти тем же самым интерфейсом API как у mSQL
. Этот API был
разработан, чтобы позволить имеющему отношение к третьей стороне коду,
который был написан для использования с mSQL
быть перенесенным легко для использования с MySQL.1.4. Что нового в MySQL 8.0
Особенности, добавленные в MySQL 8.0
InnoDB
продолжает использовать его собственный
словарь данных в MySQL 8.0.0.AUTO_INCREMENT = N
. Если Вы инициализируете автоинкремент с
определенным значением или если Вы изменяете счетчик автоинкремента к
большему значению, новое значение сохранено через перезапуски сервера.ROLLBACK
больше не приводит к повторному использованию значений автоинкремента,
которые были выделены отмененной транзакции.AUTO_INCREMENT
к значению, больше чем текущий максимум, (в
UPDATE
, например),
новое значение сохранено, и последующие запросы
INSERT
выделяют значения, начиная с нового, большего значения.InnoDB
пишет флаг повреждения в журнал redo, который делает флаг повреждения
безопасным от катастрофического отказа. InnoDB
также пишет данные о флаге повреждения в памяти частной для механизма
системной таблице на каждой контрольной точке. Во время восстановления
InnoDB
читает флаги повреждения от местоположений и результатов
слияний прежде, чем отметить таблицу в памяти и индексированные
объекты как поврежденные.InnoDB
memcached
поддерживает многократные вызовы get
(получение
многократных пар ключа/значения в единственном запросе
memcached) и запросах диапазона. См.
раздел 16.19.4
.
innodb_deadlock_detect
используется, чтобы отключить обнаружение
тупика. На системах высокой степени параллелизма обнаружение тупика может
вызвать замедление, когда многочисленные потоки ждут той же самой блокировки.
Время от времени, может быть более эффективно отключить обнаружение тупика и
положиться на
innodb_lock_wait_timeout
для операционной отмены,
когда тупик происходит.
INNODB_CACHED_INDEXES
в INFORMATION_SCHEMA
сообщает число индексных страниц, кэшируемых в буферном пуле
InnoDB
для каждого индекса.InnoDB
теперь составлены в совместно
используемом временном табличном пространстве ibtmp1
.
->>
оператор, который эквивалентен запросу
JSON_UNQUOTE()
на результате JSON_EXTRACT()
.->
,
введенныого в MySQL 5.7, col->>"$.path"
аналогично
JSON_UNQUOTE(col->"$.path")
.
Действующий оператор пути может использоваться везде, где Вы можете
использовать JSON_UNQUOTE(JSON_EXTRACT())
, например, в
списках столбцов SELECT
,
WHERE
и HAVING
, ORDER BY
и
GROUP BY
, см. раздел
13.16.6.JSON_ARRAYAGG()
и
JSON_OBJECTAGG()
. JSON_ARRAYAGG()
берет столбец или выражение как параметр и
соединяет результат как один массив JSON
. Выражение может быть приведено к любому типу данных MySQL, это
не должно быть значением JSON
. JSON_OBJECTAGG()
берет два столбца или выражения, которые это интерпретирует как ключ и
значение, это возвращает результат как объект JSON
. См.
раздел 13.19.
Особенности, устаревшие в
MySQL 8.0
Особенности, удаленные в MySQL 8.0
--ignore-db-dir
и
ignore_db_dirs
являются посторонними и были удалены.sync_frm
удалена потому, что файлы
.frm
стали устаревшими.ST_
, если это выполняет
точную работу, или с MBR
, если это выполняет работу, основанную
на минимальных ограничительных прямоугольниках. В MySQL 8.0 устаревшие
функции удалены, чтобы оставить только функции
соответствующие ST_
и MBR
:
MBR
-имен:
Contains()
, Disjoint()
, Equals()
,
Intersects()
, Overlaps()
, Within()
.
ST_
-имен:
Area()
, AsBinary()
,
AsText()
, AsWKB()
, AsWKT()
,
Buffer()
, Centroid()
, ConvexHull()
,
Crosses()
, Dimension()
, Distance()
,
EndPoint()
, Envelope()
,
ExteriorRing()
, GeomCollFromText()
,
GeomCollFromWKB()
, GeomFromText()
,
GeomFromWKB()
, GeometryCollectionFromText()
,
GeometryCollectionFromWKB()
, GeometryFromText()
,
GeometryFromWKB()
, GeometryN()
,
GeometryType()
, InteriorRingN()
,
IsClosed()
, IsEmpty()
, IsSimple()
,
LineFromText()
, LineFromWKB()
,
LineStringFromText()
, LineStringFromWKB()
,
MLineFromText()
, MLineFromWKB()
,
MPointFromText()
, MPointFromWKB()
,
MPolyFromText()
, MPolyFromWKB()
,
MultiLineStringFromText()
,
MultiLineStringFromWKB()
,
MultiPointFromText()
, MultiPointFromWKB()
,
MultiPolygonFromText()
, MultiPolygonFromWKB()
,
NumGeometries()
, NumInteriorRings()
,
NumPoints()
, PointFromText()
,
PointFromWKB()
, PointN()
,
PolyFromText()
, PolyFromWKB()
,
PolygonFromText()
, PolygonFromWKB()
,
SRID()
, StartPoint()
,
Touches()
, X()
, Y()
.GLength()
заменена на
ST_Length()
.
--ssl
и
--ssl-verify-server-cert
удалены, используйте
--ssl-mode=REQUIRED
вместо --ssl=1
или --enable-ssl
.
Используйте
--ssl-mode=DISABLED
вместо --ssl=0
,
--skip-ssl
или --disable-ssl
. Используйте
--ssl-mode=VERIFY_IDENTITY
вместо
--ssl-verify-server-cert
. Серверная опция
--ssl
остается неизменной.MYSQL_OPT_SSL_ENFORCE
и
MYSQL_OPT_SSL_VERIFY_SERVER_CERT
в
mysql_options()
соответствуют клиентским --ssl
и
--ssl-verify-server-cert
и удалены. Используйте
MYSQL_OPT_SSL_MODE
со значением опции SSL_MODE_REQUIRED
или SSL_MODE_VERIFY_IDENTITY
.mysql_shutdown()
и соответствующая команда
протокола клиент-сервер COM_SHUTDOWN
была удалена. Вместо этого
используйте mysql_query()
,
чтобы выполнять SHUTDOWN
.#mysql50#
. Поскольку эти преобразования больше не выполнены,
опции --fix-db-names
и --fix-table-names
для
mysqlcheck
, параметр UPGRADE DATA DIRECTORY NAME
для
ALTER DATABASE
и
переменная состояния Com_alter_db_upgrade
удалены.
--initialize
или
--initialize-insecure
. Кроме того, опция
--bootstrap
для
mysqld, которая управляла местоположением установки для
mysql_install_db и опция
INSTALL_SCRIPTDIR
для CMake
удалены.--partition
и --skip-partition
были удалены
из MySQL Server, а связанные с разделением записи больше не показывают в
выводе SHOW PLUGINS
и в
таблице INFORMATION_SCHEMA.PLUGINS
.
InnoDB
и
NDB
, из них только InnoDB
поддержан в MySQL 8.0. Любая попытка составить разделенные таблицы в
MySQL 8.0 с использованием любого другого механизма хранения терпит неудачу.
InnoDB
из MySQL 5.7 (или
раньше) в MySQL 8.0 недопустимо. Есть две опции для того, чтобы
обработать такую таблицу:ALTER
TABLE ... REMOVE PARTITIONING
.InnoDB
через ALTER TABLE
... ENGINE=INNODB
.InnoDB
таблицы до обновления сервера к MySQL 8.0. Иначе такая таблица не может
использоваться после обновления.MyISAM
, у
которого нет никакого родного обработчика разделения. Вы можете сделать это,
выполняя любое из следующего:CREATE TABLE
, которые используют значение для
STORAGE ENGINE
не InnoDB
.InnoDB
или позвольте использовать InnoDB
в качестве механизма хранения по умолчанию.--plugin-load
или
--plugin-load-add
, а также загрузку во время выполнения,
используя INSTALL PLUGIN
.
ER_BINLOG_READ_EVENT_CHECKSUM_FAILURE
ER_BINLOG_ROW_RBR_TO_SBR
ER_BINLOG_ROW_WRONG_TABLE_DEF
ER_CANT_ACTIVATE_LOG
ER_CANT_CHANGE_GTID_NEXT_IN_TRANSACTION
ER_CANT_CREATE_FEDERATED_TABLE
ER_CANT_CREATE_SROUTINE
ER_CANT_DELETE_FILE
ER_CANT_GET_WD
ER_CANT_SET_GTID_PURGED_WHEN_GTID_MODE_IS_OFF
ER_CANT_SET_WD
ER_CANT_WRITE_LOCK_LOG_TABLE
ER_CREATE_DB_WITH_READ_LOCK
ER_CYCLIC_REFERENCE
ER_DB_DROP_DELETE
ER_DELAYED_NOT_SUPPORTED
ER_DIFF_GROUPS_PROC
ER_DISK_FULL
ER_DROP_DB_WITH_READ_LOCK
ER_DROP_USER
ER_DUMP_NOT_IMPLEMENTED
ER_ERROR_DURING_CHECKPOINT
ER_ERROR_ON_CLOSE
ER_EVENTS_DB_ERROR
ER_EVENT_CANNOT_DELETE
ER_EVENT_CANT_ALTER
ER_EVENT_COMPILE_ERROR
ER_EVENT_DATA_TOO_LONG
ER_EVENT_DROP_FAILED
ER_EVENT_MODIFY_QUEUE_ERROR
ER_EVENT_NEITHER_M_EXPR_NOR_M_AT
ER_EVENT_OPEN_TABLE_FAILED
ER_EVENT_STORE_FAILED
ER_EXEC_STMT_WITH_OPEN_CURSOR
ER_FAILED_ROUTINE_BREAK_BINLOG
ER_FLUSH_MASTER_BINLOG_CLOSED
ER_FORM_NOT_FOUND
ER_FOUND_GTID_EVENT_WHEN_GTID_MODE_IS_OFF__UNUSED
ER_FRM_UNKNOWN_TYPE
ER_GOT_SIGNAL
ER_GRANT_PLUGIN_USER_EXISTS
ER_GTID_MODE_REQUIRES_BINLOG
ER_GTID_NEXT_IS_NOT_IN_GTID_NEXT_LIST
ER_HASHCHK
ER_INDEX_REBUILD
ER_INNODB_NO_FT_USES_PARSER
ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR
ER_LOAD_DATA_INVALID_COLUMN_UNUSED
ER_LOGGING_PROHIBIT_CHANGING_OF
ER_MALFORMED_DEFINER
ER_MASTER_KEY_ROTATION_ERROR_BY_SE
ER_NDB_CANT_SWITCH_BINLOG_FORMAT
ER_NEVER_USED
ER_NISAMCHK
ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR
ER_NO_FILE_MAPPING
ER_NO_GROUP_FOR_PROC
ER_NO_RAID_COMPILED
ER_NO_SUCH_KEY_VALUE
ER_NO_SUCH_PARTITION__UNUSED
ER_OBSOLETE_CANNOT_LOAD_FROM_TABLE
ER_OBSOLETE_COL_COUNT_DOESNT_MATCH_CORRUPTED
ER_ORDER_WITH_PROC
ER_PARTITION_SUBPARTITION_ERROR
ER_PARTITION_SUBPART_MIX_ERROR
ER_PART_STATE_ERROR
ER_PASSWD_LENGTH
ER_QUERY_ON_MASTER
ER_RBR_NOT_AVAILABLE
ER_SKIPPING_LOGGED_TRANSACTION
ER_SLAVE_CHANNEL_DELETE
ER_SLAVE_MULTIPLE_CHANNELS_HOST_PORT
ER_SLAVE_MUST_STOP
ER_SLAVE_WAS_NOT_RUNNING
ER_SLAVE_WAS_RUNNING
ER_SP_GOTO_IN_HNDLR
ER_SP_PROC_TABLE_CORRUPT
ER_SQL_MODE_NO_EFFECT
ER_SR_INVALID_CREATION_CTX
ER_TABLE_NEEDS_UPG_PART
ER_TOO_MUCH_AUTO_TIMESTAMP_COLS
ER_UNEXPECTED_EOF
ER_UNION_TABLES_IN_DIFFERENT_DIR
ER_UNSUPPORTED_BY_REPLICATION_THREAD
ER_UNUSED1
ER_UNUSED2
ER_UNUSED3
ER_UNUSED4
ER_UNUSED5
ER_UNUSED6
ER_VIEW_SELECT_DERIVED_UNUSED
ER_WRONG_MAGIC
ER_WSAS_FAILED
INNODB_LOCKS
и INNODB_LOCK_WAITS
в INFORMATION_SCHEMA
удалены. Используйте
Performance Schema data_locks
и
data_lock_waits
.
LOCK_TABLE
в
INNODB_LOCKS
и
столбец locked_table
в представлениях
innodb_lock_waits
и
x$innodb_lock_waits
схемы sys
содержат объединенные значения схемы/имени таблицы. В
MySQL 8.0 таблица data_locks
и представления схемы sys
содержат отдельное имя схемы и столбцов таблицы. См.
раздел 24.4.3.9.InnoDB
больше не сжимает временные таблицы. Когда
innodb_strict_mode
включен (значение по умолчанию),
CREATE TEMPORARY TABLE
возвращает ошибку, если указано
ROW_FORMAT=COMPRESSED
или KEY_BLOCK_SIZE
.
Если innodb_strict_mode
выключен, предупреждения выпущены, и временная таблица
составлена, используя несжатый формат строки.InnoDB
больше не создает файлы
.isl
(InnoDB
Symbolic Link), создавая файлы с
данными табличного пространства за пределами каталога данных MySQL. Записи
журнала Redo теперь используются, чтобы определить местонахождение
удаленных табличных пространств.
.isl
уже не выйдет.InnoDB
были удалены:
innodb_file_format
innodb_file_format_check
innodb_file_format_max
innodb_large_prefix
InnoDB
в MySQL 5.1. Теперь, когда MySQL 5.1 достиг конца своего
цикла разработки, параметры больше не требуются.FILE_FORMAT
был удален из таблиц
INNODB_SYS_TABLES
и
INNODB_SYS_TABLESPACES
в Information Schema.innodb_support_xa
, которая включает поддержку
двухфазовой передачи в транзакциях XA, удалена. InnoDB
теперь
всегда это поддерживает.1.5. Переменные состояния и
опции, добавленные, устаревшие или удаленные в MySQL 8.0
Опции и переменные, введенные в MySQL 8.0
Acl_cache_items_count
:
Число кэшируемых объектов привилегии. Добавлено в MySQL 8.0.0.Com_alter_user_default_role
: Счетчик запросов ALTER USER ... DEFAULT ROLE. Добавлено в MySQL
8.0.0.Com_create_role
:
Счетчик запросов CREATE ROLE. Добавлено в MySQL 8.0.0.Com_drop_role
:
Счетчик запросов DROP ROLE. Добавлено в MySQL 8.0.0.Com_grant_roles
:
Счетчик запросов GRANT ROLE. Добавлено в MySQL 8.0.0.Com_install_component
: Счетчик запросов INSTALL COMPONENT. Добавлено в MySQL 8.0.0.Com_revoke_roles
:
Счетчик запросов REVOKE ROLES. Добавлено в MySQL 8.0.0.Com_set_role
:
Счетчик запросов SET ROLE. Добавлено в MySQL 8.0.0.Com_uninstall_component
: Счетчик запросов UINSTALL COMPONENT. Добавлено в MySQL 8.0.0.
information_schema_stats
: Какой табличный источник статистики
использовать. Добавлено в MySQL 8.0.0.
innodb_buffer_pool_debug
: Многократные буферные экземпляры
разрешены, когда буферный пул меньше, чем 1GB. Добавлено в MySQL 8.0.0.
performance_schema_error_size
:
Число инструментованных ошибок. Добавлено в MySQL 8.0.0.
Performance_schema_session_connect_attrs_longest_seen
:
Размер самого длинного допустимого
атрибута соединения в буфере. Добавлено в MySQL 8.0.0.
persisted_globals_load
: Загрузить ли сохраненные настройки
конфигурации. Добавлено в MySQL 8.0.0.
schema_definition_cache
: Определяет число объектов определения
схемы, которые могут быть сохранены в кэше объекта словаря. Добавлено в MySQL
8.0.0.
stored_program_definition_cache
:
Определяет число сохраненных программ и объектов определения событий, которые
могут быть сохранены в кэше объекта словаря. Добавлено в MySQL 8.0.0.
tablespace_definition_cache
:
Определяет число объектов определения табличного пространства, которые могут
быть сохранены в кэше объекта словаря. Добавлено в MySQL 8.0.0.Опции и Переменные, устаревшие в MySQL
8.0
Опции и переменные, удаленные в MySQL 8.0
bootstrap
:
Используется скриптами установки. Удалено в MySQL 8.0.0.Com_alter_db_upgrade
: Счетчик запросов ALTER DATABASE ... UPGRADE DATA DIRECTORY NAME.
Удалено в MySQL 8.0.0.ignore-db-dir
:
Каталог обработки как каталог не базы данных. Удалено в MySQL 8.0.0.ignore_db_dirs
: Каталоги, обработанные как
каталоги не базы данных. Удалено в MySQL 8.0.0.innodb_checksums
: Включить проверку допустимости
контрольных сумм InnoDB. Удалено в MySQL 8.0.0.innodb_disable_resize_buffer_pool_debug
: Отключает
изменение размеров буферного пула InnoDB. Удалено в MySQL 8.0.0.innodb_file_format
: Формат для новых таблиц InnoDB.
Удалено в MySQL 8.0.0.innodb_file_format_check
: Выполняет ли InnoDB
проверку совместимости формата файла. Удалено в MySQL 8.0.0.innodb_file_format_max
: Тег формата файла в
совместно используемом табличном пространстве. Удалено в MySQL 8.0.0.innodb_large_prefix
: Включает ключи большей длины
для приставки столбца в индексе. Удалено в MySQL 8.0.0.innodb_locks_unsafe_for_binlog
: Вынудить InnoDB не
использовать следующую ключевую блокировку. Вместо этого используйте только
блокировку на уровне строки. Удалено в MySQL 8.0.0.innodb_stats_sample_pages
: Число индексных страниц в
образце для статистики распределения индекса. Удалено в MySQL 8.0.0.innodb_support_xa
: Включите поддержку двухфазовой
передачи XA InnoDB. Удалено в MySQL 8.0.0.partition
: Включить (или отключить) поддержку
разделов. Удалено в MySQL 8.0.0.skip-partition
: Не включать определяемые
пользователем разделы. Удалено в MySQL 8.0.0.sync_frm
: Синхронизировать .frm с диском при
создании. Включено по умолчанию. Удалено в MySQL MySQL 8.0.0.1.6. Источники информации MySQL
1.6.1. Списки рассылки MySQL
lists.mysql.com
на Ваш сайт размножены к местному списку. В
таких случаях, пожалуйста, свяжитесь со своим системным администратором,
чтобы быть добавленными или исключенными из местного списка MySQL.List-ID:
или Delivered-To:
,
чтобы идентифицировать сообщения списка.announce
mysql
bugs
internals
mysqldoc
benchmarks
packagers
java
win32
myodbc
gui-tools
cluster
dotnet
plusplus
perl
DBD::mysql
.
<
mysql-france-subscribe@yahoogroups.com>
<list@tinc.net>
subscribe mysql your@email.address
в список.<
mysql-de-request@lists.4t2.com>
subscribe mysql-de your@email.address
в список.
Вы можете найти информацию об этом списке рассылки на
http://www.4t2.com/mysql/.<
mysql-br-request@listas.linkway.com.br>
subscribe mysql-br your@email.address
в список.
<
mysql-alta@elistas.net>
subscribe mysql your@email.address
в список.1.6.1.1. Как использовать списки рассылки
1.6.2. Общественная поддержка MySQL на форумах
1.6.3. Общественная поддержка MySQL в
Internet Relay Chat (IRC)
#mysql
прежде всего для вопросов о MySQL, но другие
базы данных и общие вопросы SQL приветствуются. Вопросы о PHP, Perl или C в
комбинации с MySQL также распространены.#workbench
прежде всего для вопросов, связанных с MySQL
Workbench, это также хорошее место, чтобы встретить
разработчиков MySQL Workbench.xChat
(http://www.xchat.org/).
X-Chat (GPL) доступен для Unix и Windows (Windows X-Chat:
http://www.silverex.org/download/).1.6.4. MySQL Enterprise
1.7. Как сообщить об ошибках или проблемах
<secalert_us@oracle.com
>
. Исключение: клиенты поддержки должны сообщить обо всех
проблемах, включая ошибки безопасности, в
http://support.oracle.com/.mysql test < script_file
на Вашем прецеденте или
выполняя скрипт Perl, который Вы включаете в отчет об ошибках. У любой
ошибки, которую мы в состоянии повторить, есть высокий шанс быть исправленной
в следующем выпуске MySQL.
--vertical
или \G
. Пример
EXPLAIN SELECT
позже в этом
разделе демонстрирует использование \G
.bin
в соответствии с Вашим каталогом установки MySQL.uname -a
.SHOW CREATE TABLE db_name.tbl_name
.
Это очень легкий способ получить определение любой таблицы в базе данных.
Информация помогает нам создать ситуацию, соответствующую той,
которую Вы испытали.sql_mode
.
Для хранимой процедуры, сохраненной функции и триггеров, соответствующее
значение sql_mode
,
когда объект создавался. Для хранимой процедуры или функции
SHOW CREATE PROCEDURE
или SHOW CREATE FUNCTION
показывает соответствующий режим SQL, или Вы можете
запросить INFORMATION_SCHEMA
:
SELECT ROUTINE_SCHEMA, ROUTINE_NAME, SQL_MODE
FROM INFORMATION_SCHEMA.ROUTINES;
Для триггеров используйте:
SELECT EVENT_OBJECT_SCHEMA, EVENT_OBJECT_TABLE, TRIGGER_NAME, SQL_MODE
FROM INFORMATION_SCHEMA.TRIGGERS;
SELECT
Вы должны всегда включать
вывод EXPLAIN SELECT ...
и по крайней мере число строк, которое
SELECT
производит.
Вы должны также включать вывод SHOW CREATE TABLE tbl_name
для каждой таблицы, которая вовлечена. Чем больше информации Вы
предоставляете о своей ситуации, тем более вероятно, что кто-то
сможет помочь Вам.
\G
для запросов, которые иначе
обеспечивали бы очень длинные выходные строки, которые трудно читать.
mysql> SHOW VARIABLES;
mysql> SHOW COLUMNS FROM ...\G
<output from SHOW COLUMNS>
mysql> EXPLAIN SELECT ...\G
<output from EXPLAIN>
mysql> FLUSH STATUS;
mysql> SELECT ...;
<A short version of the output from SELECT,
including the time taken to run the query>
mysql> SHOW STATUS;
<output from SHOW STATUS>
README
, который описывает
Вашу проблему. Создайте сжатый архив своих файлов, используя
tar и gzip или
zip. После того, как Вы начинаете отчет об
ошибках для нашей базы данных ошибок в http://bugs.mysql.com/, щелкните по вкладке Files в отчете
об ошибках для инструкций по загрузке архива в базу данных ошибок.DBI
и DBD::mysql
,
включайте номера версии для Perl, DBI
и DBD::mysql
.
CHECK TABLE
.
Если этот запрос сообщает о каких-либо ошибках:
InnoDB
, перезапустите
сервер и смотрите, сохраняется ли проблема, или затрагивала ли ошибка только
кэшируемые данные в памяти. Если данные повреждены на диске, рассмотрите
перезапуск с
innodb_force_recovery
, чтобы Вы могли вывести в
дамп затронутые таблицы.REPAIR TABLE
или с
myisamchk.
См. главу 6.
lower_case_table_names
с использованием
SHOW VARIABLES LIKE 'lower_case_table_names'
.
Эта переменная затрагивает, как сервер обрабатывает регистр символов
имен базы данных и имен таблиц. Его эффект для данного значения должен быть
как описано в разделе 10.2.2
..err
. См.
раздел 6.4.2. Пожалуйста, включайте любую
релевантную информацию от этого файла в Ваш отчет об ошибках. Обычно
mysqld
никогда не должен разрушать таблицу, если ничто не уничтожило его в середине
обновления. Если Вы можете найти причину падения
mysqld,
для нас намного легче предоставить Вам решение для проблемы. См.
раздел B.5.1.1.8. Соответствие стандартам MySQL
HANDLER
тому пример, см. раздел
14.2.4.NDBCLUSTER
. См.
MySQL Cluster NDB 7.5.Выбор режима SQL
sql_mode
.
DBA может установить глобальный режим SQL, чтобы соответствовать
эксплуатационным требованиям сайта, и каждое приложение может установить свой
сеансовый режим SQL.Запуск MySQL в режиме ANSI
--ansi
.
Выполнение сервера в режиме ANSI является тем же самым, как запуск
со следующими опциями:
--transaction-isolation=SERIALIZABLE --sql-mode=ANSI
Чтобы достигнуть того же самого эффекта во время
выполнения, выполните эти два запроса:
SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET GLOBAL sql_mode = 'ANSI';
Вы можете видеть, что установка
sql_mode
в
'ANSI'
включает все опции режима SQL, которые важны для режима
ANSI следующим образом:
mysql> SET GLOBAL sql_mode='ANSI';
mysql> SELECT @@global.sql_mode;
-> 'REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI'
Выполнение сервера в режиме ANSI с
--ansi
не совсем то же самое, как установка режима SQL в 'ANSI'
,
поскольку опция --ansi
также устанавливает операционный уровень изоляции.
1.8.1.
Расширения MySQL к стандартному SQL
/*! MySQL-specific code */
В этом случае MySQL Server разбирает и выполняет код в пределах комментария,
как это был бы, любой другой запрос SQL, но другие SQL-серверы проигнорирует
расширения. Например, MySQL Server признает ключевое слово
STRAIGHT_JOIN
в следующем запросе, но другие серверы не будут:
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
Если Вы добавляете номер версии после !
,
синтаксис в пределах комментария выполнен, только если версия MySQL больше
или равна указанному номеру версии. KEY_BLOCK_SIZE
в следующем комментарии выполнен только серверами MySQL 5.1.10 или выше:
CREATE TABLE t1(a INT, KEY (a)) /*!50110 KEY_BLOCK_SIZE=1024 */;
Следующие описания перечисляют расширения MySQL,
организованные по категориям.
"
или в '
. Если режим SQL
ANSI_QUOTES
включен, строки могут быть приложены только в '
, а сервер
интерпретирует строки, приложенные в "
как идентификаторы.\
символ ESC в строках.User space
. MySQL Server не поддерживает такие табличные
пространства, как использующееся в запросах как это: CREATE TABLE
ralph.my_table ... IN my_tablespace
.ANALYZE TABLE
, CHECK TABLE
,
OPTIMIZE TABLE
и
REPAIR TABLE
.CREATE DATABASE
, DROP DATABASE
и
ALTER DATABASE
, см. разделы
14.1.9,
14.1.19 и
14.1.1.DO
.EXPLAIN SELECT
, чтобы
получить описание того, как таблицы обработаны оптимизатором.FLUSH
и
RESET
.SET
, см.
раздел 14.7.4.1.SHOW
, см.
раздел 14.7.5.
Информация, произведенная многими из MySQL-определенных запросов
SHOW
,
может быть получена более стандартным способом при использовании
SELECT
для запроса
INFORMATION_SCHEMA
. См. главу 22.LOAD DATA INFILE
. Во многих случаях этот синтаксис совместим с Oracle
LOAD DATA INFILE
.
См. раздел 14.2.6.RENAME TABLE
. См. раздел 14.1.29.REPLACE
вместо
DELETE
и
INSERT
. См.
раздел 14.2.8.CHANGE col_name
, DROP col_name
или DROP INDEX
,
IGNORE
или RENAME
в ALTER TABLE
.
Использование нескольких ADD
,
ALTER
, DROP
или CHANGE
в
ALTER TABLE
.
См. раздел 14.1.7.INDEX
или KEY
в
CREATE TABLE
. См. раздел
14.1.15.TEMPORARY
или IF NOT EXISTS
с
CREATE TABLE
.IF EXISTS
с
DROP TABLE
и
DROP DATABASE
.DROP TABLE
.ORDER BY
и LIMIT
в
UPDATE
и
DELETE
.INSERT INTO tbl_name SET col_name = ...
.DELAYED
в INSERT
и
REPLACE
.LOW_PRIORITY
в INSERT
, REPLACE
,
DELETE
и
UPDATE
.INTO OUTFILE
или INTO DUMPFILE
в
SELECT
, см.
раздел 14.2.9.STRAIGHT_JOIN
или SQL_SMALL_RESULT
в
SELECT
.GROUP BY
.
Это дает лучшую работу для некоторых очень хитрых, но довольно
нормальных запросов. См.
раздел 13.19.ASC
и DESC
в
GROUP BY
, но не в ORDER BY
.:=
, см. раздел 10.4.
||
и
&&
, чтобы означать
логические OR и AND, в языке C. В MySQL Server
||
и
OR
синонимы, как
&&
и
AND
.
Из-за этого хорошего синтаксиса MySQL Server не поддерживает стандартный
оператор SQL ||
для строковой связи, надо использовать
CONCAT()
. Поскольку
CONCAT()
берет любое число параметров, легко преобразовать использование
||
для MySQL Server.COUNT(DISTINCT
value_list)
, где value_list имеет больше, чем один элемент.latin1
(cp1252 West European) по умолчанию.
Если Вам не нравится это, Вы должны объявить свои столбцы с атрибутом
BINARY
или используйте BINARY
, который заставляет
сравнения быть сделанными, используя основные символьные кодовые обозначения,
а не лексическое упорядочивание.%
синоним для
MOD()
. Поэтому
N % M
эквивалентно
MOD(N,M)
.
%
поддержан для
программистов C и для совместимости с PostgreSQL.=
,
<>
,
<=
,
<
,
>=
,
>
,
<<
,
>>
,
<=>
,
AND
,
OR
или
LIKE
могут использоваться в выражениях в выходном списке столбца (слева от
FROM
) в SELECT
:
mysql> SELECT col1=1 AND col2=2 FROM my_table;
LAST_INSERT_ID()
возвращает новое значение AUTO_INCREMENT
, см. раздел 13.14.LIKE
разрешен
на числовых значениях.REGEXP
и
NOT REGEXP
расширенные регулярные выражения.CONCAT()
или
CHAR()
с одним параметром или больше, чем с двумя параметрами. В MySQL эти функции
могут взять переменное число параметров.BIT_COUNT()
, CASE
,
ELT()
,
FROM_DAYS()
,
FORMAT()
,
IF()
,
PASSWORD()
,
ENCRYPT()
,
MD5()
,
ENCODE()
,
DECODE()
,
PERIOD_ADD()
,
PERIOD_DIFF()
,
TO_DAYS()
WEEKDAY()
.TRIM()
,
чтобы обрезать подстроки. Стандартный SQL поддерживает только
удаление единственного символа.STD()
,
BIT_OR()
,
BIT_AND()
,
BIT_XOR()
и
GROUP_CONCAT()
для GROUP BY
. См.
раздел 13.19.
1.8.2.
Отличия MySQL от стандартного SQL
REVOKE
, чтобы отменить привилегии
для таблицы. Для получения дополнительной информации см.
раздел 14.7.1.8.CAST()
не поддерживает приведение к
REAL
или BIGINT
. См. раздел 13.10.1.8.2.1.
Различия в SELECT INTO TABLE
SELECT ... INTO TABLE
расширения Sybase SQL. MySQL Server стандартный синтаксис SQL
INSERT INTO ... SELECT
,
который является в основном той же самой вещью. См.
раздел 14.2.5.1:
INSERT INTO tbl_temp2 (fld_id)
SELECT tbl_temp1.fld_order_id
FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
Альтернативно, Вы можете использовать
SELECT ... INTO OUTFILE
или
CREATE TABLE ... SELECT
.
SELECT ... INTO
с определяемыми пользователем переменными. Тот же самый синтаксис
может также использоваться в сохраненных подпрограммах, используя курсоры и
местные переменные. См. раздел 14.2.9.1.
1.8.2.2. Разница в UPDATE
UPDATE
использует текущее значение столбца. Второе назначение в следующих запросах
установит col2
в текущее (уже обновленное) значение
col1
, а не к исходному значению col1
. Результат:
col1
и col2
имеют то же самое значение. Это
поведение отличается от стандартного SQL.
UPDATE t1 SET col1 = col1 + 1, col2 = col1;
1.8.2.3.
Различия во внешних ключах
InnoDB
во внешнем ключе проверяет, как
будто другие родительские строки с тем же самым значением ключа не
существуют. Например, если Вы определили ограничение RESTRICT
,
и есть дочерняя строка с несколькими родительскими строками, InnoDB
не разрешает удаление любой из тех родительских строк.InnoDB
выполняет располагающиеся каскадом операции через
алгоритм depth-first, основанный на записях в индексах, соответствующих
ограничениям внешнего ключа.FOREIGN KEY
, которое ссылается на
не-UNIQUE
ключ, не стандартный SQL, а
скорее расширение InnoDB
.ON UPDATE CASCADE
или ON UPDATE SET NULL
рекукрсивно, чтобы обновить ту же самую таблицу,
которую это ранее обновило во время того же самого каскада, это действует как
RESTRICT
. Это означает, что Вы не можете использовать
ссылающийся на себя ON UPDATE CASCADE
или ON UPDATE SET
NULL
. Это должно предотвратить бесконечные циклы, следующие из
каскадных обновлений. Ссылающийся на себя ON DELETE SET NULL
, с
другой стороны, возможно, как ON DELETE CASCADE
. Расположение
каскадом операций не может быть вложено больше, чем на 15 уровней.InnoDB
ставит совместно используемую блокировку на уровне строки на дочерних
или родительских записях, которые это должно исследовать. MySQL немедленно
проверяет ограничения внешнего ключа, проверка не задержана до передачи
транзакции. Согласно стандарту SQL, поведение по умолчанию это задержать
проверку. Таким образом, ограничения проверены только после того, как
весь запрос SQL был обработан. Это означает, что
невозможно удалить строку, которая обращается к себе, используя внешний ключ.
1.8.2.4. '--' как комментарий
/* this is a comment */
для комментариев, и MySQL Server поддерживает этот синтаксис также.
MySQL также поддерживают расширения к этому синтаксису, которые позволяют
MySQL-определенному SQL быть встроенным в комментарий, как описано в
разделе 10.6.--
как последовательность начала комментария. MySQL Server применяет
#
как символ начала комментария. MySQL Server также понимает
разновидность --
стиля комментария. Таким образом,
последовательность --
должна сопровождаться пробелом (или
символом управления, таким как новая строка). Пробел обязан предотвращать
проблемы с автоматически произведенными запросами SQL, которые используют
такие конструкции, где мы автоматически вставляем значение, например:
UPDATE account SET credit=credit-payment
Рассмотрите, что происходит, если payment
имеет
отрицательную величину, например, -1
:
UPDATE account SET credit=credit--1
credit--1
допустимое выражение в SQL, но --
интерпретируется как запуск комментария, и от части выражения отказываются.
Результат: запрос, у которого есть абсолютно иное значение, чем надо:
UPDATE account SET credit=credit
Запрос не вызывает изменения в значении вообще. Это иллюстрирует что,
разрешая начинать комментарии с --
можно
поиметь серьезные последствия.
--
, чтобы это было признано как последовательность комментария в
MySQL Server. Поэтому, credit--1
безопасно использовать.--
.1.8.3. Соглашения MySQL с ограничениями
1.8.3.1.
Ограничения PRIMARY KEY и UNIQUE Index
INSERT
или
UPDATE
), которые нарушили бы
первичный ключ, уникальный ключ или ограничения внешнего ключа. Если Вы
используете такой механизм хранения, как InnoDB
, MySQL
автоматически откатывает запрос до прежнего уровня. Если Вы используете
нетранзакционный механизм хранения, MySQL прекращает обрабатывать запрос на
строке, для которой ошибка произошла, и оставляет любые
остающиеся строки необработанными.IGNORE
в
INSERT
,
UPDATE
и т.д.
Если Вы используете это, MySQL игнорирует первичный ключ или
уникально-ключевые нарушения и продолжает обрабатывать следующую строку. См.
разделы 14.2.5 и
14.2.11.
mysql_info()
function. Вы можете также использовать
SHOW WARNINGS
, см. разделы
25.8.7.36 и
14.7.5.40.InnoDB
поддерживают внешние ключи. См.
раздел 16.8.6.1.8.3.2. Ограничения FOREIGN KEY
ON UPDATE
и ON
DELETE
в CREATE TABLE
и ALTER TABLE
.
Доступные действия: RESTRICT
(значение по умолчанию),
CASCADE
, SET NULL
и NO ACTION
.SET DEFAULT
также поддержан MySQL Server
, но в настоящее время отклоняется как недопустимый
InnoDB
.
Так как MySQL не поддерживает задержанную проверку ограничений, NO
ACTION
обработан как RESTRICT
.
Для точного синтаксиса, поддержанного MySQL для внешних ключей, см.
раздел 14.1.15.3.MATCH FULL
, MATCH PARTIAL
и
MATCH SIMPLE
позволены, но их использования нужно избежать,
поскольку они заставляют MySQL Server игнорировать любой
ON DELETE
или ON UPDATE
, который
используется в том же самом запросе. MATCH
не имеют никакого
эффекта в MySQL, который в действительности проводит в
жизнь MATCH SIMPLE
.
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
.
Пример запроса из этой таблицы:
mysql> SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME
> FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
> WHERE REFERENCED_TABLE_SCHEMA IS NOT NULL;
+--------------+---------------+-------------+-----------------+
| TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME |
+--------------+---------------+-------------+-----------------+
| fk1 | myuser | myuser_id | f |
| fk1 | product_order | customer_id | f2 |
| fk1 | product_order | product_id | f1 |
+--------------+---------------+-------------+-----------------+
3 rows in set (0.01 sec)
Информация о внешних ключах в InnoDB
может также быть найдена в таблицах
INNODB_SYS_FOREIGN
и
INNODB_SYS_FOREIGN_COLS
в INFORMATION_SCHEMA
.
InnoDB
поддерживают внешние ключи. См.
раздел 16.8.6.1.8.3.3.
Ограничения на недопустимые данные
NULL
в NOT NULL
или слишком большое числовое
значение в числовой столбец, MySQL устанавливает столбец в
самое лучшее по смыслу значение вместо того, чтобы произвести
ошибку, следующие правила описывают более подробно, как это работает:ENUM
и SET
обработаны как описано в
разделе 1.8.3.4.DATE
и
DATETIME
(например,
'2000-02-31'
или '2000-02-00'
).
В этом случае, когда приложение не позволяет строгий режим SQL,
приложение должно проверить даты прежде, чем сохранить их. Если MySQL может
сохранить значение даты и получить точно то же самое значение, MySQL сохранит
это как дано. Если дата является полностью неправильной (вне способности
сервера сохранить это), специальное нулевое значение даты
'0000-00-00'
сохранено в столбце вместо этого.NULL
в столбец, который не берет
значения NULL
, ошибка происходит для однострочного
INSERT
. Для многострочного
INSERT
или
INSERT INTO ... SELECT
MySQL Server сохранит неявное значение по умолчанию для типа данных столбца.
Вообще это 0
для числовых типов, пустая строка (''
)
для строковых типов и нулевое для типов времени и даты. Неявные
значения по умолчанию обсуждены в
разделе 12.7.INSERT
не определяет значения для столбца, MySQL вставляет свое значение по
умолчанию, если определение столбца включает явный DEFAULT
.
Если у определения нет DEFAULT
, MySQL вставляет неявное значение
по умолчанию для типа данных столбца.STRICT_TRANS_TABLES
или
STRICT_ALL_TABLES
:
SET sql_mode = 'STRICT_TRANS_TABLES';
SET sql_mode = 'STRICT_ALL_TABLES';
STRICT_TRANS_TABLES
включает строгий режим для транзакционных механизмов хранения, а
также до некоторой степени для нетранзакционных механизмов. Это работает так:
STRICT_TRANS_TABLES
неправильное значение заставляет MySQL
удалять до прежнего уровня все обновления, сделанные до сих пор, если это
может быть сделано, не изменяя таблицу. Но как только таблица была изменена,
дальнейший ошибочный результат скорректирован и выданы предупреждения.
STRICT_ALL_TABLES
. Это то же самое, как
STRICT_TRANS_TABLES
за исключением того, что для нетранзакционных механизмов
хранения, ошибки прерывают запрос даже для неправильных данных в строках
после первой. Это означает, что, если ошибка происходит при многострочной
вставке или обновлении для нетранзакционной таблицы, частичное обновление
заканчивается. Более ранние строки вставлены или обновлены, но следующие
уже нет. Чтобы избежать этого для нетранзакционных таблиц, используйте
запросы единственной строки или примените
STRICT_TRANS_TABLES
, если конверсионные предупреждения, а не ошибки являются
приемлемыми. Чтобы избежать проблем в первых строках, не используйте MySQL
для контроля контента столбца. Является самым безопасным (и часто быстрым)
позволить приложению гарантировать, что это передает только допустимые
значения базе данных.INSERT IGNORE
или
UPDATE IGNORE
вместо INSERT
или
UPDATE
без IGNORE
.1.8.3.4. Ограничения ENUM и SET
ENUM
и
SET
обеспечивают эффективный способ
определить столбцы, которые могут содержать только данный набор значений. См.
разделы 12.4.4 и
12.4.5.ENUM
или
SET
действует как ограничение на
значения. Ошибка происходит для значений, которые не
удовлетворяют этим условиям:ENUM
должно быть одним из перечисленных в определении столбца или внутренним
числовым эквивалентом этого. Значение не может быть ошибочным значением (то
есть, 0 или пустая строка). Для столбца, определенного как
ENUM('a','b','c')
, такие значения,
как ''
, 'd'
или
'ax'
недопустимы и отклонены.SET
должно быть пустой строкой или значением, состоящим только из значений,
перечисленных в определении столбца, отделенных запятыми. Для столбца,
определенного как SET('a','b','c')
,
такое значение, как 'd'
или
'a,b,c,d'
недопустимо и отклонено.INSERT IGNORE
или UPDATE IGNORE
. В этом случае предупреждение произведено, а
не ошибка. Для ENUM
значение вставлено как ошибочный член (0
). Для
SET
значение вставлено как дано за
исключением того, что удалены любые недопустимые подстроки. Например,
'a,x,b,y'
станет 'a,b'
.1.9. Благодарности
1.9.1. Спонсоры MySQL
MySQL server
и MySQL manual
,
мы хотим признать тех, кто сделал вклады в MySQL distribution
.
Спонсоры перечислены здесь, в несколько случайном порядке: <
qwerg@mbox.vol.it>
или
<qwerg@tin.it>
<
irena@mail.yacc.it>
mysqlshutdown.exe
и mysqlwatch.exe
.mSQL
, но
убедились, что это не могло удовлетворить наши цели. Поэтому мы написали
интерфейс SQL к Unireg.
mysqladmin и
mysql это программы, которые были в значительной степени
под влиянием mSQL
. Мы приложили много сил для создания
синтаксиса MySQL как спецмножество mSQL
.
Многие из идей API заимствованы в mSQL
, чтобы сделать
простым портирование программ mSQL
на MySQL API.
Программное обеспечение MySQL не содержит кода от mSQL
.
Два файла в дистрибутиве (client/insert_test.c
и
client/select_test.c
) основаны на соответствующих (незащищенных
авторским правом) файлах в mSQL
, но изменены как примеры,
показывая изменения, необходимые, чтобы преобразовать код из
mSQL
в MySQL Server. mSQL
is
copyrighted David J. Hughes.<
igor@frog.kiev.ua>
msqldump
, но перенесен и улучшен Monty).<
zarko.mocnik@dem.si>
<tommy@valley.ne.jp
>
_MB
и
наборов символов ujis и sjis.<
joshua@chamas.com>
<
Yves.Carlier@rug.ac.be>
<rhys@wales.com
>
(And GWE Technologies Limited)
<
X.Zhu@brad.ac.uk>
<
pixel@organic.com>
<
Rick_Mehalick@i-o.com>
xmysql
, графический X-клиент для MySQL Server.<sisk@wix.com>
<
axeld@vial.ethz.ch>
<
toni@readysoft.es>
<
jay@pathways.sde.state.sc.us>
<
davids@secnet.com>
<
jou@nematic.ieo.nctu.edu.tw>
<
hewei@mail.ied.ac.cn>
<
adelton@fi.muni.cz>
<
bourbon@netvision.net.il>
FROM_UNIXTIME()
, ENCRYPT()
и помощь по вопросам bison.
Активный участник списка рассылки.<luuk@wxs.nl>
DBI
/DBD
. Большая помощь с
crash-me
и выполнение точек отсчета. Некоторые новые функции
даты. Скрипт mysql_setpermission.<
root@medinf.chuvashia.su>
CREATE FUNCTION
и
DROP FUNCTION
.<
bobak@relog.ch>
AGGREGATE
к определяемым пользователем функциям.
<
R.Wakelin@march.co.uk>
<
jetman@li.net>
libmysql.dll
.<
jpereira@iafrica.com>
<cjs@portal.ca
>
<
m.ramsch@computer.org>
pthread_mutex()
для OS/2.MERGE
, чтобы обработать
INSERT
. Активный член в списках рассылки MySQL.<
jehamby@lightside>
,
<psmith@BayNetworks.com
>
,
<duane@connect.com.au>
, Ted Deppner
<ted@psyber.com>
,
Mike Simons, Jaakko Hyvatti.<
dkoch@amcity.com>
<luuk@wxs.nl>
<
tps@users.buoy.com>
DBD::mysql
.<
gerberb@zenez.com>
<
RM186061@shellus.com>
xmysql
и основные вопросы об установке.<
bourbon@netvision.net.il>
<
frankie@citel.upc.es>
<jsmith@wtp.net
>
<
sklar@student.net>
<
A.MacDonald@uel.ac.uk>
<
jlyon@imag.net>
.rpm
и сборку из исходных текстов.<
lorvid@WOLFENET.com>
<
patrick@coconet.com>
<
rjharmon@uptimecomputers.com>
DBD
, Linux и SQL.1.9.2. Documenters и переводчики
<
mke@terrapin.turbolift.com>
<
fty@mediapulse.com>
DBI
/DBD
.<
pauls@etext.org>
, Ray Loyzaga
<yar@cs.su.oz.au>
<
gilbert@ican.net>
, Jean-Marc Pouyot <
jmp@scalaire.fr>
<snajdr@pvt.net
>
<
jotel@itnet.com.pl>
<
rmo@www.hivolda.no>
<
root@timur.tatarstan.ru>
<brenno@dewinter.com
>
& Filippo Grassilli
<phil@hyppo.com>
<
dirk@trinity.saar.de>
<
billik@sun.uniag.sk>
<
tzoompy@cs.washington.edu>
1.9.3. Пакеты и поддержка MySQL
DBD
(Perl) interface.
<
a.koenig@mind.de>
<
wiedmann@neckar-alb.de>
DBD::mysql
module.
<
eugene@acenet.com.sg>
mysqli
extension (API) for use with
MySQL 4.1 and up.
<
maruzz@matrice.it>
<
Xavier.Leroy@inria.fr>
1.9.4.
Утилиты, которыми создавался MySQL
libc
library (from which we have borrowed
strto.c
to get some code working in Linux).
valgrind
, an excellent memory
checker tool that has helped us find a lot of otherwise hard
to find bugs in MySQL.
DDD
(Data Display Debugger), прекрасный графический
front end к gdb).1.9.5. Поддержка MySQL
MySQL server
и MySQL manual
,
мы хотим признать следующие компании, которые помогли нам финансировать
развитие MySQL server
, платя нам за то, что мы развили новую
особенность или дали нам аппаратные средства для развития MySQL server
.
--skip-show-database
.
Найди своих коллег! |
Вы можете направить письмо администратору этой странички, Алексею Паутову.