FAQ

FTP/SSH (0)

Ошибки базы данных

  • Duplicate entry '1254' for key
  • Ошибки при работе с таблицей b_search_content_stem
  • Got error 28 from table handler
  • Out of memory; restart server and try again (needed XXXXX bytes)
  • DB query error. Please try later
  • Access denied for user: ' user @%' to database 'dab_test'
  • Out of range value adjusted for column 'USER_ID' или Incorrect integer value: '' for column 'SESS_SESSION_ID'
  • Server shutdown in progress
  • Неправильно сортируются элементы в списках
  • При установке на Oracle выдает следующую ошибку: ORA-01704: string literal too long
  • При переносе на другой хостинг: "#1064 - You have an error in your SQL syntax... 'DEFAULT CHARSET=..."
  • Не отвечает сервер при сохранении данных формы под MSSQL
  • MySQL server has gone away или Lost connection to server during query

  • Duplicate entry '1254' for key
    Причина возникшей проблемы в том, что при использовании в MySQL таблиц типа MyISAM
    возможна ситуация когда в таблице ломается индекс. Ошибка эта связана исключительно
    с особенностями работы MySQL с таблицами типа MyISAM.
    При заходе на сайт получаю ошибку [Duplicate entry '1254' for key 1] что делать и как восстановить работоспособность сайта?
    Признаками подобной проблемы можно считать также следующие ошибки:
    [Can't open file: '<ИМЯ ТАБЛИЦЫ>.MYD'. (errno: 144)]
    [Can't open file: '<ИМЯ ТАБЛИЦЫ>.MYI'. (errno: 145)]

    Ответ

    Причина возникшей проблемы в том, что при использовании в MySQL таблиц типа MyISAM
    возможна ситуация когда в таблице ломается индекс. Ошибка эта связана исключительно
    с особенностями работы MySQL с таблицами типа MyISAM.

    Исправить это можно следующими путями:

    1) По SSH (если у вас есть доступ).
       1.1) Соединиться с сервером на котором хоститься ваш сайт по SSH.
       1.2) Используя утилиту mysql соединиться с базой MySQL:
           
        mysql -u <ПОЛЬЗОВАТЕЛЬ> -h <IP СЕРВЕРА> -P 3306 -p <ИМЯ ДАЛЬНЕЙ БАЗЫ>
        Enter password: <ПАРОЛЬ>
        

       1.3) Ввести SQL команду:
           
        REPAIR TABLE <ИМЯ ТАБЛИЦЫ>;
        

       Имя таблицы вы можете узнать из текста ошибки на экране.

    2) Средствами самого сайта.
    Для начала вам необходимо зайти на сайт полностью отключив статистику. Сделать это можно следующим образом:
       2.1) Наберите следующий адрес в браузере:
           
        http://<ВАШ_САЙТ>/?no_keep_statistic_<ЛИЦЕНЗИОННЫЙ КЛЮЧ>=Y&
        no_agent_statistic_<ЛИЦЕНЗИОННЫЙ КЛЮЧ>=Y
        

       где
       <ВАШ_САЙТ> - домен вашего сайта,
       <ЛИЦЕНЗИОННЫЙ КЛЮЧ> полученный вами при регистрации демо версии либо при покупке системы.
       После того как вы зайдете на сайт с вышеописанными параметрами в течении вашей сессии статистика
       не будет работать (пока не закроете окно браузера).
       2.2) В административном разделе в пункте меню "SQL запрос" выполните следующую SQL команду:
           
        REPAIR TABLE <ИМЯ ТАБЛИЦЫ>
        

       Имя таблицы вы можете узнать из текста ошибки на экране.

    Для исключения подобной ситуации в будущем вы можете перейти на другой тип таблиц - InnoDB.
    Данный тип является несколько более медленным чем MyISAM, но при этом значительно надежнее.
    Поменять тип таблиц на InnoDB можно сделать следующим образом:
    1) В административном меню "SQL запрос" выполнить команду:
           
        SHOW TABLES
        

    2) В результате вы получите список таблиц. Для каждой из которых необходимо выполнить команду:
           
        ALTER TABLE <ИМЯ ТАБЛИЦЫ>, type=InnoDB
        

    3) После перевода таблиц вашей базы в InnoDB добавьте пожта в файл
    /bitrix/php_interface/dbconn.php нижеследующий код:
           
        define("MYSQL_TABLE_TYPE", "InnoDB");
       



    Ошибки при работе с таблицей b_search_content_stem
    Для решения проблемы в окне SQL-запроса выполните
       repair table b_search_content_stem 
    При работе различного функционала системы возникают ошибки, связанные с таблицей b_search_content_stem:
       Can't open file: 'b_search_content_stem.MYD'. (errno: 145)
       Can't open file: 'b_search_content_stem.MYI' (errno: 145)
       Incorrect key file for table './xxxxxx/b_search_content_stem.MYI'; try to repair it
       Incorrect key file for table 'b_search_content_stem'; try to repair it

    Ответ

    Для решения проблемы в окне SQL-запроса выполните
       repair table b_search_content_stem  

    Чтобы увеличить надежность таблицы, Вы можете перевести ее в формат InnoDB вместо MyISAM (если эта возможность поддерживается на хостинге).
    Для этого выполните (после восстановления таблицы)
       alter table b_search_content_stem, type=InnoDB



    Got error 28 from table handler
    Это сообщение об ошибке означает, что не осталось свободного дискового пространства для работы MySQL. При работе системы получаем сообщение об ошибке MySQL:
       [Got error 28 from table handler]

    Ответ

    Это сообщение об ошибке означает, что не осталось свободного дискового пространства для работы MySQL.
    Обратитесь к системному администратору Вашего сервера для решения проблемы.

    Out of memory; restart server and try again (needed XXXXX bytes)
    Эта ошибка говорит о том, что MySQL-серверу не хватает памяти на выборку данных. Достаточно часто такая проблема решается перезагрузкой веб-сервера и MySQL. При работе системы получаем сообщение об ошибке MySQL:
       [Out of memory; restart server and try again (needed XXXXX bytes)]

    Ответ

    Эта ошибка говорит о том, что MySQL-серверу не хватает памяти на выборку данных. Достаточно часто такая проблема решается перезагрузкой веб-сервера и MySQL.

    Также рекоммендуем вам установить следующие значения для MySQL в файле my.cnf:

       
    key_buffer = 128K
    max_allowed_packet = 8M
    table_cache = 4
    sort_buffer_size = 128K
    read_buffer_size = 128K
    read_rnd_buffer_size = 128K
    net_buffer_length = 128K
    thread_stack = 128K

      
    Если какие-то из рекомендуемых значений меньше установленных сейчас, оставьте эти значения прежними.



    DB query error. Please try later
    Для решения проблемы в файле /bitrix/php_interface/dbconn.php установите значение переменной $DBDebug в значение true. При установке системы возникает следующая ошибка:
       [DB query error. Please try later.]

    Ответ

    Для решения проблемы в файле /bitrix/php_interface/dbconn.php установите значение переменной $DBDebug в значение true.
    После этого обновите страницу: на экране появится текст ошибки. Передайте его в службу нашу поддержки.



    Access denied for user: ' user @%' to database 'dab_test'
    Начиная с 4-ой версии MySQL права на LOCK назначаются отдельно. При установке системы выводится сообщение об ошибке MySQL:
       MySQL Query Error: LOCK TABLE b_agent WRITE[Access denied for user: ' user @%' to database 'dab_test']

    Ответ

    Начиная с 4-ой версии MySQL права на LOCK назначаются отдельно. Необходимо дополнительно назначить права на LOCK TABLES для данного пользователя базы данных.



    Out of range value adjusted for column 'USER_ID' или Incorrect integer value: '' for column 'SESS_SESSION_ID'
    Скорее всего, у вас установлен MySQL версии 5.x
    Вам необходимо из значения для переменной sql-mode убрать STRICT_TRANS_TABLES.
    При работе системы получаем сообщение об ошибке MySQL:

       
    MySQL Query Error: INSERT INTO b_stat_session(GUEST_ID, NEW_GUEST, USER_ID, USER_AUTH, ...) VALUES ('1', 'N', '', 'N', ...)
    [Out of range value adjusted for column 'USER_ID' at row 1]


       
    MySQL Query Error: INSERT INTO b_stat_session_data(DATE_FIRST, DATE_LAST, GUEST_MD5, SESS_SESSION_ID, SESSION_DATA) VALUES (now(),now(),
      '76d5f8d2a62a729069c568492da19fdf','',SESS_REQUEST_UR_GRABBER_STOP_TIME";a:1:{i:0;i:121;}s:27:"ACTIVITY_EXCEEDING_NOTIFIED";N;}')
    [Incorrect integer value: '' for column 'SESS_SESSION_ID' at row 1]

    Ответ

    Скорее всего, у вас установлен MySQL версии 5.x
    Вам необходимо из значения для переменной sql-mode убрать STRICT_TRANS_TABLES.

    1 вариант: изменение конфигурации сервера через my.cnf. Например,
        sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    вместо
        sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

    2 вариант: если у Вас нет доступа к конфигурационным файлам MySQL-сервера, попробуйте в /bitrix/php_interface/after_connect.php добавить строку:
       $DB->Query("set sql_mode=''")

    Подробнее на официальном сайте:
    http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html



    Server shutdown in progress
    Часто такая ошибка возникает, когда на сервере установлено ограничение на ресурсы, отводимое операционной системой на тот или иной процесс Часто такая ошибка возникает, когда на сервере установлено ограничение на ресурсы, отводимое операционной системой на тот или иной процесс. Вам нужно обратиться к системному администратору хостинга с тем, чтобы он дал ответ - по какой причине процесс mysql-сервера перезапускается.

    Неправильно сортируются элементы в списках
    Возможны разные варианта проблемы:
    1. У вас на хостинге установлен MySQL 4.1.21, для которой характерно наличие данной ошибки (http://bugs.mysql.com/bug.php?id=21456).
    2. Проверьте значения, отвечающие за кодировку БД: character_set, или, для
    версий MySQL 4.1 и выше, character_set_server и character_set_database.

    Возможны разные варианты проблемы:
    1. У вас на хостинге установлен MySQL 4.1.21, для которой характерно наличие данной ошибки (http://bugs.mysql.com/bug.php?id=21456).
    Обратитесь за решением данной проблемы к администратору хостинга.

    2. Проверьте значения, отвечающие за кодировку БД: character_set, или, для
    версий MySQL 4.1 и выше, character_set_server и character_set_database. При
    использовании кодировки, отличной от cp1251 (кириллица), например, latin1,
    сортировка по строкам, содержащим символы кириллицы, будет производиться
    некорректно. Проверить это можно выполнив запрос к БД    show varables like 'char%';
    Для решения проблемы установить в файле /bitrix/php_interface/after_connect следующие строки
    @mysql_query("SET collation_connection=cp1251_general_ci", $DB->db_Conn);
    @mysql_query("SET character_set_results=cp1251", $DB->db_Conn);
    @mysql_query("SET character_set_client=cp1251", $DB->db_Conn);
    @mysql_query("SET collation_database=cp1251_general_ci", $DB->db_Conn);
    @mysql_query("SET collation_server=cp1251_general_ci", $DB->db_Conn);
    @mysql_query("SET character_set_server=cp1251_general_ci", $DB->db_Conn);
    @mysql_query("SET character_set_database=cp1251_general_ci", $DB->db_Conn);

    Если указанные действия не помогают, то выполните перенос системы (установку) еще раз, создавая дамп БД в кодировке cp1251 и создав новую БД тоже в кодировке  cp1251.


    При установке на Oracle выдает следующую ошибку: ORA-01704: string literal too long
    Скорее всего, Вы устанавливаете систему при установленной кодировке UTF8 в Oracle. Скорее всего, Вы устанавливаете систему при установленной кодировке UTF8 в Oracle.
    Установите значение параметра NLS_LANG, например, в AMERICAN_AMERICA.CL8MSWIN1251
    Значение параметра Вы можете прописать в реесте Windows, в ветке HLM/SOFTWARE/ORACLE


    При переносе на другой хостинг: "#1064 - You have an error in your SQL syntax... 'DEFAULT CHARSET=..."
    Проблема возникает в связи с тем, что дамп БД создается в MySQL версии 4.1
    или выше, а устанавливается на более ранней версии MySQL, которая не
    поддерживает объявление кодировки для таблицы.
    Проблема возникает в связи с тем, что дамп БД создается в MySQL версии 4.1
    или выше, а устанавливается на более ранней версии MySQL, которая не
    поддерживает объявление кодировки для таблицы.
    Для решения проблемы воспользуйтесь опцией mysqldump: --compatible=mysql40


    Не отвечает сервер при сохранении данных формы под MSSQL
    Проблема часто возникает из за низкого значения параметра PHP odbc.defaultlrl, по умолчанию равного 4096. Проблема часто возникает из за низкого значения параметра PHP odbc.defaultlrl, по умолчанию равного 4096.
    Вам необходимо существенно увеличить его, например, до 64000.

    MySQL server has gone away или Lost connection to server during query
    В процессе выполнения запроса сервер оборвал соединение. Проблема связана с настройкой MySQL и часто возникает когда на сервере установлен небольшой лимит времени на соединение. В процессе выполнения запроса сервер оборвал соединение. Проблема связана с настройкой MySQL и часто возникает когда на сервере установлен небольшой лимит времени на соединение.
    Установите в bitrix/php_interface/after_connect.php:
       $DB->Query("SET wait_timeout=28800");
    Если проблема останется - обратитесь к администратору хостинга.

    Дополнительная информация:
    http://dev.mysql.com/doc/refman/5.0/en/gone-away.html
    http://www.mysql.ru/docs/man/Gone_away.html