Предыстория: Я запускаю cqpweb, интерфейс запросов корпуса, написанный на PHP и подключенный к базе данных mysql, на веб-сервере Apache2 под Ubuntu 18.04 LTS. Сервер Ubuntu был настроен с нуля, и в настоящее время нет никаких ручных настроек для mysql или php.
cqpweb работал успешно, если только не начал выдавать сообщения об ошибках, подобные этому:
A MySQL query did not run successfully!
Original query: LOAD DATA LOCAL INFILE '/data2/cqpweb/cach/tab_dist_fycel9oplk' INTO TABLE `db_dist_g2f3ndxf40` FIELDS ESCAPED BY '' /* from User: knappen |
Function: create_db() | 2019-Apr-25 11:23:01 */
Error # 0:
Это произошло за одну ночь, никаких обновлений или других изменений в системе не произошло. Поэтому я подозреваю, что был достигнут некоторый предел размера базы данных, и мне придется его увеличить.
Вопрос: Какие существуют ограничения по размеру для баз данных mysql и как их увеличить?
Дополнительная информация:
php --version
PHP 7.2.17-0ubuntu0.18.04.1 (cli) (built: Apr 18 2019 14:12:38) ( NTS )
mysql --version
mysql Ver 14.14 Distrib 5.7.25, for Linux (x86_64) using EditLine wrapper
Размер mysql:
root@corpora:/var/lib/mysql# du -h ./
23M ./mysql
676K ./sys
16G ./cqpweb
1.1M ./performance_schema
16G ./
Журнал ошибок: в /var/log/mysql/error.log
нет связанных сообщений .
Выполнение запроса к базе данных вручную из приглашения mysql (под тем же пользователем базы данных, что и cqpweb) успешно (к моему большому удивлению).
РЕДАКТИРОВАТЬ: Неформат свободного дискового пространства - на устройстве осталось достаточно места.
РЕДАКТИРОВАТЬ 2: Я попробовал грубый подход к основной проблеме, сделал резервное копирование данных в базе данных, используя mysqldump
, уничтожив базу данных, переустановив mysql-сервер, восстановив базу данных из дампа; уменьшение размера с 16G до 11G, но первоначальная проблема сохраняется.
Поэтому я подозреваю, что был достигнут некоторый предел размера базы данных, и что мне придется его увеличить.
blockquote>Я сомневаюсь в этом. Если вы достигнете предела, о них сообщают (вероятно,
/var/log/mysql/error.log
и / или/var/log/mysql.log
).Какие существуют ограничения по размеру для баз данных mysql и как их увеличить
blockquote>Эти ограничения НЕ доступны для редактирования:
InnoDB Permissions до 4 миллиардов столов.
MySQL имеет жесткое ограничение в 4096 столбцов на таблицу
Максимальный размер табличного пространства составляет четыре миллиарда страниц (64 ТБ), что также является максимальным размер для стола.
MyISAM позволяет по умолчанию увеличивать размер файлов данных и индексов до 256 ТБ, но этот предел можно изменить до максимально допустимого размера 65 536 ТБ (2567 - 1 байт).
Но вы не рядом с ними.
Другие ограничения могут быть применены путем редактирования
/etc/my.cnf
, но если они есть, вы их добавили.Запрос MySQL не был успешно выполнен!
blockquote>В этом уведомлении ничего не говорится.
Ваша проблема с функцией
create_db
, и MySQL выдает ошибку. Теоретически это может быть ограничением MySQL, но вероятность неправильного запроса намного выше. Возможно, в данных есть (двойная) кавычка или какой-то другой символ, который обрабатывается неправильно. Или существует JOIN не правильно и из-за объема данных MySQL теперь считает, что ему нужно использовать другой INDEX (SELECT с ORDER BY, который имеет много одинаковых значений или имеет значения NULL в поле, имеет тенденцию переключать INDEX a много в моем опыте).Вам, вероятно, нужно выяснить, что на самом деле представляет собой команда SQL, и изучить ее или результаты выполнения.
Без фактического содержания функции и примера вашей базы данных не так уж и много.