Category archives: MySQL

Борьба с ошибками при экспорте данных через mysqldump в MySQL

Борьба с возникшими ошибками при экспорте данных через нативный инструмент mysqldump в СУБД MySQL — дело тривиальное. Смотрим на сообщения в окне логов. После завершения экспорта полоска будет полностью заполнена и под ней будет сообщение вроде такого: «Status: 5 of 5 exported». Read more

Связь один ко многим в реляционных БД

Как правильно формировать структру БД по части связей? Сперва надо определиться какой тип связи данных используется: один к одному, один ко многим, многие ко многим. Здесь мы поговорим про самый распространённый тип «один ко многим» на примере СУБД MySQL. Read more

Составной уникальный ключ не работает для данных с NULL в MySQL

Составной уникальный ключ и null показывают невероятное поведение. В популярной СУБД MySQL составной уникальный ключ не работает для данных со значением NULL. Составной (i.e. наложенный на несколько полей одновременно) UNIQUE ключ не работает для записей (строк), содержащих NULL. Read more

Не запускается СУБД MySQL mysql.service: Main process exited, code=exited, status=1/FAILURE

Произошла у меня комичная ситуация. При помощи команды «reboot» перезапустил сервер с ОС Linux Ubuntu и после перезапуска СУБД MySQL перестала запускаться. После выполнения команды «service mysql restart» выводится сообщение: «Job for mysql.service failed because the control process exited with error code. See «systemctl status mysql.service» and «journalctl -xe» for details.» Что делать и как быть? Read more

Что устанавливать для веб-сервера на чистом выделенном Linux сервере

Итак, арендовали виртуальный или физический выделенный сервер (VPS/VDS) с одной только ОС Linux и теперь пора его настроить, чтобы сделать из него веб-сервер для сайтов интернета. Настройка веб-сервера на чистом выделенном сервере дело не совсем хлопотное, но всё же придётся потратить немного времени. Read more

Создание пользователя и наделение его правами в СУБД MySQL

Казалось бы тема проще некуда, но, судя по форумам и специализированным сайтам ответов, у многих людей она вызывает вопросы, надо прояснить. Как же создать пользователя в СУБД MySQL и наделить его правами администратора? Разумеется, речь идёт о SQL, т.к. как создавать пользователей через какой-нибудь менеджер БД типа «PhpMyAdmin» или «MySQL Workbench» все конечно знают. Read more

Борьба с ошибкой 1146 «Table `table_name` doesn’t exist when using LOCK TABLES» в СУБД MySQL

Попытался сделать дамп (бэкап) БД через родную для MySQL утилиту mysqldump и получил ошибку:

Got error: 1146: Table `table_name` doesn't exist when using LOCK TABLES

Вместо table_name имя несуществующей таблицы. Т.е. сразу после введения в консоль/терминал команды:

mysqldump --user=root -p db_name > db_name.sql

получаю такую ошибку. Файл дампа создаётся, но он пустой, утилита mysqldump после выдачи этой ошибки перестаёт работать. Read more

Отмена вставки в триггере MySQL

Простая ситуация когда вешаем тригер на вставку данных в таблицу и в этом триггере определяем надо ли вставлять эти данные или нет. В случае с MySQL всё оказалось не просто.

Проблема в том, что отменить запрос в триггере MySQL тривиальным образом нельзя. В той же MS SQL Server есть триггеры INSTEAD OF и достаточно просто прописать в триггере ROLLBACK, что бы отменить вставку, но в MySQL команды транзакций использовать в триггерах нельзя. Read more

СУБД не отвечает из-за превышения лимита запросов

При работе с СУБД MySQL столкнулся с проблемой которая повергла меня в ступор ибо я долго не мог понять из-за чего это происходит. Симптомы банальны: СУБД тупо не отвечает на посылаемые ей запросы. При этом никаких ошибок так же не отдаёт и исправно принимает запросы. Т.е. запросы уходят к СУБД а в ответ ничего, совсем ничего. Вот уж не знаешь что и думать в такой ситуации. Разумеется перезагрузка сервера баз данных помогает, но ведь это не выход надо искать причину проблем. Read more

The used table type doesn’t support FULLTEXT indexes

Неприятная ошибка, стоит признать. Случается она обычно при переносе базы данных, при поднятии дампа. Говорит о том, что тип используемой таблицы не поддерживает полнотекстовые (FULLTEXT) индексы. Причин том может быть несколько. Об этом и поговорим. Read more

Использование составного ключа в БД

Во многих книжках по проектированию баз данных пишут, что составной уникальный ключ это дело очень редкое и сложное, якобы он бывает нужен в редчайших ситуациях и поэтому вообще знать о нём не обязательно. Read more

Базовые методы оптимизации базы данных

Решил посвятить этой теме целый отдельный пост на своём блоге т.к. это действительно очень важно, особенно когда речь идёт о высоконагруженных проектах. Безусловно переоценить роль оптимизации базы данных очень сложно, ведь от этого зависит многое и в первую очередь производительность вашего продукта работающего с базой данных. Вообще оптимизации баз данных это целая наука, которой можно посвятить целую книгу, в этом деле есть свои тонкости и нюансы. Обычно оптимизацией БД должен заниматься архитектор базы ещё при создании самой модели таблиц и связей. Т.е. об оптимизации думаем сразу при создании базы. В общем я поведаю о базовых методах распределения нагрузки СУБД. Read more

Полнотекстовый поиск с сортировкой по релевантности на основе SQL запроса в СУБД MySQL

Решил написать на эту тему отдельную статью т.к. думаю, что это будет очень интересно для читателей блога. Естественно я не первый кто описывает данный метод, поэтому на правду в последней инстанции не претендую. Вообще когда данный способ поиска с сортировкой по релевантности стал возможен в СУБД MySQL был большой резонанс, многие об этом писали, в частности в US нете. Действительно способ очень интересный, т.к. предоставляет простейший механизм качественного быстрого релевантного полнотекстового поиска по базе данных. Т.е. вы получаете мощнейшую поисковую систему, которая быстро и не ресурсозатратно ищет различные слова и словосочетания (с морфологией) при этом сортирует результаты по релевантности. Сразу скажу, что описанный в статье метод применим к СУБД MySQL, для неё и писался т.к. в работе применяются специфические именно для этой СУБД операторы и индексы, которые не входят в общую спецификацию языка SQL.  Ну да хватит лирических отступлений, давайте переходить к делу.

Read more