1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

1.1.3 Ошибка при регистрации пользователя

Тема в разделе "Для новичков", создана пользователем КВН, 24.11.2012.

Загрузка
  1. КВН

    КВН Новичок

    Регистрация:
    24.11.12
    Сообщения:
    5
    Симпатии:
    0
    Версия XF:
    1.1.3
    Добрый день всем

    Пару дней назад установил форум версии 1.1.2 и сегодня обновил ее до 1.1.3.
    И при регистрации нового пользователя пишет ошибку "На сервере произошла ошибка. Пожалуйста, попробуйте позже"
    В логе пишет следующее "Zend_Db_Statement_Mysqli_Exception: Mysqli statement execute error : Incorrect string value: '\xD0 \xD0\x92\xD0\x9D...' for column 'username' at row 1 - library/Zend/Db/Statement/Mysqli.php:214

    Сгенерирована пользователем: Неизвестная учётная запись, 8 мин. назад"
    В результате моих тестов выяснилось что если ник пользователя начинается с русской буквы "К" то всегда такая ошибка.
    На это форуме я для проверки зарегистрировался с ником начинающимся на К и все прошло нормально.
    Может кто знает причину этой ошибки?
     
  2. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Проблема настройки сервера mysql. Сказать что именно подкрутить - не могу.
    Ибо в последних версиях и с настройкой кодировки по умолчанию utf8 - все нормально (вообще-то в последних версиях mysql utf8 и считается кодировкой по умолчанию)
    Но в других случаях могут вылазить бока (или кодировка соединения или еще что)
     
  3. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Кодировка таблиц и полей не utf8. Оттуда и проблема. Измените кодировку базы данных по умолчанию, затем измените кодировку и сравнение таблиц и полей в них.
     
  4. КВН

    КВН Новичок

    Регистрация:
    24.11.12
    Сообщения:
    5
    Симпатии:
    0
    Версия XF:
    1.1.3
    Спасибо за ответы.
    Серверные переменные и настройки базы.

    character set client
    utf8
    (Глобальное значение)
    cp1251
    character set connection
    utf8
    (Глобальное значение)
    cp1251
    character set database
    cp1251
    character set filesystem
    binary
    character set results
    utf8
    (Глобальное значение)
    cp1251
    character set server
    cp1251
    character set system
    utf8
    character sets dir
    /ch2/usr/local/mysql55/share/mysql/charsets/
    collation connection
    utf8_unicode_ci
    (Глобальное значение)
    cp1251_general_ci
    collation database
    cp1251_general_ci
    collation server
    cp1251_general_ci

    и вот здесь есть еще надпись про cp1251

    [​IMG]Базы данных


    База данных [​IMG]Сравнение
    vh42034
    utf8_general_ci
    Всего: 1
    cp1251_general_ci


    Но я не знаю где это поправить

    И вот здесь я еще заменил cp1251 на utf8_general_ci

    [​IMG] Сравнение: utf8_general_ci




    но ошибка не исчезла все равно :(
    Жду ответа от техподдержки хостера может они чем помогут.
     
  5. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    КВН, все конечно хорошо, но Вы так скопировали настройки что вообще не понятно что к чему относится :(((
     
  6. КВН

    КВН Новичок

    Регистрация:
    24.11.12
    Сообщения:
    5
    Симпатии:
    0
    Версия XF:
    1.1.3
    Извиняюсь, попробую теперь изображениями вставить.

    [​IMG]

    Здесь я изменил с cp1251 на utf8_general_ci

    [​IMG]

    И настройки сервера.

    [​IMG]

    Пришел ответ от техподдержки зенона. Они мне советуют написать разработчикам чтобы те исправили форум. %)
     
  7. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Мега хостер :)
    Таких в сад надо посылать...
    Но если по существу попробуйте изменить кодировку базы данных на утф, а не только кодировки таблиц (хотя может и не помочь, если mysql сервер жестко настроен на cp1251)
     
  8. КВН

    КВН Новичок

    Регистрация:
    24.11.12
    Сообщения:
    5
    Симпатии:
    0
    Версия XF:
    1.1.3
    Я нигде не нашел больше настроек кодировки которые можно изменить на utf8, по крайней мере из phpmyadmin. Может есть другие способы командной строки например?
    А то какой хостер выясняется уже постфактум к сожалению.
     
  9. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Еще покажите таблицы и поля в них. Скорее всего, часть или все таблицы в кодировке 1251. Также в самих таблицах поля могут быть не в utf8. Т.е. настройки базы данных влияют только на новые таблицы, не меняя при этом существующие. То же самое относится и к настройкам таблицы, так как таблица может быть в одной кодировке, а отдельные поля - в другой. Если есть возможность, то лучше удалить таблицы и заново установить форум. Тогда настройки utf8 должны автоматически примениться, так как utf8 сейчас указана для базы данных. Ну и поля в них также должны иметь корректную кодировку. Если установить по новой нельзя, то сделайте бэкап базы, а затем попробуйте переконвертировать каждую таблицу с помощью команды:
    Код:
    ALTER TABLE `table_name` CONVERT TO CHARACTER SET 'utf8';
    Но это не всегда срабатывает, так как есть масса нюансов. В Вашем конкретном случае может и сработать. Если не сработает, придется восстанавливать из бэкапа. Ну а дальше уже думать, что и как делать.

    Ну и на закуску. Уж сильно смущает принудительное использование 1251 в настройках сервера. Т.е. не факт, что клиент, использующий кодировку соединения utf8 сможет корректно работать через эту гремучую смесь перекодировок. В идеале сервер тоже должен работать в utf8. Основная проблема тут в том, что 1251 - однобайтная кодировка, а utf8 - двухбайтная. Собственно, по этой причине ошибка у Вас возникает, так как данные кодируются и вместо символа в базу пытаются записаться кодированные данные, которые существенно увеличивают требуемый размер поля. Да при этом еще и вместо символа идет код, начинающийся со слеша, что фильтруется. В общем, получается каша, которую корректно сохранить и использовать затем нельзя. Наверняка еще и проблемы с сортировкой выползут, если их еще нет.

    В любом случае базу нужно приводить к utf8. Без этого корректно работать не будет.
     
    Oleg-2012 нравится это.
  10. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Есть свойства БД а не таблицы, там должен быть выбор кодировки (при условии что есть права на изменения), попробуйте изменить с 1251 на utf
     
    Oleg-2012 нравится это.
  11. КВН

    КВН Новичок

    Регистрация:
    24.11.12
    Сообщения:
    5
    Симпатии:
    0
    Версия XF:
    1.1.3
    Техподдержка опять посоветовала мне переписать код форума.
    И я просто сменил хостера понимая что нервы и время дороже.
    Всем спасибо за советы :)
     
  12. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Ну многим шаред хостерам выгоднее что-бы на их серверах базы были по максимуму в 1251 - расход дискового пространства значительно меньше :) Потому и советуют переписать код.
    Главное что проблема решилась, хоть и таким радикальным методом как переезд.
     
    Oleg-2012 нравится это.

Поделиться этой страницей