DLE MySQL Error. Ошибка MySQL Error на сайте DLE
От автора: приветствую вас, друзья. Из этой статьи вы узнаете, что делать, если столкнетесь с ошибкой на сайте DLE MySQL Error! Попробуем устранить такую ошибку и решить проблему. Приступим?
Итак, в один прекрасный день вы зашли на свой сайт на движке DLE, чтобы порадовать своих читателей новостью-другой… а вместо привычной картинки сайта перед вами красивое, но страшное сообщение — MySQL Error! Приблизительно такое:
Но не спешите кричать «Шеф, все пропало — гипс снимают, клиент уезжает» На самом деле подобная проблема зачастую решается достаточно быстро и безболезненно. Давайте попробуем прочесть текст ошибки. Суть ошибки заключается в том, что некоему пользователю root (у вас может быть другой) запрещен доступ к серверу MySQL.
Чаще всего такая ошибка возникает в момент переезда с одного хостинга на другой. При переезде зачастую на новом сервере у вас будет другой пользователь и пароль. Соответственно, настройки подключения к серверу баз данных (логин и пароль) остались с прежнего сервера. И эти настройки не мешало бы поменять.
Бесплатный курс «Основы создания тем WordPress»
Изучите курс и узнайте, как создавать мультиязычные темы с нестандартной структурой страниц
Скачать курсГде изменить настройки подключения к серверу MySQL? Хранятся они в файле engine\data\dbconfig.php
Это открытый в текстовом редакторе файл dbconfig.php. В этом файле нас интересуют в первую очередь строки 7 и 9, на которых и задается логин и пароль. Пропишите значением константы DBUSER логин, полученный от нового хостера, а для DBPASS — нужный пароль. Сохраняем файл и идем проверять сайт.
Как видим, проблема решилась. К слову, в этом же файле вы можете изменить также имя базы данных, если оно поменялось. За это отвечает константа DBNAME. Также иногда имя сервера (константа DBHOST) может отличаться от localhost. В этом случае укажите корректное.
Также вы можете столкнуться и с другими ошибками MySQL Error. В этом случае нужно разбираться с каждой конкретной ошибкой индивидуально. Но зачастую все они также легко исправляются повторным импортом дампа базы данных на новый сервер, то есть восстановлением базы данных из копии.
На этом у меня сегодня все. Удачи!
Хотите научиться создавать сайты на CMS DLE?
Посмотрите видео по созданию сайта на CMS DLE с нуля!
СмотретьУстраняем типичные ошибки в MySQL
MySQL — система управления базами данных (СУБД) с открытым исходным кодом от компании Oracle. Она была разработана и оптимизирована специально для работы веб-приложений. MySQL является неотъемлемой частью таких веб-сервисов, как Facebook, Twitter, Wikipedia, YouTube и многих других.
Эта статья расскажет, как определять, с чем связаны частые ошибки на сервере MySQL, и устранять их.
Не удаётся подключиться к локальному серверу
Одной из распространённых ошибок подключения клиента к серверу является «ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)».
Эта ошибка означает, что на хосте не запущен сервер MySQL (mysqld
) или вы указали неправильное имя файла сокета Unix или порт TCP/IP при попытке подключения.
Убедитесь, что сервер работает. Проверьте процесс с именем mysqld
на хосте сервера, используя команды ps или grep, как показано ниже.
$ ps xa | grep mysqld | grep -v mysqld
Если эти команды не показывают выходных данных, то сервер БД не работает. Поэтому клиент не может подключиться к нему. Чтобы запустить сервер, выполните команду systemctl.
$ sudo systemctl start mysql #Debian/Ubuntu
$ sudo systemctl start mysqld #RHEL/CentOS/Fedora
Чтобы проверить состояние службы MySQL, используйте следующую команду:
$ sudo systemctl status mysql #Debian/Ubuntu
$ sudo systemctl status mysqld #RHEL/CentOS/Fedora
Если в результате выполнения команды произошла ошибка службы MySQL, вы можете попробовать перезапустить службу и ещё раз проверить её состояние.
$ sudo systemctl restart mysql
$ sudo systemctl status mysql
Если сервер работает (как показано) и вы по-прежнему видите эту ошибку, вам следует проверить, не заблокирован ли порт TCP/IP брандмауэром или любой другой службой блокировки портов.
Для поиска порта, который прослушивается сервером, используйте команду netstat
.
$ sudo netstat -tlpn | grep "mysql"
Не удаётся подключиться к серверу MySQL
Ещё одна похожая и часто встречающаяся ошибка подключения — «(2003) Can’t connect to MySQL server on ‘server’ (10061)». Это означает, что в сетевом соединении было отказано.
Следует проверить, работает ли в системе сервер MySQL (смотрите выше) и на тот ли порт вы подключаетесь (как найти порт, можно посмотреть выше).
Похожие частые ошибки, с которыми вы можете столкнуться при попытке подключиться к серверу MySQL:
ERROR 2003: Cannot connect to MySQL server on 'host_name' (111)
ERROR 2002: Cannot connect to local MySQL server through socket '/tmp/mysql.sock' (111)
Ошибки запрета доступа в MySQL
В MySQL учётная запись (УЗ) определяется именем пользователя и клиентским хостом, с которого пользователь может подключиться. УЗ может также иметь данные для аутентификации (например, пароль).
Причин для запрета доступа может быть много. Одна из них связана с учётными записями MySQL, которые сервер разрешает использовать клиентским программам при подключении. Это означает, что имя пользователя, указанное в соединении, может не иметь прав доступа к базе данных.
В MySQL есть возможность создавать учётные записи, позволяющие пользователям клиентских программ подключаться к серверу и получать доступ к данным. Поэтому при ошибке доступа проверьте разрешение УЗ на подключение к серверу через клиентскую программу.
Увидеть разрешённые привилегии учётной записи можно, выполнив в консоли команду SHOW GRANTS
Входим в консоль (пример для Unix, для Windows консоль можно найти в стартовом меню):
В консоли вводим команду:
mysql -u root -p
Дать привилегии конкретному пользователю в БД по IP-адресу можно, используя следующие команды:
> SHOW GRANTS FOR 'tecmint'@'localhost';
Ошибки запрещённого доступа могут также возникнуть из-за проблем с подключением к MySQL (см. выше).
Потеря соединения с сервером MySQL
С этой ошибкой можно столкнуться по одной из следующих причин:
- плохое сетевое соединение;
- истекло время ожидания соединения;
- размер BLOB больше, чем
max_allowed_packet
.
В первом случае убедитесь, что у вас стабильное сетевое подключение (особенно, если подключаетесь удалённо).
Если проблема с тайм-аутом соединения (особенно при первоначальном соединении MySQL с сервером), увеличьте значение параметра connect_timeout
.
В случае с размером BLOB нужно установить более высокое значение для max_allowed_packet
в файле конфигурации /etc/my.cnf
в разделах [mysqld]
или [client]
как показано ниже.
> grant all privileges on *.test_db to 'tecmint'@'192.168.0.100';
> flush privileges;
Если файл конфигурации недоступен, это значение можно установить с помощью следующей команды.
[mysqld]
connect_timeout=100
max_allowed_packet=500M
Слишком много подключений
Эта ошибка означает, что все доступные соединения используются клиентскими программами. Количество соединений (по умолчанию 151) контролируется системной переменной max_connections
. Устранить проблему можно, увеличив значение переменной в файле конфигурации /etc/my.cnf
.
> SET GLOBAL connect_timeout=100;
> SET GLOBAL max_allowed_packet=524288000;
Недостаточно памяти
Если такая ошибка возникла, это может означать, что в MySQL недостаточно памяти для хранения всего результата запроса.
Сначала нужно убедиться, что запрос правильный. Если это так, то нужно выполнить одно из следующих действий:
- если клиент MySQL используется напрямую, запустите его с ключом
--quick switch
, чтобы отключить кешированные результаты; - если вы используете драйвер MyODBC, пользовательский интерфейс (UI) имеет расширенную вкладку с опциями. Отметьте галочкой «Do not cache result» (не кешировать результат).
Также может помочь MySQL Tuner. Это полезный скрипт, который подключается к работающему серверу MySQL и даёт рекомендации по настройке для более высокой производительности.
[mysqld]
max_connections=1000
MySQL продолжает «падать»
Если такая проблема возникает, необходимо выяснить, заключается она в сервере или в клиенте. Обратите внимание, что многие сбои сервера вызваны повреждёнными файлами данных или индексными файлами.
Вы можете проверить состояние сервера, чтобы определить, как долго он работал.
$ sudo systemctl status mysql #Debian/Ubuntu
$ sudo systemctl status mysqld #RHEL/CentOS/Fedora
Чтобы узнать время безотказной работы сервера, запустите команду mysqladmin
.
$ sudo apt-get install mysqltuner #Debian/Ubuntu $ sudo yum install mysqltuner #RHEL/CentOS/Fedora $ mysqltuner
Кроме того, можно остановить сервер, сделать отладку MySQL и снова запустить службу. Для отображения статистики процессов MySQL во время выполнения других процессов откройте окно командной строки и введите следующее:
$ sudo mysqladmin version -p
Или
$ sudo mysqladmin -i 5 status
Заключение
Самое важное при диагностике — понять, что именно вызвало ошибку. Следующие шаги помогут вам в этом:
- Первый и самый важный шаг — просмотреть журналы MySQL, которые хранятся в каталоге
/var/log/mysql/
. Вы можете использовать утилиты командной строки вродеtail
для чтения файлов журнала. - Если служба MySQL не запускается, проверьте её состояние с помощью
systemctl
. Или используйте командуjournalctl
(с флагом-xe
) в systemd. - Вы также можете проверить файл системного журнала (например,
/var/log/messages
) на предмет обнаружения ошибок. - Попробуйте использовать такие инструменты, как Mytop, glances, top, ps или htop, чтобы проверить, какая программа использует весь ресурс процессора или блокирует машину. Они также помогут определить нехватку памяти, дискового пространства, файловых дескрипторов или какого-либо другого важного ресурса.
- Если проблема в каком-либо процессе, можно попытаться его принудительно остановить, а затем запустить (при необходимости).
- Если вы уверены, что проблемы именно на стороне сервера, можете выполнить команды:
mysqladmin -u root ping
илиmysqladmin -u root processlist
, чтобы получить от него ответ. - Если при подключении проблема не связана с сервером, проверьте, нормально ли работает клиент. Попробуйте получить какие-либо его выходные данные для устранения неполадок.
Перевод статьи «Useful Tips to Troubleshoot Common Errors in MySQL»
Решение проблем с MySQL | firstvds.ru
Статья давно не обновлялась, поэтому информация могла устареть.
На корректно работающем VDS создание базы займет не больше 5 минут. В левом меню ISPmanager находим раздел «Базы данных» — Создать — заполнить необходимые поля — пароли рекомендуем создавать сложные.
Теперь немного о тех местах, где могут возникнуть сложности.
Раздела «Базы данных» нет в меню
Есть 2 возможных варианта и пути решения проблемы:
1)На сервере не запущен сервер баз данных MySQL:
- Проверить, активен ли сервис, вы можете в меню «Сервисы» панели ISPmanager. Попробуйте запустить или перезапустить его с помощью кнопок в панели.
- Если не помогло, перезапустите из консоли командой /etc/init.d/mysql restart для Ubuntu/Debian/Centos 6 или командой systemctl restart mariadb для Centos 7.
2) Проблемы с подключением к базе данных: Откройте пункт меню «Серверы баз данных», двойным кликом откройте свойства и нажмите «OK», ничего не меняя. Это принудительно обновит информацию о MySQL в панели управления. После этого обновите страницу — пункт «Базы данных» должен появиться.
Случается так, что пароль root от MySQL-сервера утерян, и надо установить новый. Делается следующим образом:
Останавливаем MySQL-сервер:
В Centos 6/Debian/Ubuntu:
# service mysql stop
В Centos 7:
# systemctl stop mariadb
или
# systemctl stop mysqld
Запускаем его без проверки таблиц прав:
# mysqld_safe --skip-grant-tables &
Заходим root’ом без пароля:
# mysql -uroot
Меняем пароль:
# use mysql;
MySQL < 5.7
# UPDATE user SET Password=PASSWORD("new_password") WHERE User='root';
MySQL => 5.7
# UPDATE user SET authentication_string=PASSWORD("new_password") WHERE User='root';
Продолжаем для всех версий
# FLUSH PRIVILEGES;
В Centos 6/Debian/Ubuntu:
# service mysqld restart
В Centos 7:
# systemctl restart mariadb
или
# systemctl restart mysqld
Авторизуемся как root с паролем new_password
# mysql -uroot -pnew_password
MySQL — свободная реляционная система управления базами данных. Поиск проблем с сервисом лучше всего начинать с изучения логов. Для этого необходимо подключиться на сервер по ssh Их расположение разнится в зависимости от используемой файловой системы. В конфигурационном файле my.cnf нужно искать строки log и log-error, чтобы определить, где находятся логи. Также можно воспользоваться mysql запросом:
show variables like '%log%';
Если логирование не включено, сделать это можно следующим образом: Зайти в файл:
/etc/my.cnf #Centos /etc/mysql/my.cnf #Debian
И в секцию [mysqld] добавить строку:
log-error=/var/log/mysql-errors.log
Выйти из файла, выполнить команды:
touch /var/log/mysql-errors.log chown mysql:mysql /var/log/mysql* chmod 640 /var/log/mysql*
Следующая команда включит просмотр созданного лога в режиме реального времени(tail –f) и оставить его в фоне(&) что бы можно было параллельно запускать другие команды:
tail –f /var/log/mysql-errors.log &
Перечень возможных проблем
Table ‘./site/content’ is marked as crashed and should be repaired
Такое сообщение может появиться в логах или на сайте. Оно означает, что таблица одной из БД «побилась» и требуется ее восстановление. Необходимо подключится на сервер по SSH, выполнить команду, которая проверит все базы данных на предмет ошибок
mysqlcheck --repair --analyze --optimize --all-databases -u<USER> –p<PASSWORD>
Если эта команда выдаёт ошибку, вставьте ключи раздельно
mysqlcheck --repair --all-databases -u<USER> –p<PASSWORD> mysqlcheck --analyze --all-databases -u<USER> –p<PASSWORD> mysqlcheck --optimize --all-databases -u<USER> –p<PASSWORD>
где,
- <USER> — имя пользователя базы данных, либо «root».
- <PASSWORD> — заменить на пароль root от MySQL (его можно посмотреть в ISPmanager -> Настройки сервера -> Серверы баз данных -> двойной клик на MySQL)
Либо можно выполнить исправление конкретной базы данных
mysqlcheck --repair --analyze --optimize <DB> -u<USER> -p<PASSWORD>
где,
- <USER> — имя пользователя базы данных, либо «root».
- <PASSWORD> — заменить на пароль root от MySQL (его можно посмотреть в ISPmanager -> Настройки сервера -> Серверы баз данных -> двойной клик на MySQL)
- <BD> — база данных, требуемая починки
mysql_connect() [function.mysql-connect]: Access denied for user ‘user_xxx’@’localhost’ (using password: YES)
Чаще всего связана с тем, что в настройках сайта указаны не верные данные(логин и/или пароль) для подключения к базе. Вариант решения: посмотреть в админ-панели сайта пользователь, пароль и название базы для подключения к базе. Зайти в ISPmanager -> настройки сервера -> кликнуть на базу, кликнуть на пользователя и в графу «Пароль» поставить пароль из админ-панели.
На сайте ошибка: Не удалось подключиться к базе данных
В зависимости от используемой CMS эта ошибка может по-разному выглядеть:
Возникла ошибка при подключении сервера баз данных MySQL Can't connect to local MySQL server Error connect to mysql Unable to connect to the database:Could not connect to ...
Подключится на сервер по SSH, выполнить:
/etc/init.d/mysqld restart #перезапуск MySQL для Centos 6, Debian systemctl restart mariadb #перезапуск MySQL для Centos 7 ps axuw | grep mysql #Эта команда должна вывести список процессов MySQL. #Если ничего не вывела – значит MySQL не запустился.
Убедится что в ISPmanager, в разделе «Службы» лампочка mysqld горит.
В панели ISPmanager 5 нет пункта Базы данных
Это значит у вас в ISPmanager — Серверы баз данных не создано ни одного сервера баз данных. Создайте
MySQL не запускается ни в сервисах, ни через консоль.
При запуске через консоль ошибки могут быть вида:
cant connect to local mysql server throught socket /var/run/mysqld/mysql.d.sock /etc/init.d/mysql start Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed! /usr/local/etc/rc.d/mysql-server restart mysql not running? (check /var/db/mysql/peroksid.ispvds.com.pid). Starting mysql.
Проверить свободное место на диске.
df –h #общая информация du –hs /* #сколько занимает конкретные папки
Если не осталось места, удалить не нужные файлы.
Частая ситуация, когда логи сайтов разрастаются и места на диске свободного не остается, MySQL не может нормально работать(справедливо и для всех остальных сервисов – apache, exim и т.д.)
Снова пробуем перезапустить MySQL:
/etc/init.d/mysqld restart #перезапуск MySQL для Centos 6, Debian systemctl restart mariadb #перезапуск MySQL для Centos 7
Если проблема не со свободным местом, в логах должны появиться записи, похожие на эту:
130929 06:16:05 mysqld_safe Starting mysqld daemon with databases from /var/db/mysql 130929 6:16:05 [Warning] '--skip-locking' is deprecated and will be removed in a future release. Please use '--skip-external-locking' instead. 130929 6:16:05 [Warning] option 'max_allowed_packet': unsigned value 5824839680 adjusted to 1073741824 Unknown suffix '-' used for variable 'sort_buffer_size' (value '--read_buffer_size=256K') 130929 6:16:05 [Warning] option 'sort_buffer_size': unsigned value 0 adjusted to 32776 130929 6:16:05 [ERROR] /usr/local/libexec/mysqld: Error while setting value '--read_buffer_size=256K' to 'sort_buffer_size' 130929 6:16:05 [ERROR] Aborting
Смотрим записи с меткой [ERROR]. В логе выше, ошибка «Error while setting value ‘—read_buffer_size=256K’ to ‘sort_buffer_size’» означает, что в конфиге my.cnf не верно прописана директива ‘sort_buffer_size. Этот случай приведен только для примера. В каждом конкретном случае – лог будет различаться. Ошибки могут быть самые разные. Дальнейшие действия зависят от конкретной ошибки и требуют детального разбирательства.
Решение проблем с кодировками MySQL
Чтобы решить проблему — достаточно понять логику работы. MySQL, начиная с версии 4.1, знает что такое кодировки и как с ними работать. Если до 4.0 он работал с байтами, то теперь он работает с символами.
MySQL написали шведы, поэтому кодировкой по умолчанию (сразу после установки) является latin1, а «сравнение» (последовательность букв, алфавит; влияет на сортировки) — latin1_swedish.
Итак, где кодировки указываются:
1. Кодировка конкретной базы/таблицы/столбца. Это кодировка, в которой MySQL будет хранить данные. Например, если у вас данные в cp1251, то будет большой ошибкой указывать для хранения кодировку latin1. В ней нет соответствий для русских символов, все они будут заменены на вопросы. Кодировка хранения можно задать, например, так:
create database `имя базы` default charset cp1251;
Если кодировка не указана — будет использовано значение параметра default-character-set из файла /etc/my.cnf (либо latin1, если параметра нет). Кстати, именно этот параметр редактирует ISPmanager в свойствах сервера баз данных.
2. Кодировка соединения. Это кодировка, в которой клиент (скрипт пользователя, форум, mysql-клиент и т.д.) общается с MySQL. Когда клиент подсоединяется к серверу, тот ему сообщает значение параметра default-character-set. Таким образом, они договариваются о том, в какой кодировке они будут общаться. Кодировку общения можно изменить запросом (его лучше выполнять сразу после соединения с сервером):
set names cp1251
Кстати, множество современных правильных скриптов именно это и делают.
Одна сложность: есть ряд кривых клиентов, которые всего этого не понимают и общаются в какой-то своей кодировке. Персонально для них можно написать в /etc/my.cnf, секцию [mysqld]:
[mysqld] set init_connect="set names utf8"
Что это означает? Сразу после подсоединения любого клиента, MySQL выполнит запрос «set names utf8», как будто смену кодировки общения запросил сам клиент.
Это всё, что нужно знать для решения любой проблемы с кодировками в MySQL. Осталось несколько уточнений (самое интересное 🙂
phpMyAdmin, mysqldump — обычные клиенты, на них действуют те же самые правила. Одно «но»: на все PHP-скрипты (включая phpMyAdmin) действует default-character-set из секции [client] в my.cnf. Для mysqldump есть отдельная секция [mysqldump]. ISPmanager прописывает default-character-set во все секции.
Дамп базы — это обычный набор MySQL-команд. Если вы в самое его начало напишете «set names cp1251;», то эта команда тоже выполнится и MySQL будет считать, что дальше все данные в дампе идут в кодировке cp1251.
Кодировки в MySQL-командах пишутся без кавычек и без «-» (дефисов). Популярные в России кодировки: utf8, cp866 (DOS), cp1251 (windows-1251), koi8r.
И, наконец, пара советов:
- Если вы в этом новичок, постарайтесь свести всё к одной кодировке. Пусть у вас дамп и «default-character-set» (напомню, влияет на кодировку хранилища при создании таблиц и на кодировку общения с клиентом) будет в одной кодировке. Это избавит от путаницы и решит 90% проблем.
- Если есть возможность — используйте консольную утилиту mysqldump. phpMyAdmin — это дополнительная прослойка, которая лишь добавляет свою путаницу и свои баги.
Чтобы русифицировать базу данных MySQL, не вдаваясь в подробности почему и как, проделайте следующие процедуры:
1. В файле /etc/my.cnf добавьте следующие строчки:
1.1. Под разделом [client]
default-character-set=cp1251
1.2. Под разделом [mysqld]
character-set-server=cp1251 collation-server=cp1251_general_ci init-connect = "set names cp1251"
После этого перезапустите базу MySQL или весь ваш виртуальный сервер (из ISPmanager или консоль).
MySQL ошибка: «1030-получена ошибка -1 от механизма хранения»
Я получил следующее сообщение во время работы с уже существующей существующей базой данных и добавления некоторых новых таблиц Ошибка Msg
#1030 - Got error -1 from storage engine
mysql Поделиться Источник Amr Ezz 27 октября 2014 в 16:01
3 ответа
2
Обычно это означает, что у вас закончилось место на диске. Проверьте с помощью df -h
и удалите все большие файлы журналов или другие файлы, занимающие много места.
В противном случае проверьте использование памяти.
Поделиться danmullen 27 октября 2014 в 16:04
2
Эта ошибка в основном связана с низким объемом памяти, что означает, что у вас недостаточно памяти для выделения вашей таблицы или базы данных.
Пожалуйста, посмотрите здесь .It было бы полезно.
Поделиться Avinash Babu 27 октября 2014 в 16:17
1
Вы получите эту ошибку, если /etc/my.cnf у вас включен innodb_force_recovery . Закомментируйте эту опцию, перезагрузите сервер и повторите попытку импорта данных.
Поделиться Paul Kenjora 03 ноября 2017 в 04:11
Похожие вопросы:
1030 получил ошибку 28 от механизма хранения
Я работаю над проектом, где мне нужно создать базу данных с 300 таблицами для каждого пользователя, который хочет увидеть демонстрационное приложение. он работал нормально, но сегодня, когда я…
Codeigniter ошибка базы данных
Мой сайт некоторое время работал нормально, но сегодня он показывает эту ошибку базы данных, и я понятия не имею, что это значит Произошла Ошибка Базы Данных Номер Ошибки: 1030 Получил ошибку 28 от…
Ошибка 1030 (HY000): получена ошибка -1 от механизма хранения данных
Когда я пытаюсь вставить данные в базу данных MySQL, я получаю эту ошибку: Ошибка Msg #1030 — Got error -1 from storage engine В чем может быть проблема?
Ошибка: не удалось прочитать значение автоматического приращения из механизма хранения
Этот вопрос может быть дубликатом этих вопросов: Не удалось прочитать значение автоматического приращения из механизма хранения в MySQL mysql не удалось прочитать значение автоматического приращения…
Magento сайт не работает из-за ошибки mysql общая ошибка: 1030 получил ошибку -1 от механизма хранения
Я даже удалил все записи из таблицы log_visitor, все еще получая ту же проблему. Ниже приводится стек, который я получаю. SQLSTATE[HY000]: общая ошибка: 1030 получил ошибку -1 от механизма хранения…
SQLSTATE[HY000]: общая ошибка: 1030 получил ошибку 28 от механизма хранения на сайте magento
Мы столкнулись со следующей проблемой в GMT 5 вечера за последние 2 дня. SQLSTATE[HY000]: общая ошибка: 1030 получил ошибку 28 от механизма хранения. У нас есть 100 Гб дискового пространства с…
mysqldump: не удалось выполнить ‘show fields from»: получена ошибка 28 от storage engine (1030)
Я перенес свою базу данных mysql с одного раздела жесткого диска на другой после того, как исходный раздел, по-видимому, был заполнен. После этого я изменил файл my.cnf так, чтобы каталог данных…
Ошибка 1030 (HY000) в строке 25: получена ошибка 168 от механизма хранения данных
Я пытаюсь импортировать sql в свою базу данных. Я использую Ubuntu OS. Здесь есть ошибка: david@david-VirtualBox:~$ mysql -u root -p test_project < db.sql Enter password: ERROR 1030 (HY000) at…
MySQL 5.7 ошибка 1030
Я хотел бы создать таблицу с движком MyISAM на MySQL 5.7 Но я получаю эту ошибку: Номер ошибки 1030: получена Ошибка 1 от механизма хранения данных это мой вопрос: Create table `job_type( `type_id`…
#1030 — получена ошибка 176 «Read page with wrong checksum» от механизма хранения Aria
Создал новую базу данных, но не может создать новую учетную запись пользователя из-за этой ошибки кто-нибудь знает, как это исправить? не могу найти никакого решения, чтобы исправить это ;-; 1030 -…
mysql-error-1052 — Русский — it-swarm.com.ru
mysql-error-1052 — Русский — it-swarm.com.ruit-swarm.com.ru
MySQL — выбор данных из нескольких таблиц с одинаковой структурой, но разными данными
PHP & MYSQL: как разрешить неоднозначные имена столбцов в операции JOIN?
MySQL ‘user_id’ в предложении where является неоднозначной проблемой
Колонка в предложении where неоднозначна. Что это значит?
1052: столбец id в списке полей неоднозначен
Ошибка импорта дампа SQL в MySQL: неизвестная база данных/не удается создать базу данных
Mysql 1050 Ошибка «Таблица уже существует», хотя на самом деле это не так
ошибка sql errno: 121
Проблема при добавлении внешнего ключа с помощью Alter Table к существующей базе данных MYSQL — не могу добавить его! Помогите!
Получение ошибки MYSQL: «Код ошибки: 2006 — сервер MySQL исчез»
Код ошибки: 1062. Дублирующая запись «1» для ключа «ПЕРВИЧНЫЙ»
PHP: пользовательский обработчик ошибок — обработка разбора и фатальных ошибок
PHP Примечание: неопределенное смещение: 1 с массивом при чтении данных
Как исправить ошибку неопределенной переменной в PHP?
mysql_error () не отображает ошибку
Как я могу исправить ошибку MySQL # 1064?
В чем ошибка «Каждая производная таблица должна иметь свой собственный псевдоним» в MySQL?
Подключение к удаленному серверу MySQL с помощью PHP
Ошибка внешнего ключа MySQL 1005 errno 150
Добавление внешнего ключа к существующей таблице дает ошибку 1050, таблица уже существует
код ошибки 1292 неверное значение даты mysql
Код ошибки: 1055 несовместим с sql_mode = only_full_group_by
Как предоставить все привилегии пользователю root в MySQL 8.0
Обработка ошибок в Bash
Ошибка входа в C #
PHP ожидает T_PAAMAYIM_NEKUDOTAYIM?
PHP белый экран смерти
Как я могу заставить php вернуть 500 после фатального исключения?
php error_log не работает
Почему обработка исключений плохая?
Как заставить пользователей читать сообщения об ошибках?
PHP не отображаются ошибки — Внутренняя ошибка сервера (500)
Как бы вы использовали ожидаемый <T> Александреску с пустыми функциями?
Простой способ ведения журнала ошибок?
REST Обработка кода ошибки API 500
Что означает «индекс выходит за пределы для оси с размером 0»?
Ошибка: «Тип программы уже существует: androidx.versionedparcelable.CustomVersionedParcelable»
Неизвестный столбец в пункте «Где»
Что означает ошибка mysql 1025 (HY000): ошибка при переименовании «./foo» (errno: 150)?
MySQL: просмотр с подзапросом в ограничении предложения FROM
Наличие в MySQL 4.0 столбцов меток времени «Создано» и «Последнее обновление»
MySQL — ОШИБКА 1045 — Доступ запрещен
Ошибка MySql 150 — внешние ключи
MySQL, удаление некоторых внешних ключей
Проблемы с типами содержимого при загрузке устройства в Django
Использование псевдонима столбца в предложении WHERE запроса MySQL приводит к ошибке
Неверное смешение параметров сортировки MySQL Error
MySQL: создание таблицы с ошибкой FK (errno 150)
Неверное смешение параметров сортировки в MySql
Mysql ошибка 1452 — Не удается добавить или обновить дочернюю версию: ограничение внешнего ключа не удается
Неизвестный столбец в ошибке ‘списка полей’ на запросе Обновления MySQL
Невозможно войти с созданным пользователем в MySQL
Не удается подключиться к серверу MySQL, ошибка 111
MySQL Создание таблиц с использованием внешних ключей с ошибкой: 150
Как запустить сервер MySQL на Windows XP
Хосту «xxx.xx.xxx.xxx» не разрешено подключаться к этому серверу MySQL
MySQL «СОЗДАЙТЕ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ» -> Ошибка 1050
ОШИБКА 2003 (HY000): не удается подключиться к серверу MySQL на 127.0.0.1 (111)
Как я могу восстановить полные права пользователя MySQL?
Mysql. Не могу создать таблицу errno 150
# 1071 — Указанный ключ был слишком длинным; максимальная длина ключа 767 байт
Ошибка MySQL: спецификация ключа без длины ключа
Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполнено
# 2006 MySQL Server исчезла ошибка в Wamp
SQL DELETE с JOIN другой таблицей для условия WHERE
MySQL: # 126 — неверный ключевой файл для таблицы
Переименование столбцов с внешним ключом в MySQL
MySQL неверный ключевой файл для таблицы tmp при многократном объединении
Удалить первичный ключ в MySQL
доступ запрещен для загрузки данных в MySQL
MySQL: неверное использование групповой функции
Django: mysql: 1045, «Доступ запрещен для пользователя
Mysql ОШИБКА 1005 (HY000): Невозможно создать таблицу ‘tmp’ (номер ошибки: 13)
Не удается получить доступ к PHPmyAdmin после установки пароля root и использования Instant Rails
Ошибка MySQl # 1064
MySQL «ОШИБКА 1005 (HY000): невозможно создать таблицу ‘foo. # Sql-12c_4’ (errno: 150)»
Доступ запрещен для пользователя ‘root @ localhost’ (используется пароль: НЕТ)
Как удалить пароль root для MySQL
phpMyAdmin error # 1062 — Дублирующая запись ‘1’ для ключа 1
Как удалить из нескольких таблиц в MySQL?
Как ограничить результаты левого соединения
Mysql :: Ошибка: указанный ключ был слишком длинным; максимальная длина ключа 1000 байтов
Объявление и использование переменных MySQL varchar
Ошибка переименования столбца в MySQL
Ошибка 1046 Нет базы данных Выбран, как решить?
Как бороться с апострофом при записи в базу данных Mysql
MySQL: не могу создать таблицу (номер ошибки: 150)
MySQL неизвестный столбец в предложении ON
# 1025 — Ошибка при переименовании ‘./database/#sql-2e0f_1254ba7’ в ‘./database/table’ (номер ошибки: 150)
1067 ошибка при попытке запустить MySQL
MySQL Table не существует ошибка, но она существует
ОБНОВЛЕНИЕ SQL с подзапросом, который ссылается на ту же таблицу в MySQL
brew установить MySQL на Mac OS
Вы не можете указать целевую таблицу для обновления в предложении FROM
Почему в предложении DEFAULT может быть только один столбец TIMESTAMP с CURRENT_TIMESTAMP?
Командная строка MySQL не открывается?
SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1064 В синтаксисе SQL есть ошибка — PHP — PDO
произошла системная ошибка 1067
Ошибка: команда выбора запрещена для пользователя ‘<идентификатор пользователя>’ @ ‘<IP-адрес>’ для таблицы ‘<имя-таблица>’
# 1060 — Повторяющееся имя столбца ‘id’
Content dated before 2011-04-08 (UTC) is licensed under CC BY-SA 2.5. Content dated from 2011-04-08 up to but not including 2018-05-02 (UTC) is licensed under CC BY-SA 3.0. Content dated on or after 2018-05-02 (UTC) is licensed under CC BY-SA 4.0. | PrivacyОшибка MySQL error: Too many connections на хостинге | Хост.SU
Иногда Вы можете сталкиваться с такой проблемой, что при открытии сайта возникает ошибка: «MySQL error: Too many connections», давайте поговорим о значении этой ошибки, причинах и методах ее устранения.
Что значит ошибка «MySQL error: Too many connections»
Итак, если при входе на сайт Вы видите надпись «MySQL error: Too many connections», то в большинстве случаев это говорит о том, что сайт превысил лимит на количество одновременных соединений к серверу баз данных MySQL. В остальных случаях это может говорить о превышении второго лимита, т.е. лимита на общее количество одновременных подключений к MySQL.
Для справки. Первый лимит регулируется параметром max_user_connections, а второй лимит — max_connections.
Если речь идет о ВЕБ хостинге с mysql, то возникновение ошибки по причине превышения лимита max_connections практически не возможно, поэтому такая ошибка будет возникать только на одном сайте, даже если у Вас несколько сайтов на одном аккаунте, за исключением ситуаций, когда для всех баз данных указан один пользователь.
Если мы говорим о VDS хостинге или выделенном сервере, то здесь все зависит от настроек сервера MySQL. В том случае, если у Вас max_user_connections не значительно меньше max_connections, равно или превышает этот параметр, то сбой в работе БД одного сайта повлияет на работу остальных сайтов.
Причины ошибки «MySQL error: Too many connections»
Мы будем рассматривать причины возникновения данной ошибки, только опираясь верную настройку сервера MySQL (о правильной настройке поговорим чуть ниже).
Самой распространенной причиной возникновения ошибки «Too many connections» является ошибка в коде сайта. Зачастую программисты пишут не оптимизированный код работы с БД, это может быть, как отсутствие закрытий подключений к БД, так и тяжелые запросы, которые выполняются слишком медленно при высокой посещаемости сайта. В результате чего лимит max_user_connections переполняется, и сервер выдает ошибку.
Второй причиной возникновения ошибки является DDOS-атака на сайт. В результате одновременного вызова большого количества страниц сервер БД не успевает обработать все запросы и выдает ошибку: «MySQL error: Too many connections».
Третьей причиной ошибки, которая на ВЕБ хостинге почти не достижима (а для сервера и хостинга VDS встречается чаще), является общая нагрузка на сервер БД MySQL.
Методы устранения «MySQL error: Too many connections»
Основным методом устранения ошибки «MySQL error: Too many connections», конечно же, является оптимизация скриптов сайта, так как именно эта причина вызывает чаще всего данную ошибку. Также для каждой БД мы рекомендуем создавать отдельного пользователя, это позволит изолировать сайты друг от друга.
Если же речь идет об атаке на сайт, то есть два варианта решения проблемы: временное отключение сайта, либо использование услуги защиты от DDOS-атак.
Следующий пункт — общая нагрузка на сервер БД. Если используется услуга ВЕБ хостинга, то решить эту проблему самостоятельно Вы не сможете. В этом случае нужно обратиться в техническую поддержку хостинг-провайдера.
Говоря о хостинге VDS или выделенном сервере, здесь, прежде всего, нужно проверить, что установленный лимит max_user_connections значительно меньше значения max_connections. Также нужно обратить внимание на общую нагрузку на VDS (сервер), если VDS (сервер) не справляется с нагрузкой, то количество одновременных подключений будет расти, что в итоге приведет к превышению лимитов. Стоит обратить внимание и на настройку сервисов VDS (сервера), если какой-то сервис можно оптимизировать, выделив больше ресурсов для MySQL, то это следует незамедлительно выполнить. Если наличие свободных ресурсов позволяет увеличить значение max_user_connections и max_connections, то это также нужно сделать.
В случае отсутствия навыков решения проблемы «MySQL error: Too many connections» Вы всегда можете обратиться в нашу компанию и заказать администрирование сайта или сервера, что поможет исправить данную проблему в минимальные сроки.
Ошибки баз данных MySQL и их исправление
- Что такое MySQL
- Как создать базу данных?
- Настройка и управление
- Логин\пароль: где узнать и как восстановить?
- Экспорт MySQL (Dump базы данных)
- Импорт MySQL
- Ограничения БД
- Ошибки
Предлагаем вашему вниманию список наиболее популярных ошибок, которые возникают в работе баз данных MySQL.
Сложности с импортом БД, размер которой больше 8 мб
Обычно такая проблема вызвана импортом\экспортом базы данных большого размера, с помощью интерфейса phpMyadmin. Чтобы ее избежать, нужно импортировать\экспортировать БД с помощью SSH-команды (предварительно залив файл БД на сервер). О том, как это сделать читайте здесь. Если не помогает этот способ, то придется каждый раз дергать техническую поддержку, чтобы они сами проводили импорт\экспорт.
Как исправить ошибки: «Database Error: Unable to connect to the database», «Невозможно подключиться к базе», «DB Error»
Как правило эти ошибки сопровождаются полной неработоспособностью сайта. А возникают они из-за того, что в конфигурационных файлах (название файла зависит от CMS, но обычно — configuration.php, wp-config.php, config.php и т.д.) неправильно указаны реквизиты базы данных. Узнать их можно в панели-управления хостингом, а также в первом письме, которое приходит от хостинг-провайдера и обычно содержит настройки.
Особое внимание уделите таким реквизитам:
- сервер баз данных (обычно localhost)
- имя БД (например u12345_database)
- имя пользователя БД (например u12345_user)
- пароль.
Как исправить ошибку при работе Order By?
Order By используют для сортировки результирующих таблиц данных. Иногда сортировка не срабатывает, если речь идет о файле большого объема. Обычна проблема заключается в переменной «max sort length», которая используется при настройке MySQL-сервера. Эта переменная задает максимальный размер строки, по которой происходит сортировка. Как правило хостеры устанавливают значение — 32 байта, и самостоятельно изменить эту переменную практически невозможно (кроме услуг выделенного сервера, аренды сервера и т.д.). Поэтому пользователям обычного хостинга, с данной проблемой рекомендуем сразу обращаться в техническую поддержку.
Как исправить ошибку Got Error 127 from storage engine?
Обычно эта ошибка возникает из-за того, что дисковая квота превышена. Как правило, хостеры хранят базу данных на том же сервере, что и файлы сайта. Поэтому если полностью забить дисковое пространство (на сервере хостинга) файлами сайта, то БД некуда будет сохранять свои данные. Так что решением этой проблемы будет либо удаление лишних файлов с сервера, либо покупка более дорогого тарифного плана (с большей дисковой квотой).
Общие ошибки при использовании MySQL
В этом разделе перечислены некоторые ошибки, которые часто возникают у пользователей. Ты найдешь описания ошибок и способы их решения здесь.
Сервер MySQL пропал ОшибкаВ этом разделе также рассматривается связанное с потерянное соединение с сервером во время запроса ошибка.
Наиболее частая причина исчезновения сервера MySQL Ошибка в том, что время ожидания сервера истекло, и соединение было закрыто.По умолчанию сервер закрывает соединение через 8 часов, если ничего не произошло. Ты можно изменить ограничение по времени, установив переменную wait_timeout , когда запускаете mysqld .
Еще одна распространенная причина получения сервера MySQL ушла Ошибка потому что вы выпустили «закрытие» на вашем MySQL-соединении а затем попытался выполнить запрос по закрытому соединению.
Если у вас есть скрипт, вам просто нужно снова отправить запрос для клиента для автоматического переподключения.
В этом случае обычно можно получить следующие коды ошибок (какой вы получите, зависит от ОС):
Код ошибки | Описание |
---|---|
CR_SERVER_GONE_ERROR | Клиент не смог задать вопрос сервер. |
CR_SERVER_LOST | Клиент не получил ошибку при записи к серверу, но он не получил полного ответа (или какого-либо ответа) на вопрос. |
Вы также получите эту ошибку, если кто-то убьет запущенный поток с помощью kill # threadid # .
Вы можете проверить, что MySQL не умер, выполнив mysqladmin версия и проверка времени безотказной работы. Если проблема в том, что mysqld разбился, вы должны сосредоточиться на поиске причины сбоя. В этом случае вам следует начать с проверки того, выдает ли запрос снова. снова убьет MySQL. См. Раздел A.4.1.
Вы также можете получить эти ошибки, если отправите запрос на сервер, который неправильный или слишком большой.Если mysqld получает слишком большой пакет или вышел из строя, предполагается, что с клиентом что-то пошло не так, и закрывает соединение. Если вам нужны большие запросы (например, если вы работая с большими BLOB столбцами), вы можете увеличить лимит запросов на запуск mysqld с опцией -O max_allowed_packet = # (по умолчанию 1M). Дополнительная память выделяется по запросу, поэтому mysqld будет используйте больше памяти только тогда, когда вы выдаете большой запрос или когда mysqld должен вернуть большую строку результата!
Если вы хотите сообщить об этой проблеме, убедитесь, что вы включаете следующую информацию:
Включите информацию, если MySQL умер или нет.(Вы можете найти это в файл hostname.err . См. Раздел A.4.1.
Если конкретный запрос убивает mysqld и задействованные таблицы, где проверил с ПРОВЕРИТЬ ТАБЛИЦУ перед тем, как сделать запрос, можете ли вы сделать тестовый пример для этого? Раздел D.1.6.
Каково значение переменной wait_timeout на сервере MySQL? переменных mysqladmin дает вам значение этого
Вы пытались запустить mysqld с —log и проверить, выданный запрос появляется в журнале?
Раздел 1.6.2.2.
Не удается подключиться к [локальному] серверу MySQL Ошибка Клиент MySQL в Unix может подключиться к серверу mysqld пополам
разными способами: сокеты Unix, которые подключаются через файл в файле
система (по умолчанию /tmp/mysqld.sock
) или TCP / IP, который подключает
через номер порта. Сокеты Unix быстрее TCP / IP, но могут только
использоваться при подключении к серверу на том же компьютере. Сокеты Unix
используются, если вы не укажете имя хоста или если вы укажете специальный
имя хоста локальный .
В Windows, если сервер mysqld работает на 9x / Me, вы можете подключаться только через TCP / IP. Если сервер работает на NT / 2000 / XP и mysqld запускается с —enable-named-pipe , вы также может подключаться к именованным каналам. Имя именованного канала — MySQL. Если вы не указываете имя хоста при подключении к mysqld , MySQL клиент сначала попытается подключиться к именованному каналу, и если этого не произойдет работать он будет подключаться к порту TCP / IP. Вы можете принудительно использовать именованные трубы в Windows с помощью . в качестве имени хоста.
Ошибка (2002) Невозможно подключиться к … обычно означает, что есть не является сервером MySQL, работающим в системе, или вы использование неправильного файла сокета или порта TCP / IP при попытке подключения к mysqld сервер.
Начните с проверки (с помощью ps или диспетчера задач в Windows), что на вашем сервере запущен процесс с именем mysqld ! Если здесь не является процессом mysqld , вам следует запустить его.См. Раздел 2.4.2.
Если запущен процесс mysqld , вы можете проверить сервер с помощью пробуя эти разные соединения (номер порта и путь к сокету в вашей настройке, конечно, может быть иначе):
shell> mysqladmin version оболочка> переменные mysqladmin shell> mysqladmin -h `hostname` переменные версии оболочка> mysqladmin -h `hostname` --port = 3306 version оболочка> mysqladmin -h 'ip для вашего хоста' версия shell> mysqladmin --socket = / tmp / mysql.sock version
Обратите внимание на использование обратных кавычек, а не прямых кавычек с именем хоста команда; это приводит к выводу имени хоста (то есть текущего hostname), который нужно подставить в команду mysqladmin .
Вот несколько причин, по которым не может подключиться к локальному серверу MySQL может возникнуть ошибка:
mysqld не запущен.
Вы работаете в системе, в которой используются потоки MIT-pthread. Если вы работаете в системе, в которой нет собственных потоков, mysqld использует пакет MIT-pthreads. См. Раздел 2.2.2. Тем не мение, не все версии MIT-pthreads поддерживают сокеты Unix. В системе без поддержки сокетов вы всегда должны явно указывать имя хоста при подключении к серверу.Попробуйте использовать эту команду, чтобы проверить подключение к серверу:
shell> mysqladmin -h `hostname` version
Кто-то удалил сокет Unix, который использует mysqld (по умолчанию
/tmp/mysqld.sock
). У вас может быть задание cron , которое удаляет сокет MySQL (например, задание по удалению старых файлов из каталога/ tmp
). Вы всегда можете запустить mysqladmin версия и убедитесь, что сокет mysqladmin пытается использовать действительно существует.Исправление в этом случае — изменить задание cron на не удаляйтеmysqld.sock
или размещайте сокет в другом месте. См. Раздел A.4.5.Вы запустили сервер mysqld с параметр —socket = / path / to / socket . Если поменять розетку путь к серверу, вы также должны уведомить клиентов MySQL о новом пути. Вы можете сделать это, указав путь к сокету как аргумент клиенту. См. Раздел A.4.5.
Вы используете Linux, и один поток умер (дамп памяти).В таком случае вы должны убить другие потоки mysqld (например, с помощью mysql_zap script), прежде чем вы сможете запустить новый MySQL сервер. См. Раздел A.4.1.
Возможно, у вас нет прав на чтение и запись в каталог, содержащий файл сокета или сам файл сокета. В этом случае вы либо измените привилегию для каталога / файла или перезапустите mysqld , чтобы он использовал каталог, к которому вы можете получить доступ.
Если вы получаете сообщение об ошибке Не удается подключиться к серверу MySQL на some_hostname , вы можете попробовать следующие вещи, чтобы узнать, что проблема:
Проверьте, работает ли сервер, выполнив telnet your-host-name tcp-ip-port-number и пару раз нажмите Enter.Если здесь это сервер MySQL, работающий на этом порту, вы должны получить ответ, который включает номер версии запущенного MySQL сервер. Если вы получаете сообщение об ошибке типа telnet: невозможно подключиться к удаленный хост: соединение отклонено , сервер не запущен на данный порт.
Попробуйте подключиться к демону mysqld на локальном компьютере и проверьте порт TCP / IP, который настроен для использования mysqld (переменная порт ) с переменных mysqladmin .
Убедитесь, что ваш сервер mysqld не запущен с — опция пропуска сети .
Если вы получаете сообщение об ошибке, подобное этой:
Хост «имя хоста» заблокирован из-за множества ошибок подключения. Разблокировать с помощью mysqladmin flush-hosts
, это означает, что mysqld получил много ( max_connect_errors ) запросов на соединение от хоста ‘hostname’ , которые были прерваны посередине.После max_connect_errors неудачных запросов, mysqld предполагает, что что-то не так (например, атака взломщика), и блокирует сайт от дальнейших подключений, пока кто-нибудь не выполнит команду mysqladmin flush-hosts .
По умолчанию mysqld блокирует хост после 10 ошибок соединения. Вы можете легко настроить это, запустив сервер следующим образом:
shell> safe_mysqld -O max_connect_errors = 10000 &
Обратите внимание, что если вы получаете это сообщение об ошибке для данного хоста, вы должны сначала проверьте, все ли в порядке с подключениями TCP / IP из этого хозяин.Если ваши TCP / IP-соединения не работают, это не поможет вам увеличьте значение переменной max_connect_errors !
Слишком много подключений ОшибкаЕсли появляется ошибка Слишком много подключений при попытке подключения в MySQL это означает, что уже есть max_connections клиенты, подключенные к серверу mysqld .
Если вам нужно больше подключений, чем установлено по умолчанию (100), вам следует перезапустить mysqld с большим значением переменной max_connections .
Обратите внимание, что mysqld действительно позволяет ( max_connections +1) клиентов для подключения. Последнее соединение зарезервировано для пользователя с процесс привилегия. Не давая эту привилегию нормальному пользователи (им это не нужно), администратор с этим правом можете войти в систему и использовать SHOW PROCESSLIST , чтобы узнать, что может быть неправильный. См. Раздел 4.5.6.
Максимально допустимое количество подключений к MySQL зависит от того, насколько хорошо библиотека потоков находится на данной платформе.Linux или Solaris должны быть способен поддерживать 500-1000 одновременных подключений, в зависимости от того, сколько RAM у вас есть и чем занимаются ваши клиенты.
Невозможно выполнить откат некоторых нетранзакционных измененных таблиц ОшибкаЕсли вы получили сообщение об ошибке / предупреждении: Предупреждение: некоторые нетранзакционные измененные таблицы не удалось откатить при попытке выполнить ROLLBACK , это означает, что некоторые из таблиц, которые вы использовали в транзакция не поддерживает транзакции.Эти нетранзакционные таблицы оператор ROLLBACK не повлияет на него.
Обычно это происходит, когда вы пытаетесь создать таблица типа, который не поддерживается вашим двоичным кодом mysqld . Если mysqld не поддерживает тип таблицы (или если тип таблицы отключено параметром запуска), вместо этого будет создан тип таблицы с типом таблицы, который больше всего похож на запрошенный, наверное MyISAM .
Вы можете проверить тип таблицы для таблицы, выполнив:
ПОКАЗАТЬ СОСТОЯНИЕ ТАБЛИЦЫ КАК ‘table_name’ .См. Раздел 4.5.6.2.
Вы можете проверить расширения, которые поддерживает ваш двоичный файл mysqld , выполнив следующие действия:
показать такие переменные, как have_% . См. Раздел 4.5.6.4.
Если вы выполните запрос и получите что-то вроде следующей ошибки:
mysql: Недостаточно памяти в строке 42, 'malloc.c' mysql: требуется 8136 байт (8 КБ), используемая память: 12481367 байт (12189 КБ) ОШИБКА 2008: клиенту MySQL не хватает памяти
обратите внимание, что ошибка относится к клиенту MySQL mysql .В причина этой ошибки просто в том, что у клиента недостаточно памяти для сохранить весь результат.
Чтобы устранить проблему, сначала проверьте правильность вашего запроса. Это разумно, что он должен возвращать столько строк? Если так, вы можете использовать mysql —quick , который использует mysql_use_result () для получения набора результатов. Это снижает нагрузку на клиента (но подробнее на сервере).
Когда клиент MySQL или сервер mysqld получает пакет большего размера чем max_allowed_packet байт, он выдает Пакет слишком большой ошибка и закрывает соединение.
В MySQL 3.23 максимально возможный пакет — 16M (из-за ограничений в клиент / серверный протокол). В MySQL 4.0.1 и выше это ограничено только объем памяти на вашем сервере (до теоретического максимум 2G).
Коммуникационный пакет — это один оператор SQL, отправляемый на сервер MySQL. или одна строка, которая отправляется клиенту.
Когда клиент MySQL или сервер mysqld получает пакет большего размера чем max_allowed_packet байт, он также выдает пакет большая ошибка и закрывает соединение.С некоторыми клиентами вы также можете получить Потеряно соединение с сервером MySQL во время запроса Ошибка , если пакет связи слишком велик.
Обратите внимание, что и клиент, и сервер имеют свои собственные max_allowed_packet переменная. Если вы хотите обрабатывать большие пакеты, вы должны увеличить эту переменную как на клиенте, так и на сервере.
Увеличивать эту переменную безопасно, так как память выделяется только тогда, когда нужный; эта переменная является скорее мерой предосторожности, чтобы поймать неправильные пакеты между клиентом и сервером, а также чтобы вы случайно не используйте большие пакеты, чтобы не хватить памяти.
Если вы используете клиент mysql , вы можете указать больший buffer, запустив клиента с mysql —set-variable = max_allowed_packet = 8M . У других клиентов есть другие методы для установки этой переменной.
Вы можете использовать файл опций, чтобы установить max_allowed_packet на большее размер в mysqld . Например, если вы планируете хранить на всю длину MEDIUMBLOB в таблицу, вам нужно будет начать сервер с опцией set-variable = max_allowed_packet = 16M .
У вас также могут возникнуть странные проблемы с большими пакетами, если вы используете большие капли, но вы не предоставили mysqld доступ к достаточному объему памяти для обработки запроса. Если вы подозреваете, что это так, попробуйте добавить ulimit -d 256000 до начала safe_mysqld скрипта и перезапустите mysqld .
Ошибка связи / соединение прервано
Начиная с MySQL 3.23.40 вы получаете только Aborted connection ошибка при запуске mysqld с —warnings .
Если в журнале ошибок вы обнаружите ошибки, подобные приведенным ниже (см. Раздел 4.9.1):
010301 14:38:23 Прервано соединение 854 с db: 'users' user: 'josh'
это означает, что произошло одно из следующих событий:
Клиентская программа не вызывала mysql_close () перед выходом.
Клиент спал более wait_timeout или interactive_timeout без выполнения каких-либо запросов. См. Раздел 4.5.6.4.
Клиентская программа внезапно завершилась в середине передачи.
Когда это происходит, серверная переменная Aborted_clients становится увеличивается.
Переменная сервера Aborted_connects увеличивается:
Когда пакет подключения не содержит нужной информации
Когда у пользователя нет прав для подключения к базе данных
Когда пользователь использует неправильный пароль
Когда требуется более connect_timeout секунд, чтобы получить пакет подключения
Обратите внимание, что это может указывать на то, что кто-то пытается проникнуть в ваша база данных!
См. Раздел 4.5.6.4.
Другие причины проблем с прерванными клиентами / прерванными соединениями.
Использование дуплексного протокола Ethernet, как половинного, так и полного с Linux. Эта ошибка есть во многих драйверах Ethernet для Linux. Вы должны протестировать для этой ошибки путем передачи огромного файла по ftp между этими двумя машины. Если передача идет в режиме пакетной паузы-пакетной паузы …, у вас синдром дуплекса Linux. Единственное решение эта проблема заключается в переключении как полудуплексного, так и полнодуплексного режима на концентраторах и переключатели.
Некоторая проблема с библиотекой потоков, которая вызывает прерывания при чтении.
Плохо настроен TCP / IP.
Неисправные сети Ethernet, концентраторы, коммутаторы, кабели … Это можно диагностировать правильно только заменой фурнитуры.
max_allowed_packet слишком мал или запросы требуют больше памяти чем вы выделили для mysqld . См. Раздел A.2.8.
Эта ошибка возникает в более старых версиях MySQL, когда временный таблица становится больше tmp_table_size байт.Чтобы избежать этого проблема, вы можете использовать опцию -O tmp_table_size = # для mysqld , чтобы увеличить размер временной таблицы или использовать SQL опцию SQL_BIG_TABLES перед тем, как выдать проблемный запрос. См. Раздел 5.5.6.
Вы также можете запустить mysqld с параметром —big-tables . Это точно так же, как при использовании SQL_BIG_TABLES для всех запросов.
В MySQL версии 3.23 временные таблицы в памяти будут автоматически преобразована в дисковую таблицу MyISAM после того, как размер таблицы станет больше tmp_table_size .
Невозможно создать / записать в файл ОшибкаЕсли вы получаете сообщение об ошибке для некоторых запросов типа:
Невозможно создать / записать в файл '\\ sqla3fe_0.ism'.
это означает, что MySQL не может создать временный файл для набор результатов в данном временном каталоге. (Эта ошибка типичное сообщение об ошибке в Windows, и сообщение об ошибке Unix аналогично.) Исправление состоит в том, чтобы запустить mysqld с —tmpdir = path или добавить в свой вариант файл:
[mysqld] tmpdir = C: / temp
при условии, что каталог c: \\ temp
существует.См. Раздел 4.1.2.
Проверьте также код ошибки, который вы получаете с perror . Одна причина также может быть ошибка переполнения диска:
shell> perror 28 Код ошибки 28: на устройстве не осталось свободного местаКоманды не синхронизированы Ошибка в клиенте
Если команд рассинхронизированы; вы не можете запустить эту команду сейчас в вашем клиентском коде вы вызываете клиентские функции в неправильном порядке!
Это может произойти, например, если вы используете mysql_use_result () и попробуйте выполнить новый запрос до того, как вы вызовете mysql_free_result () .Это также может произойти, если вы попытаетесь выполнить два запроса, которые возвращают данные без mysql_use_result () или mysql_store_result () между ними.
Если вы получили следующую ошибку:
Обнаружен неверный пароль для пользователя: ‘some_user @ some_host’; игнорирование пользователя
это означает, что при запуске mysqld или при перезагрузке таблицы разрешений, он обнаружил запись в таблице пользователя с неверный пароль. В результате запись просто игнорируется система разрешений.
Возможные причины и способы устранения этой проблемы:
Возможно, вы используете новую версию mysqld со старым пользователь стол. Вы можете проверить это, выполнив mysqlshow mysql user , чтобы узнать, поле пароля короче 16 символов. Если да, вы можете исправить это условие, запустив сценарий scripts / add_long_password .
У пользователя старый пароль (8 символов), и вы не запустили mysqld с опцией —old-protocol .Обновите пользователя в таблице user новым паролем или перезапустите mysqld с —old-protocol .
Вы указали пароль в таблице user , не используя ПАРОЛЬ () функция. Используйте mysql для обновления пользователя в пользователь таблица с новым паролем. Обязательно используйте ПАРОЛЬ () функция:
mysql> ОБНОВЛЕНИЕ пользователя SET пароль = ПАРОЛЬ ('ваш пароль') -> ГДЕ пользователь = 'XXX';
Если вы получаете сообщение об ошибке Таблица «xxx» не существует или Невозможно find file: ‘xxx’ (errno: 2) , это означает, что таблица не существует в текущей базе данных с именем xxx .
Обратите внимание, что поскольку MySQL использует каталоги и файлы для хранения баз данных и таблицы, базы данных и имена таблиц чувствительны к регистру ! (В Windows имена баз данных и таблиц не чувствительны к регистру, но все ссылки на данную таблицу в запросе должны использовать один и тот же регистр!)
Вы можете проверить, какие таблицы у вас есть в текущей базе данных, с помощью ПОКАЗАТЬ ТАБЛИЦЫ . См. Раздел 4.5.6.
Не удается инициализировать набор символов xxx ошибкаЕсли вы получаете сообщение об ошибке, например:
Ошибка подключения к MySQL: не удается инициализировать набор символов xxx
, это означает одно из следующих событий:
Набор символов является многобайтовым набором символов, и у вас нет поддержки для набора символов в клиенте.
В этом случае вам нужно перекомпилировать клиент с —with-charset = xxx или —with-extra-charsets = xxx . См. Раздел 2.3.3.
Все стандартные двоичные файлы MySQL скомпилированы с —with-extra-character-sets = complex , что включает поддержку все многобайтовые наборы символов. См. Раздел 4.6.1.
Набор символов — это простой набор символов, который не компилируется в mysqld и файлы определения набора символов отсутствуют где клиент рассчитывает их найти.
В этом случае вам необходимо:
Перекомпилировать клиент с поддержкой набора символов. См. Раздел 2.3.3.
Укажите клиенту, где находятся файлы определения набора символов. Для многих клиентов, вы можете сделать это с помощью —character-sets-dir = path-to-charset-dir option.
Скопируйте файлы определения символов в путь, по которому их ожидает клиент. быть.
Если вы получите ERROR ‘… ‘не найден (errno: 23) , Не удается открыть file: … (errno: 24) , или любая другая ошибка с errno 23 или errno 24 из MySQL, это означает, что вы не распределили достаточно файловых дескрипторов для MySQL. Вы можете использовать perror утилита для получения описания номера ошибки означает:
оболочка> перрор 23 Переполнение таблицы файлов оболочка> перрор 24 Слишком много открытых файлов оболочка> perror 11 Ресурс временно недоступен
Проблема в том, что mysqld пытается оставить открытыми слишком много файлы одновременно.Вы можете либо указать mysqld , чтобы он не открывался, поэтому сразу несколько файлов или увеличьте количество файловых дескрипторов доступно для mysqld .
Чтобы указать mysqld , чтобы одновременно открывалось меньшее количество файлов, вы можете сделать уменьшите размер кеша таблиц с помощью параметра -O table_cache = 32 , чтобы safe_mysqld (значение по умолчанию 64). Снижение стоимости max_connections также уменьшит количество открытых файлов ( значение по умолчанию — 90).
Чтобы изменить количество файловых дескрипторов, доступных для mysqld , вы можно использовать параметр —open-files-limit = # от до safe_mysqld или -O open-files-limit = # от до mysqld .См. Раздел 4.5.6.4. Самый простой способ сделать это — добавить параметр в файл параметров. См. Раздел 4.1.2. Если у вас старая версия mysqld , не поддерживает это, вы можете отредактировать сценарий safe_mysqld . Там это закомментированная строка ulimit -n 256 в скрипте. Ты можешь удалите символ ‘#’ , чтобы раскомментировать эту строку, и измените число 256, чтобы повлиять на количество файловых дескрипторов, доступных для MySQL .
ulimit (и open-files-limit ) может увеличить количество файловых дескрипторов, но только до предела, налагаемого операционными система.Существует также «жесткий» лимит, который можно изменить, только если вы запустите safe_mysqld или mysqld как root (просто помните, что в этом случае вам также необходимо использовать параметр —user = … ). Если вам нужно увеличить лимит ОС на количество файловых дескрипторов доступны для каждого процесса, обратитесь к документации по вашей операционной система.
Обратите внимание, что если вы запустите оболочку tcsh , ulimit работать не будет! tcsh также будет сообщать неверные значения, когда вы запрашиваете текущий пределы! В этом случае вы должны запустить safe_mysqld с sh !
MySQL :: MySQL 5.7 Справочное руководство :: B.2 Интерфейсы информации об ошибках
B.2 Интерфейсы информации об ошибках
Сообщения об ошибках могут исходить как на стороне сервера, так и на стороне клиента. сторона, и каждое сообщение об ошибке включает код ошибки, SQLSTATE значение и строка сообщения, как описано в Раздел B.1, «Источники и элементы сообщений об ошибках». Для списков на стороне сервера, на стороне клиента и глобально (совместно используется сервером и клиентов), см. Справочник сообщений об ошибках MySQL 5.7.
Для проверки ошибок в программах используйте номера кодов ошибок или символы, а не строки сообщений об ошибках. Строки сообщений не меняются часто, но возможно. Также, если администратор базы данных изменяет настройку языка, что влияет на язык сообщения струны; см. Раздел 10.12, «Установка языка сообщений об ошибках».
Информация об ошибках в MySQL доступна в журнале ошибок сервера, на уровне SQL, из клиентских программ и по команде линия.
Интерфейс сообщений об ошибках SQL
На уровне SQL есть несколько источников информации об ошибках. в MySQL:
Интерфейс сообщения об ошибке клиента
Клиентские программы получают ошибки из двух источников:
Ошибки, возникающие на стороне клиента изнутри Клиентская библиотека MySQL.
Ошибки, которые возникают на стороне сервера и отправляются клиент сервером.Их получает клиент. библиотека, которая делает их доступными для хост-клиента программа.
Независимо от того, возникла ли ошибка внутри клиента библиотека или получена с сервера, клиентская программа MySQL получает код ошибки, значение SQLSTATE, строку сообщения и другую связанную информацию, вызывая функции C API в клиентская библиотека:
Описание функций обработки ошибок клиентской библиотеки см. MySQL 5.7 Руководство разработчика API C.
Клиентская программа MySQL может по-разному реагировать на ошибку. Клиент может отображать сообщение об ошибке, чтобы пользователь мог принять корректирующие меры, внутренняя попытка решить или повторить попытку не удалось выполнить операцию или предпринять другие действия. Например, (используя mysql client), не удалось подключиться к сервер может привести к этому сообщению:
оболочка> mysql -h no-such-host
ОШИБКА 2005 (HY000): неизвестный хост сервера MySQL 'no-such-host' (0)
4.21 Устранение неполадок при подключении к MySQL
Убедитесь, что сервер запущен. Если это не так, клиенты не могу подключиться к нему. Например, если попытка подключиться к сервер выходит из строя с сообщением, например, одним из тех Следующее, одна из причин может заключаться в том, что сервер не работает:
оболочка> mysql
ОШИБКА 2003: не удается подключиться к серверу MySQL на ' имя_хоста ' (111)
оболочка> mysql
ОШИБКА 2002: не удается подключиться к локальному серверу MySQL через сокет.
'/ tmp / mysql.носок '(111)
Возможно, сервер запущен, но вы пытаетесь
подключиться с помощью порта TCP / IP, именованного канала или файла сокета Unix
отличается от того, который слушает сервер. К
исправьте это, когда вы вызываете клиентскую программу, укажите --port
параметр для указания
правильный номер порта, или --socket
опция для указания
правильный именованный канал или файл сокета Unix.Чтобы узнать где
файл сокета, вы можете использовать эту команду:
оболочка> netstat -ln | grep mysql
Убедитесь, что сервер не настроен на игнорирование
сетевые подключения или (если вы пытаетесь подключиться
удаленно), что он не был настроен только на прослушивание
локально на своих сетевых интерфейсах. Если сервер был запущен
с skip_networking
системная переменная включена, соединения TCP / IP не принимаются.Если сервер был запущен с bind_address
системная переменная
установлен на 127.0.0.1
, он прослушивает TCP / IP
соединения только локально на интерфейсе обратной связи и не
не принимать удаленные подключения.
Убедитесь, что брандмауэр не блокирует доступ в MySQL. Ваш брандмауэр может быть настроен на основе выполняемое приложение или номер порта, используемый MySQL для связи (по умолчанию 3306).Под Linux или Unix, проверьте свою IP-таблицу (или аналогичную) конфигурацию, чтобы убедиться, что порт не заблокирован. Под Windows приложения например, ZoneAlarm или брандмауэр Windows, возможно, потребуется настроен так, чтобы не блокировать порт MySQL.
Таблицы грантов должны быть правильно настроены, чтобы сервер
можно использовать их для контроля доступа. Для некоторых типов раздачи
(например, бинарные дистрибутивы в Windows или RPM и DEB
дистрибутивов в Linux), процесс установки инициализирует
каталог данных MySQL, включая mysql
системная база данных, содержащая грант
столы.Для дистрибутивов, которые этого не делают, вы должны
инициализировать каталог данных вручную. Подробнее см.
Глава 3, Постинсталляционная настройка и тестирование .
Чтобы определить, нужно ли инициализировать таблицы предоставления,
найдите каталог mysql
под данными
каталог. (Каталог данных обычно называется данные
или var
и является
находится в каталоге установки MySQL.) Убеждаться
что у вас есть файл с именем user.MYD
в
каталог базы данных mysql
. Если не,
инициализировать каталог данных. После этого и запуска
server, вы должны иметь возможность подключиться к серверу.
После новой установки, если вы попытаетесь войти на сервер
как root
без пароля, вы можете
получите следующее сообщение об ошибке.
оболочка> mysql -u root
ОШИБКА 1045 (28000): доступ запрещен для пользователя root @ localhost (с использованием пароля: NO)
Это означает, что пароль root уже был назначен во время
установка и она должна быть поставлена.Видеть
Раздел 3.4, «Защита исходной учетной записи MySQL» о различных способах
пароль мог быть назначен и, в некоторых случаях, как
Найди это. Если вам нужно сбросить пароль root, см.
инструкции в разделе Как сбросить пароль root. После
вы нашли или сбросили свой пароль, войдите снова как корень
с помощью - пароль
(или -п
)
вариант:
оболочка> mysql -u root -p
Введите пароль:
Однако сервер позволит вам подключиться как root
без пароля, если у вас
инициализировал MySQL с помощью mysqld
—initialize-insecure (см.
Раздел 3.1, «Инициализация каталога данных» для подробностей).
Это угроза безопасности, поэтому вам следует установить пароль для root
аккаунт; видеть
Раздел 3.4, «Защита исходной учетной записи MySQL» для получения инструкций.
Если вы обновили существующую установку MySQL до более новой версия, вы выполнили процедуру обновления MySQL? Если не, Сделай так. Структура таблиц грантов периодически меняется. когда добавляются новые возможности, поэтому после обновления вы всегда следует убедиться, что в ваших таблицах есть текущие состав.Инструкции см. В разделе Обновление MySQL.
Если клиентская программа получает следующее сообщение об ошибке, когда он пытается подключиться, это означает, что сервер ожидает пароли в более новом формате, чем позволяет клиент генерируя:
оболочка> mysql
Клиент не поддерживает запрошенный протокол аутентификации
по серверу; рассмотреть возможность обновления клиента MySQL
Помните, что клиентские программы используют параметры подключения
указанные в файлах опций или переменных среды.Если
клиентская программа, кажется, отправляет неверное значение по умолчанию
параметры подключения, если вы не указали их на
командную строку, проверьте все применимые файлы параметров и ваш
среда. Например, если вы получаете Access
отказано
при запуске клиента без каких-либо параметров,
убедитесь, что вы не указали старый пароль ни в одном
ваших файлов опций!
Вы можете запретить использование файлов опций клиентской программой.
вызывая его с помощью - no-defaults
option.Для
пример:
оболочка> mysqladmin --no-defaults -u корневая версия
Файлы опций, которые используют клиенты, перечислены в Использование файлов опций. Переменные среды перечислено в переменных среды.
Если вы получаете следующую ошибку, это означает, что вы используете
неверный пароль root
:
оболочка> mysqladmin -u root -p xxxx ver
Доступ запрещен для пользователя 'root' @ 'localhost' (с паролем: ДА)
Если предыдущая ошибка возникает, даже если вы не указали
пароль, значит у вас неверный пароль
перечислены в каком-то файле опций.Попробуйте - no-defaults
option as
описано в предыдущем пункте.
Для получения информации об изменении паролей см. Раздел 4.14, «Назначение паролей учетных записей».
Если вы потеряли или забыли корень
пароль, см. Как сбросить пароль root.
localhost
— это синоним вашего локального хоста
имя, а также хост по умолчанию, к которому клиенты пытаются
подключитесь, если вы не укажете хост явно.
Вы можете использовать --host = 127.0.0.1
возможность явно указать хост сервера. Это вызывает
TCP / IP соединение с локальным mysqld сервер. Вы также можете использовать TCP / IP, указав --host
параметр, который использует
фактическое имя хоста локального хоста. В этом случае хост
имя должно быть указано в строке таблицы пользователь
на хосте сервера, даже если вы используете клиент
программа на том же хосте, что и сервер.
Сообщение об ошибке Доступ запрещен
сообщает вам
под кем вы пытаетесь войти, клиентский хост, с которого
вы пытаетесь подключиться, и использовали ли вы
пароль. Обычно у вас должна быть одна строка в пользователь
таблица, которая точно соответствует хосту
имя и имя пользователя, указанные в сообщении об ошибке. Для
Например, если вы получите сообщение об ошибке, содержащее используя пароль: NO
, значит, вы пробовали
войти без пароля.
Если вы получаете сообщение об ошибке Access denied
, когда
пытаюсь подключиться к базе данных с помощью mysql -u
, у вас может быть
проблема с user_name
пользователем таблица
. Проверить это
выполнение mysql -u root mysql
и выдача
этот оператор SQL:
ВЫБРАТЬ * ОТ пользователя;
В результате должна появиться строка с Хост
и Пользователь
столбца
соответствие имени хоста вашего клиента и имени пользователя MySQL.
Если при попытке подключиться с
хост, отличный от того, на котором запущен сервер MySQL,
это означает, что в пользователь
строки нет
таблица со значением Host
, которое соответствует
клиентский хост:
Хост ... не может подключиться к этому серверу MySQL
Вы можете исправить это, настроив учетную запись для комбинации имени хоста клиента и имени пользователя, которые вы используете, когда пытаюсь подключиться.
Если вы не знаете IP-адрес или имя хоста аппарата
из которого вы подключаетесь, вы должны поставить строку с '%'
как столбец Host
значение в пользовательской таблице
. После попытки
подключитесь с клиентской машины, используйте SELECT
Запрос USER ()
, чтобы узнать, как вы действительно подключились. потом
измените '%'
в пользователь
строка таблицы к фактическому имени хоста, который
отображается в журнале.В противном случае ваша система останется незащищенной.
потому что он разрешает соединения с любого хоста для данного
имя пользователя.
В Linux еще одна причина, по которой может возникнуть эта ошибка, заключается в том, что
вы используете двоичную версию MySQL, скомпилированную с
другая версия библиотеки glibc
, чем
тот, который вы используете. В этом случае вам следует либо обновить
ваша операционная система или glibc
, или загрузите
исходный код версии MySQL и скомпилировать его
сам.Исходный RPM обычно тривиально скомпилировать и
установить, так что это не большая проблема.
Если вы указываете имя хоста при попытке подключения, но получаете сообщение об ошибке, в котором имя хоста не отображается или является IP-адресом адрес, это означает, что сервер MySQL получил ошибку, когда пытается разрешить IP-адрес клиентского хоста в имя:
оболочка> mysqladmin -u root -p xxxx -h some_hostname ver
Доступ запрещен для пользователя 'root' @ '' (с паролем: ДА)
Если вы попытаетесь подключиться как root
и получите
следующая ошибка, это означает, что у вас нет строки в пользователь
таблица с пользователем
значение столбца 'корень'
и это mysqld не может разрешить имя хоста для
ваш клиент:
Доступ запрещен для пользователя «@» unknown »
Эти ошибки указывают на проблему с DNS.Чтобы исправить это, выполните mysqladmin flush-hosts для сброса внутренний кеш хоста DNS. См. «Поиск DNS» и «Кэш хоста».
Вот некоторые постоянные решения:
Определите, что не так с вашим DNS-сервером, и исправьте это.
Укажите IP-адреса, а не имена хостов в MySQL таблицы грантов.
Поместите запись для имени клиентского компьютера в
/ etc / hosts
в Unix или\ windows \ hosts
в Windows.Запустите mysqld с
skip_name_resolve
система переменная включена.Запустите mysqld с
--skip-host-cache
option.В Unix, если вы запускаете сервер и клиент на тот же компьютер, подключитесь к
localhost
.Для подключений кlocalhost
, MySQL программы пытаются подключиться к локальному серверу с помощью Файл сокета Unix, если нет параметров подключения указан, чтобы гарантировать, что клиент делает TCP / IP связь. Для получения дополнительной информации см. Подключение к серверу MySQL с помощью параметров команды.В Windows, если вы используете сервер и клиент на том же компьютере, и сервер поддерживает именованный канал подключения, подключитесь к имени хоста
.
(период). Подключения к.
использовать именованный pipe, а не TCP / IP.
Если mysql -u root
работает, но mysql
-h
приводит к your_hostname
-u root Доступ запрещен
(где your_hostname
— фактический хост
имя локального хоста), возможно, у вас нет правильного имени для
ваш хост в таблице пользователя
.Общий
проблема здесь в том, что значение Host
в пользователь
строка таблицы указывает неквалифицированный
имя хоста, но процедуры разрешения имен вашей системы возвращают
полное доменное имя (или наоборот). Например, если
у вас есть строка с хостом 'pluto'
в пользователь
таблица, но ваш DNS сообщает MySQL, что
имя вашего хоста — 'pluto.example.com'
,
ряд не работает.Попробуйте добавить строку в пользователь
таблица, содержащая IP-адрес
ваш хост в качестве значения столбца Host
.
(В качестве альтернативы вы можете добавить строку в пользователь
таблица с хостом
значение, содержащее подстановочный знак (например, 'плутон.%'
). Однако использование Хост
значения, оканчивающиеся на %
— это небезопасный и не рекомендуется !)
Если mysql -u
работает, но user_name
mysql -u
нет, вы
не предоставили доступ данному пользователю к базе данных
с именем имя_пользователя
some_db
some_db
.
Если mysql -u
работает, когда
выполняется на хосте сервера, но имя_пользователя
mysql -h
не работает
при выполнении на удаленном клиентском хосте вы не включили
доступ к серверу для данного имени пользователя с удаленного
хозяин. имя_хоста
-u имя_пользователя
Если вы не можете понять, почему вы получаете доступ отказано
, удалить из пользователя
таблица все строки, которые имеют значения Host
содержащие подстановочные знаки (строки, содержащие '%'
или '_'
символа).Очень распространенная ошибка
чтобы вставить новую строку с Хост
= '%'
и Пользователь
= '
,
думая, что это позволяет вам указать some_user
' localhost
для подключения с той же машины.
Причина, по которой это не работает, заключается в том, что по умолчанию
привилегии включают строку с Хост
= 'localhost'
и Пользователь
= ''
.Из-за этого
строка имеет значение Host
'localhost'
, который более конкретен, чем "%"
, он используется вместо нового
строка при подключении с localhost
! В
правильная процедура — вставить вторую строку с Хост
= 'localhost'
и Пользователь
= '
,
или удалить строку с помощью some_user
' Хост
= 'localhost'
и Пользователь
= ''
.После удаления
ряд, не забудьте выпустить FLUSH
PRIVILEGES
, чтобы перезагрузить таблицы предоставления. Видеть
также Раздел 4.6, «Контроль доступа, этап 1: проверка соединения».
Если вы можете подключиться к серверу MySQL, но получили Доступ запрещен
сообщение всякий раз, когда вы выдаете ВЫБРАТЬ ... В
OUTFILE
или ЗАГРУЗИТЬ ДАННЫЕ
оператор, ваша строка в таблице пользователя
делает
у вас нет привилегии FILE
включено.
Если вы измените таблицы грантов напрямую (например, используя ВСТАВИТЬ
, ОБНОВЛЕНИЕ
, или DELETE
операторов) и ваш
изменения кажутся игнорируемыми, помните, что вы должны выполнить FLUSH PRIVILEGES заявление
или mysqladmin flush-privileges команда для
заставляют сервер перезагружать таблицы привилегий. Иначе,
ваши изменения не вступят в силу до тех пор, пока сервер не будет
перезапущен.Помните, что после изменения root
пароль с UPDATE
, вы не
необходимо указать новый пароль до тех пор, пока вы не сбросите
привилегии, потому что до тех пор сервер не знает, что
вы изменили пароль.
Если кажется, что ваши привилегии изменились в середине сеанс, возможно, администратор MySQL изменил их.Перезагрузка таблиц грантов влияет на нового клиента соединения, но это также влияет на существующие соединения как указано в Разделе 4.13, «Когда вступают в силу изменения привилегий».
Если у вас проблемы с доступом к Perl, PHP, Python или ODBC
программа, попробуйте подключиться к серверу с помощью mysql -u
или имя_пользователя
db_name
mysql
-u
.Если ты можешь
для подключения с использованием клиента mysql ,
проблема заключается в вашей программе, а не в доступе
привилегии. (Между имя_пользователя
-p пароль
db_name
-p
и
пароль; вы также можете использовать --password =
синтаксис для указания пароля. Если вы используете пароль
-p
или - пароль
вариант без
значение пароля, MySQL запросит пароль.)
В целях тестирования запустите mysqld сервер с - опция skip-grant-tables
.
Затем вы можете изменить таблицы предоставления MySQL и использовать ПОКАЗАТЬ ГРАНТЫ
выписка для проверки
имеют ли ваши модификации желаемый эффект. Когда ты
довольны вашими изменениями, выполните mysqladmin
flush-привилегии , чтобы сообщить mysqld server для перезагрузки привилегий.Это позволяет вам начать использовать новое содержимое таблицы грантов.
без остановки и перезапуска сервера.
Если ничего не помогает, запустите mysqld сервер с возможностью отладки (например, --debug = d, общий, запрос
). Этот
выводит информацию об узле и пользователе о попытках подключения,
а также информацию о каждой выданной команде. Видеть
Пакет DBUG.
Если у вас есть другие проблемы с таблицами предоставления MySQL и
спросить на
Сообщество MySQL
Slack, всегда предоставляйте дамп гранта MySQL
столы. Вы можете выгружать таблицы с помощью mysqldump Команда mysql . Чтобы отправить отчет об ошибке, см.
инструкции в разделе Как сообщать об ошибках или проблемах. В некоторых случаях,
вам может потребоваться перезапустить mysqld с помощью --skip-grant-tables
для запуска mysqldump .
MySQL: 12 наиболее распространенных ошибок, с которыми вы можете столкнуться
Следующий отрывок взят из книги MySQL 8 Administrator’s Guide , написанной Чинтаном Мехтой, Анкитом Бхавсаром, Субхашем Шахом и Хетал Озой. В этой книге представлены советы и рекомендации по решению проблем, с которыми вы можете столкнуться при администрировании решения MySQL.При использовании MySQL 8 может быть несколько сценариев, в которых вы не сможете получить доступ или использовать MySQL должным образом. Эти ситуации могут сильно раздражать, но их легко исправить.Однако, прежде чем искать решение, вы должны знать проблему! Вот некоторые из распространенных ошибок, с которыми вы можете столкнуться при использовании MySQL 8.
1. В доступе отказано
MySQL предоставляет систему привилегий, которая аутентифицирует пользователя, который подключается с хоста, и связывает пользователя с привилегиями доступа к базе данных. Привилегии включают SELECT, INSERT, UPDATE и DELETE и могут идентифицировать анонимных пользователей и предоставлять привилегии для определенных функций MySQL, таких как LOAD DATA INFILE и административные операции.Ошибка отказа в доступе может возникнуть по многим причинам. Во многих случаях проблема возникает из-за учетных записей MySQL, которые клиентские программы используют для подключения к серверу MySQL с разрешения сервера.
2. Потеряно соединение с сервером MySQL
Ошибка потери соединения с сервером MySQL может произойти по одной из трех вероятных причин, описанных в этом разделе. Одна из возможных причин ошибки — проблемы с сетевым подключением.
Необходимо проверить состояние сети, если это частая ошибка.Если при запросе к базе данных появляется сообщение об ошибке, например «Потеряно соединение с сервером MySQL», это означает, что ошибка возникла из-за проблем с сетевым подключением.
Системная переменная connection_timeout определяет количество секунд, в течение которых сервер mysqld ожидает пакета подключения перед ответом на тайм-аут соединения. Нечасто эта ошибка может возникать, когда клиент пытается установить начальное соединение с сервером, а значение connection_timeout установлено на несколько секунд.В этом случае проблему можно решить, увеличив значение connection_timeout в зависимости от расстояния и скорости соединения. SHOW GLOBAL STATUS LIKE и Aborted_connects могут использоваться, чтобы определить, сталкиваемся ли мы с этим чаще. Можно с уверенностью сказать, что увеличение значения connection_timeout является решением, если сообщение об ошибке содержит пакет авторизации чтения. Возможно, что проблема может возникнуть из-за больших значений двоичного большого объекта (BLOB), чем max_allowed_packet.Это может вызвать потерю соединения с сервером MySQL, ошибка клиентов. Если наблюдается ошибка ER_NET_PACKET_TOO_LARGE, это подтверждает, что значение max_allowed_packet должно быть увеличено.
3. Не удается ввести пароль при неправильном вводе
КлиентыMySQL запрашивают пароль, когда клиентская программа вызывается с параметром — password или -p без значения пароля. Ниже приводится команда:
> mysql -u имя_пользователя -p
Введите пароль:
В некоторых системах может случиться так, что пароль работает нормально, если он указан в файле параметров или в командной строке.Но он не работает при интерактивном вводе в командной строке при вводе пароля :. Это происходит потому, что предоставляемая системой библиотека для чтения паролей ограничивает значения паролей небольшим количеством символов (обычно восемь). Это проблема с системной библиотекой, а не с MySQL. В качестве обходного пути измените пароль MySQL на значение, состоящее из восьми или менее символов, или сохраните пароль в файле параметров.
4. Хост host_name заблокирован
Если сервер mysqld получает слишком много запросов на соединение от хоста, который прерывается в середине, возникает следующая ошибка:
Хост host_name заблокирован из-за множества ошибок соединения.Разблокировать с помощью mysqladmin flush-hosts
Системная переменная max_connect_errors определяет количество последовательных разрешенных запросов на прерывание соединения. Как только возникают неудачные запросы max_connect_errors без успешного подключения, mysqld предполагает, что что-то не так, и блокирует хост от дальнейших подключений до тех пор, пока не будет запущен оператор FLUSH HOSTS или команда mysqladmin flush-hosts.
mysqld по умолчанию блокирует хост после 100 ошибок соединения.Его можно настроить, установив значение max_connect_errors при запуске сервера, как показано ниже:
> mysqld_safe --max_connect_errors = 10000
Это значение также можно установить во время выполнения, как показано ниже:
mysql> УСТАНОВИТЬ ГЛОБАЛЬНЫЕ max_connect_errors = 10000;
Сначала следует проверить, что с TCP / IP-соединениями от хоста все в порядке, если для конкретного хоста получена ошибка host_name is blocked. Увеличение значения переменной max_connect_errors не помогает, если в сети есть проблемы.
5. Слишком много подключений
Эта ошибка указывает на то, что все доступные подключения используются для других клиентских подключений. Max_connections — это системная переменная, которая контролирует количество подключений к серверу. Значение по умолчанию для максимального количества подключений — 151. Мы можем установить для системной переменной max_connections значение больше 151, чтобы поддерживать больше подключений, чем 151.
Серверный процесс mysqld на самом деле позволяет подключаться одному клиенту с более чем max_connections (max_connections + 1) значением.Одно дополнительное соединение остается зарезервированным для учетных записей с привилегиями CONNECTION_ADMIN или SUPER. Привилегия может быть предоставлена администраторам с доступом к привилегии ПРОЦЕСС. Имея этот доступ, администратор может подключиться к серверу, используя зарезервированное соединение. Они могут выполнить команду SHOW PROCESSLIST для диагностики проблем, даже если максимальное количество клиентских подключений исчерпано.
6. Недостаточно памяти
Если mysql не имеет достаточно памяти для хранения всего запроса запроса, выданного клиентской программой MySQL, сервер выдает следующую ошибку:
mysql: Недостаточно памяти в строке 42, 'malloc.c '
mysql: требуется 8136 байт (8 КБ), используемая память: 12481367 байт (12189 КБ)
ОШИБКА 2008: клиенту MySQL не хватает памяти
Чтобы решить проблему, мы должны сначала проверить правильность запроса. Ожидаем ли мы, что запрос вернет такое количество строк? Если нет, мы должны исправить запрос и выполнить его снова. Если запрос правильный и не требует исправлений, мы можем подключить mysql с опцией –quick. Использование опции –quick приводит к использованию функции C API mysql_use_result () для получения набора результатов.Функция увеличивает нагрузку на сервер и снижает нагрузку на клиента.
7. Слишком большой пакет
Пакет связи может быть одним из следующих:
- Один оператор SQL, который клиент MySQL отправляет серверу MySQL
- Одна строка, которая отправляется клиенту MySQL с сервера MySQL
- Событие двоичного журнала, которое отправляется с главного сервера репликации на подчиненное устройство репликации
Размер пакета 1 ГБ — это максимально возможный размер пакета, который может быть передан на сервер или клиент MySQL 8 или от него.Сервер или клиент MySQL выдает ошибку ER_NET_PACKET_TOO_LARGE и закрывает соединение, если получает пакет, размер которого превышает max_allowed_packet байтов.
Размер max_allowed_packet по умолчанию для клиентской программы MySQL составляет 16 МБ. Для установки большего значения можно использовать следующую команду:
> mysql --max_allowed_packet = 32M
Значение по умолчанию для сервера MySQL — 64 МБ. Следует отметить, что установка большего значения для этой системной переменной не повредит, поскольку дополнительная память выделяется по мере необходимости.
8. Стол заполнен
Ошибка заполнения таблицы возникает в одном из следующих условий:
- Диск полный
- Таблица достигла максимального размера
Фактический максимальный размер таблицы в базе данных MySQL может быть определен ограничениями, налагаемыми операционной системой на размеры файлов.
9. Невозможно создать / записать в файл
Это означает, что MySQL не может создать временный файл во временном каталоге для набора результатов, если при выполнении запроса мы получим следующую ошибку:
Невозможно создать / записать в файл sqla3fe_0.ism '
Возможный способ обхода ошибки — запустить сервер mysqld с параметром –tmpdir. Ниже приводится команда:
> mysqld --tmpdir C: / темп
10. Команды не синхронизированы
Если клиентские функции вызываются в неправильном порядке, будет получена ошибка рассинхронизации команд. Это означает, что команда не может быть выполнена в клиентском коде. Например, если мы выполняем mysql_use_result () и пытаемся выполнить другой запрос перед выполнением mysql_free_result (), может возникнуть эта ошибка.Это также может произойти, если мы выполним два запроса, которые возвращают набор результатов, без вызова промежуточных функций mysql_use_result () или mysql_store_result ().
11. Игнорирование пользователя
Следующая ошибка возникает, когда учетная запись в таблице пользователей обнаруживается с недопустимым паролем при запуске сервера mysqld или когда сервер перезагружает таблицы предоставления:
Обнаружен неверный пароль для пользователя some_user @ some_host; игнорирование пользователя
В результате учетная запись игнорируется системой разрешений MySQL.Чтобы решить эту проблему, мы должны назначить новый действующий пароль для учетной записи.
12. Таблица tbl_name не существует
Следующая ошибка указывает на то, что указанная таблица не существует в базе данных по умолчанию:
Таблица 'tbl_name' не существует
Не удается найти файл: 'tbl_name' (ошибка: 2)
В некоторых случаях пользователь может неправильно обращаться к таблице. Это возможно, потому что сервер MySQL использует каталоги и файлы для хранения таблиц базы данных.В зависимости от управления файлами операционной системы имена базы данных и таблиц могут быть чувствительны к регистру.
Для файловых систем без учета регистра, таких как Windows, ссылки на указанную таблицу, используемую в запросе, должны использовать тот же регистр букв.
В дополнение к этому вы можете столкнуться с ошибками сервера MySQL 8, такими как проблема с разрешением, или ошибками клиента, такими как проблема со значениями NULL. Чтобы узнать, как с ними бороться, вы можете прочитать эту книгу MySQL 8 Administrator’s Guide .
Читать далееMySQL 8.0 обычно доступен с дополнительными функциями
Базовый веб-сайт с использованием Node.js и базы данных MySQL
Как исправить ошибку MySQL 1064 (5 методов)
Если вы какое-то время пользуетесь WordPress, возможно, вы решили заняться более продвинутым управлением базами данных. Это часто связано с использованием командной строки MySQL, что, в свою очередь, может привести к сбивающим с толку проблемам, таким как ошибки MySQL 1064.
К счастью, хотя решение этой ошибки поначалу может сбивать с толку из-за множества возможных причин, ее решения, как правило, относительно просты. Как только вы определите причину наблюдаемой ошибки базы данных, вы сможете довольно быстро ее исправить.
В этом посте мы рассмотрим различные возможные причины ошибки MySQL 1064. Затем мы поделимся решениями для каждой типичной ситуации, чтобы помочь вам восстановить базу данных и ваш сайт.
Приступим!
Почему возникает ошибка MySQL 1064
Ошибка MySQL 1064 — это синтаксическая ошибка.Это означает, что проблема заключается в том, что MySQL не понимает, что вы просите его сделать. Однако существует множество различных ситуаций, которые могут привести к такому недопониманию между вами и вашей базой данных.
Самая простая причина в том, что вы допустили ошибку при вводе команды и MySQL не может понять ваш запрос. Кроме того, вы можете пытаться использовать устаревшие или даже устаревшие команды, которые невозможно прочитать.
В других случаях вы могли попытаться включить «зарезервированное слово» в одну из ваших команд.Зарезервированные слова — это термины, которые могут использоваться в MySQL только в определенных контекстах. Если вы попытаетесь использовать их по-другому, вы столкнетесь с ошибкой.
Также возможно, что в вашей базе данных отсутствуют некоторые данные. Когда вы делаете запрос через MySQL, который ссылается на данные, которых не должно быть, вы также увидите ошибку 1064. Наконец, перенос вашей базы данных WordPress на другой сервер также может привести к той же проблеме.
Как видите, существует множество потенциальных причин этой проблемы, которые могут усложнить решение.Если вы не перемещаете базу данных или не предпринимаете каких-либо других действий, указывающих на конкретную причину, вам, вероятно, придется попробовать несколько разных решений, прежде чем вы выберете правильное. К счастью, ни один из них не является слишком сложным для выполнения, как мы увидим дальше.
О нет, вы получаете ошибку MySQL 1064 … 😭 Не отчаивайтесь! Вот 5 проверенных решений, чтобы исправить это немедленно 🙏Нажмите, чтобы твитнутьКак исправить ошибку MySQL 1064 (5 методов)
Если у вас уже есть представление о том, что вызывает ошибку MySQL 1064, вы можете просто перейти к разрешению для вашей конкретной ситуации.Однако, если вы не уверены, почему произошла ошибка, простейшая стратегия — сначала попробовать самое простое решение.
В таком случае мы рекомендуем протестировать пять наиболее вероятных исправлений в следующем порядке.
1. Правильные команды с ошибками
Опечатки MySQL хороши тем, что они являются самым простым объяснением синтаксических проблем, таких как ошибка 1064. К сожалению, их исправление может оказаться самым утомительным занятием. Вообще говоря, лучший вариант — вручную вычитать код и искать ошибки, которые вы могли допустить.
Мы рекомендуем использовать руководство MySQL в качестве справочника при этом, дважды проверяя все, в чем вы не уверены. Как вы могли догадаться, это может занять довольно много времени, особенно если вы какое-то время работали в командной строке MySQL или если вы новичок в этой задаче.
Альтернативой ручной проверке вашей работы является использование такого инструмента, как EverSQL:
Средство проверки синтаксиса EverSQL
С помощью этого решения вы можете просто ввести свой MySQL для автоматической проверки на наличие ошибок.Однако имейте в виду, что эти платформы не всегда идеальны, и вы все равно можете проверить результаты самостоятельно.
Подпишитесь на информационный бюллетень
Хотите узнать, как мы увеличили трафик более чем на 1000%?
Присоединяйтесь к 20 000+ других, которые получают нашу еженедельную рассылку с инсайдерскими советами по WordPress!
Подпишитесь сейчас2. Заменить устаревшие команды
По мере роста и изменения платформ некоторые команды, которые были полезны в прошлом, заменяются более эффективными.MySQL не исключение. Если вы работаете над своей базой данных после недавнего обновления или во время работы ссылались на устаревший источник, возможно, одна или несколько ваших команд уже недействительны.
Вы можете проверить, так ли это, используя Справочное руководство по MySQL. Вы найдете упоминания о командах, которые стали устаревшими в каждой версии MySQL в соответствующих разделах:
Удаление устаревших команд вручную
После того, как вы определили, какая команда, вероятно, вызывает проблему, вы можете просто использовать функцию «найти и заменить», чтобы удалить устаревшую команду и добавить новую версию.Например, если вы использовали storage_engine
и обнаружили, что он больше не работает, вы можете просто заменить все экземпляры новой командой default_storage_engine
.
3. Обозначьте зарезервированные слова
В MySQL использование зарезервированного слова вне контекста приведет к синтаксической ошибке, так как оно будет интерпретировано как неправильное. Тем не менее, вы все равно можете использовать зарезервированные слова по своему усмотрению, заключив их в обратные кавычки, например: `select`
Каждая версия MySQL имеет свои собственные зарезервированные слова, о которых вы можете прочитать в Справочном руководстве MySQL.Быстрый поиск и замена должны помочь вам решить эту проблему, если вы считаете, что она может вызывать ошибку 1064.
4. Добавьте отсутствующие данные
Если ваш последний запрос MySQL пытается ссылаться на информацию в базе данных и не может ее найти, вы, очевидно, столкнетесь с проблемами. В случае, если ни одно из предыдущих решений не решает вашу ошибку MySQL 1064, возможно, пришло время поискать недостающие данные.
К сожалению, это еще одно решение, которое может быть довольно утомительным и должно выполняться вручную.Лучшее, что вы можете сделать в этой ситуации, — это вернуться назад, начиная с вашего последнего запроса. Проверьте каждую базу данных, на которую он ссылается, и убедитесь, что присутствует вся правильная информация. Затем переходите к следующему последнему запросу, пока не дойдете до того, в котором отсутствуют некоторые данные.
5. Используйте режим совместимости для переноса баз данных WordPress
Это последнее решение ошибки 1064 не так просто, как другие в нашем списке. Однако, если вы переносите свой сайт WordPress на новый хост или иным образом перемещаете его на другой сервер, вам нужно будет предпринять дополнительные шаги, чтобы избежать проблем с вашей базой данных.
Самое простое решение — использовать плагин миграции, который включает режим совместимости, например WP Migrate DB:
WP Migrate DB WordPress плагин
Это включит функцию автоматического обнаружения, которая обеспечит совместимость последней резервной копии сайта и базы данных с несколькими версиями MySQL. Вы можете получить доступ к настройке режима совместимости, перейдя в Инструменты > Миграция базы данных> Дополнительные параметры :
WP Перенести настройки БД
Установите флажок рядом с Совместимость со старыми версиями MySQL перед началом миграции сайта.Таким образом, вы сможете избежать каких-либо проблем во время процесса.
Сводка
Ошибки базы данных могут помешать вашим планам и даже могут поставить под угрозу стабильность вашего сайта. Знание, как решать такие проблемы, как ошибка MySQL 1064, может помочь вам быстро отреагировать и минимизировать время простоя вашего сайта.
Есть пять способов исправить ошибку MySQL 1064, когда вы столкнетесь с ней, в зависимости от ее наиболее вероятной причины:
- Правильные команды с ошибками.
- Заменить устаревшие команды.
- Обозначить зарезервированные слова.
- Добавить недостающие данные.
- Перенести базы данных WordPress в режиме совместимости.
Если вам понравилось это руководство, то вам понравится наша поддержка. Все планы хостинга Kinsta включают круглосуточную поддержку наших опытных разработчиков и инженеров WordPress. Общайтесь с той же командой, которая поддерживает наших клиентов из списка Fortune 500. Ознакомьтесь с нашими тарифами
Коды ошибок сервера MySQL и сообщения 1150 — 1199
Ошибка: 1150 SQLSTATE: HY000 (ER_DELAYED_CANT_CHANGE_LOCK)
Сообщение: поток отложенной вставки не может получить запрошенную блокировку для таблица% s
Ошибка: 1151 SQLSTATE: HY000 (ER_TOO_MANY_DELAYED_THREADS)
Сообщение: используется слишком много отложенных потоков
Ошибка: 1152 SQLSTATE: 08S01 (ER_ABORTING_CONNECTION)
Сообщение: Прерванное соединение% ld с базой данных: пользователь ‘% s’: ‘% s’ (% s)
Ошибка: 1153 SQLSTATE: 08S01 (ER_NET_PACKET_TOO_LARGE) Сообщение: Получил пакет больше чем 'max_allowed_packet' байтов
Как выглядит сообщение об ошибке MySQL?
mysql --user = root --max_allowed_packet = 128M testбайтов max_allowed_packet. Что означает сообщение об ошибке MySQL?
Это сообщение об ошибке MySQL означает, что параметр max_allowed_packet на стороне клиента или на стороне сервера слишком мал для обработки данных.
Когда появляется это сообщение об ошибке MySQL?
Эта ошибка обычно возникает, если вы установили слишком маленький размер max_allowed_packet на сервере.Например, вы выгружаете свои данные из производства и восстанавливаете их в тестовой системе с настройкой по умолчанию.
Как исправить эту ошибку MySQL?
Увеличить max_allowed_packet. Либо с:
mysql> УСТАНОВИТЬ СЕССИЮ max_allowed_packet = 128 * 1024 * 1024;Для вашего сеанса или с:
mysql> УСТАНОВИТЬ ГЛОБАЛЬНЫЙ max_allowed_packet = 128 * 1024 * 1024;по всему миру. Чтобы сделать его постоянным, установите параметр max_allowed_packet в my.cnf:
# my.cnf [mysqld] max_allowed_packet = 128 МБ [клиент] max_allowed_packet = 128MЕсть также некоторые ошибки, которые вызывают эту проблему:
Ошибка: 1154 SQLSTATE: 08S01 (ER_NET_READ_ERROR_FROM_PIPE)
Сообщение: Получена ошибка чтения из соединительного канала
Ошибка: 1155 SQLSTATE: 08S01 (ER_NET_FCNTL_ERROR)
Сообщение: Получил ошибку от fcntl ()
Ошибка: 1156 SQLSTATE: 08S01 (ER_NET_PACKETS_OUT_OF_ORDER)
Сообщение: пакеты вышли из строя
Ошибка: 1157 SQLSTATE: 08S01 (ER_NET_UNCOMPRESS_ERROR)
Сообщение: не удалось распаковать коммуникационный пакет
Ошибка: 1158 SQLSTATE: 08S01 (ER_NET_READ_ERROR)
Сообщение: Получена ошибка чтения коммуникационных пакетов
Ошибка: 1159 SQLSTATE: 08S01 (ER_NET_READ_INTERRUPTED)
Сообщение: Истекло время ожидания при чтении пакетов связи
Ошибка: 1160 SQLSTATE: 08S01 (ER_NET_ERROR_ON_WRITE)
Сообщение: Получена ошибка записи коммуникационных пакетов
Ошибка: 1161 SQLSTATE: 08S01 (ER_NET_WRITE_INTERRUPTED)
Сообщение: Истекло время ожидания записи коммуникационных пакетов
Ошибка: 1162 SQLSTATE: 42000 (ER_TOO_LONG_STRING)
Сообщение: строка результата длиннее, чем байты 'max_allowed_packet'
Ошибка: 1163 SQLSTATE: 42000 (ER_TABLE_CANT_HANDLE_BLOB)
Сообщение: используемый тип таблицы не поддерживает столбцы BLOB / TEXT
Ошибка: 1164 SQLSTATE: 42000 (ER_TABLE_CANT_HANDLE_AUTO_INCREMENT)
Сообщение: используемый тип таблицы не поддерживает AUTO_INCREMENT столбцы
Ошибка: 1165 SQLSTATE: HY000 (ER_DELAYED_INSERT_TABLE_LOCKED)
Сообщение: INSERT DELAYED не может использоваться с таблицей "% s", потому что это заблокирован с помощью LOCK TABLES
Ошибка: 1166 SQLSTATE: 42000 (ER_WRONG_COLUMN_NAME)
Сообщение: неправильное имя столбца "% s"
Ошибка: 1167 SQLSTATE: 42000 (ER_WRONG_KEY_COLUMN)
Сообщение: используемый механизм хранения не может индексировать столбец "% s"
Ошибка: 1168 SQLSTATE: HY000 (ER_WRONG_MRG_TABLE)
Сообщение: Невозможно открыть базовую таблицу, которая отличается определен, не относится к MyISAM или не существует
Ошибка: 1169 SQLSTATE: 23000 (ER_DUP_UNIQUE)
Сообщение: Невозможно записать из-за уникального ограничения в таблицу '% s'
Ошибка: 1170 SQLSTATE: 42000 (ER_BLOB_KEY_WITHOUT_LENGTH)
Сообщение: столбец BLOB / TEXT '% s' используется в ключевой спецификации без длина ключа
Ошибка: 1171 SQLSTATE: 42000 (ER_PRIMARY_CANT_HAVE_NULL)
Сообщение: Все части ПЕРВИЧНОГО КЛЮЧА не должны быть ПУСТО (NOT NULL); если тебе надо NULL в ключе, используйте UNIQUE вместо
Ошибка: 1172 SQLSTATE: 42000 (ER_TOO_MANY_ROWS)
Сообщение: Результат состоял из более чем одной строки
Ошибка: 1173 SQLSTATE: 42000 (ER_REQUIRES_PRIMARY_KEY)
Сообщение: для этого типа таблицы требуется первичный ключ
Ошибка: 1174 SQLSTATE: HY000 (ER_NO_RAID_COMPILED)
Сообщение: эта версия MySQL не скомпилирована с поддержкой RAID
Ошибка: 1175 SQLSTATE: HY000 (ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE)
Сообщение: вы используете режим безопасного обновления и пытались обновить таблица без WHERE, использующая столбец KEY
Ошибка: 1176 SQLSTATE: 42000 (ER_KEY_DOES_NOT_EXITS)
Сообщение: ключ "% s" не существует в таблице "% s"
Ошибка: 1177 SQLSTATE: 42000 (ER_CHECK_NO_SUCH_TABLE)
Сообщение: Не могу открыть стол
Ошибка: 1178 SQLSTATE: 42000 (ER_CHECK_NOT_IMPLEMENTED)
Сообщение: механизм хранения для таблицы не поддерживает% s
Ошибка: 1179 SQLSTATE: 25000 (ER_CANT_DO_THIS_DURING_AN_TRANSACTION)
Сообщение: Вам не разрешено выполнять эту команду в сделка
Ошибка: 1180 SQLSTATE: HY000 (ER_ERROR_DURING_COMMIT)
Сообщение: Ошибка% d во время COMMIT
Ошибка: 1181 SQLSTATE: HY000 (ER_ERROR_DURING_ROLLBACK)
Сообщение: Ошибка% d во время ОТКАТА
Ошибка: 1182 SQLSTATE: HY000 (ER_ERROR_DURING_FLUSH_LOGS)
Сообщение: Ошибка% d во время FLUSH_LOGS
Ошибка: 1183 SQLSTATE: HY000 (ER_ERROR_DURING_CHECKPOINT)
Сообщение: Получена ошибка% d во время CHECKPOINT
Ошибка: 1184 SQLSTATE: 08S01 (ER_NEW_ABORTING_CONNECTION)
Сообщение: Прерванное соединение% ld с базой данных: пользователь '% s': узел '% s': '% s' (% s)
Ошибка: 1185 SQLSTATE: HY000 (ER_DUMP_NOT_IMPLEMENTED)
Сообщение: механизм хранения для таблицы не поддерживает двоичный свалка стола
Ошибка: 1186 SQLSTATE: HY000 (ER_FLUSH_MASTER_BINLOG_CLOSED)
Сообщение: Бинлог закрыт, не удается СБРОСИТЬ МАСТЕР
Ошибка: 1187 SQLSTATE: HY000 (ER_INDEX_REBUILD)
Сообщение: Не удалось восстановить индекс выгруженной таблицы "% s"
Ошибка: 1188 SQLSTATE: HY000 (ER_MASTER)
Сообщение: Ошибка от мастера: '% s'
Ошибка: 1189 SQLSTATE: 08S01 (ER_MASTER_NET_READ)
Сообщение: чистая ошибка чтения от мастера
Ошибка: 1190 SQLSTATE: 08S01 (ER_MASTER_NET_WRITE)
Сообщение: чистая ошибка записи в мастер
Ошибка: 1191 SQLSTATE: HY000 (ER_FT_MATCHING_KEY_NOT_FOUND)
Сообщение: не удается найти индекс FULLTEXT, соответствующий списку столбцов
Ошибка: 1192 SQLSTATE: HY000 (ER_LOCK_OR_ACTIVE_TRANSACTION)
Сообщение: Невозможно выполнить данную команду, потому что у вас есть активный заблокированные таблицы или активная транзакция
Ошибка: 1193 SQLSTATE: HY000 (ER_UNKNOWN_SYSTEM_VARIABLE)
Сообщение: Неизвестная системная переменная "% s"
Ошибка: 1194 SQLSTATE: HY000 (ER_CRASHED_ON_USAGE)
Сообщение: Таблица "% s" помечена как поврежденная и должна быть восстановлена
Ошибка: 1195 SQLSTATE: HY000 (ER_CRASHED_ON_REPAIR)
Сообщение: Таблица "% s" помечена как аварийная и последняя (автоматическая?) ремонт не удался
Ошибка: 1196 SQLSTATE: HY000 (ER_WARNING_NOT_COMPLETE_ROLLBACK)
Сообщение: некоторые нетранзакционные измененные таблицы не могут быть свернуты назад
Ошибка: 1197 SQLSTATE: HY000 (ER_TRANS_CACHE_FULL)
Сообщение: транзакция с несколькими операциями требует более 'max_binlog_cache_size' байтов памяти; увеличить этот mysqld переменная и попробуйте еще раз
Ошибка: 1198 SQLSTATE: HY000 (ER_SLAVE_MUST_STOP)
Сообщение: Эта операция не может быть выполнена с работающим ведомым устройством; сначала запустите STOP SLAVE
Ошибка: 1199 SQLSTATE: HY000 (ER_SLAVE_NOT_RUNNING)
Сообщение: для этой операции требуется работающее ведомое устройство; настроить раб и делаем START SLAVE
MariaDB - База знаний MariaDB
MariaDB разделяет коды ошибок с MySQL, а также добавляет ряд новых кодов ошибок, специфичных для MariaDB.
Пример кода ошибки следующий:
ВЫБРАТЬ * ИЗ x; ОШИБКА 1046 (3D000): база данных не выбрана
Содержание
- Общие коды ошибок MariaDB / MySQL
- Коды ошибок, характерные для MariaDB
Ошибка возвращает три части информации:
- Числовой код ошибки, в данном случае
1046
. Коды ошибок от 1900 и выше относятся к MariaDB, а коды ошибок от 1000 до 1800 используются MySQL и MariaDB. - Значение SQLSTATE, состоящее из пяти символов, в данном случае
3D000
. Эти коды являются стандартными для ODBC и ANSI SQL. Когда MariaDB не может выделить стандартный код SQLSTATE, используется общийHY000
или общая ошибка. - Строка с описанием ошибки, в данном случае
База данных не выбрана
.
Новые коды ошибок постоянно добавляются по мере добавления новых функций. Полный список см. В файле sql / share / errmsg-utf8.txt
, а также include / mysqld_error.h
в каталоге сборки, созданном инструментом comp_err
. Кроме того, инструмент perror может использоваться для получения сообщения об ошибке, связанного с заданным кодом ошибки.
Общие коды ошибок MariaDB / MySQL
Коды ошибок, характерные для MariaDB
Комментарии
Содержимое, воспроизводимое на этом сайте, является собственностью соответствующих владельцев. и этот контент не проверяется заранее MariaDB.Мнения, информация и мнения выраженные в этом содержании, не обязательно представляют собой таковые из MariaDB или любой другой стороны.
.