Пропустить

Переезд с MySQL 4 на MySQL 5

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
Свернуть Развернуть Правила форума Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).

Переезд с MySQL 4 на MySQL 5

Сообщение Buddy » 08.10.2007 16:09

Хостер произвёл перенос баз данных с MySQL 4 на MySQL 5. После этого с форумом на движке phpBB 3.0.RC5 возникают следующие ошибки:

при создании нового топика
Общая РѕС?РёР±РєР°
SQL ERROR [ mysql4 ]

Field 'topic_last_poster_name' doesn't have a default value [1364]

SQL

INSERT INTO phpbb_topics (topic_poster, topic_time, forum_id, icon_id, topic_approved, topic_title, topic_first_poster_name, topic_first_poster_colour, topic_type, topic_time_limit, topic_attachment) VALUES (2, 1191841461, 25, 0, 1, 'New test topic', 'Admin', 'AA0000', 0, 0, 0)

BACKTRACE

FILE: includes/db/mysql.php
LINE: 158
CALL: dbal->sql_error()

FILE: includes/functions_posting.php
LINE: 1792
CALL: dbal_mysql->sql_query()

FILE: posting.php
LINE: 996
CALL: submit_post()


при ответе в тему
SQL ERROR [ mysql4 ]

Field 'post_edit_reason' doesn't have a default value [1364]

SQL

INSERT INTO phpbb_posts (forum_id, poster_id, icon_id, poster_ip, post_time, post_approved, enable_bbcode, enable_smilies, enable_magic_url, enable_sig, post_username, post_subject, post_text, post_checksum, post_attachment, bbcode_bitfield, bbcode_uid, post_postcount, post_edit_locked, topic_id) VALUES (25, 2, 0, '127.0.0.1', 1191841619, 1, 1, 1, 1, 1, '', 'Re: Test', 'Test reply.', '577dd9ad8340a6030d904b56aa2ee71c', 0, '', '7c801', 1, 0, 141)

BACKTRACE

FILE: includes/db/mysql.php
LINE: 158
CALL: dbal->sql_error()

FILE: includes/functions_posting.php
LINE: 1813
CALL: dbal_mysql->sql_query()

FILE: posting.php
LINE: 996
CALL: submit_post()


Сообщения соответственно не отправляются. Возможно есть и другие ошибки, но это то, что трудно не заметить.

При попытке залить в MySQL старые/новые бэкапы, тексты сообщений на русском превращаются в вопросы (?????), всё остальное (включая заголовки топиков и элементы меню/управления форума) отображаются на русском нормально. Текст превращается в вопросы при заливке бэкапов, т.е. вопросы уже в самой базе данных.

MySQL-кодировка: Windows Cyrillic (cp1251). Да, я знаю, что должно быть UTF-8, но на MySQL 4 тоже была cp1251, и всё работало нормально.

В общем, приму любые советы по тому, как мне восстановить работоспособность форумов! Включая и то, как сменить кодировку БД на UTF-8.

P.S.
На том же MySQL у меня есть форум phpBB 2. Так там тоже возникли проблемы - не отправляются сообщения, сообщения приписываются не тем авторам и т.п. Просто форум на phpBB 3.0.RC5 для меня сейчас приоритетнее.

Buddy
phpBB 1.2.1
 
Сообщения: 20
Зарегистрирован: 28.03.2007 17:19
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение rxu » 08.10.2007 16:31

Попробуйте сделать следующее:
1) Полный бэкап БД.
2) Экспортируйте только данные, без структуры.
3) Перекодируйте экспортированные данные в utf-8
4) Удалите все таблицы из БД.
5) Создайте таблицы в БД по схеме из файла install/schemas/mysql_41_schema.sql
6) Импортируйте ранее экспортированные и перекодированные в utf-8 данные в новую базу.
Изображение
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
 
Сообщения: 7314
Зарегистрирован: 12.05.2006 17:16
Откуда: Красноярск
Благодарил (а): 2 раз.
Поблагодарили: 251 раз.

Сообщение Buddy » 10.10.2007 7:58

В общем, именно указанным способом сделать не удалось... Я порылся в бэкапе и обнаружил, что почему-то именно данные одной таблицы *_posts были в неверной кодировке. Я её отдельно перекодировал и перезалил. Ошибки "doesn't have a default value" я устранил с помощью этого патча - http://www.ktuk.net/phpBB3/viewtopic.php?f=32&t=2806. И теперь вроде бы форум работает нормально, но...

1. При восстановлении форума из бэкапа, сделанного в админке, возникает ошибка "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; TRUNCATE TABLE phpb' at line 1 [1064]".

2. У меня на основном сайте есть "список последних тем форума". Теперь после всех этих манипуляций русские названия топиков в этом списке отображаются вопросами (?????), хотя и форум и сам сайт в UTF-8, и , соответственно, до переезда всё работало правильно.

Я так понимаю, что "default value" я подлечил, но сами данные остались непереконвертированными. Есть идеи как долечить? Сам я особо не разбираюсь в MySQL. Заранее спасибо!

Buddy
phpBB 1.2.1
 
Сообщения: 20
Зарегистрирован: 28.03.2007 17:19
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение rxu » 10.10.2007 15:11

Buddy
Что не удалось, почему не удалось (погода, давление, ветер) - непонятно. Сделали неизвестно как, получили неизвестно что, и спрашиваете, как это исправить.
Какой ответ думаете получить..? Вот именно.
Изображение
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
 
Сообщения: 7314
Зарегистрирован: 12.05.2006 17:16
Откуда: Красноярск
Благодарил (а): 2 раз.
Поблагодарили: 251 раз.

Сообщение Buddy » 10.10.2007 16:24

Вашим способом ошибка "#1064 - You have an error in your SQL syntax" возникает при импорте данных в пустые таблицы. То есть вообще нельзя было восстановить БД. А упомянутый патч я нашёл на phpbb.com, где его рекомендовал админ (http://www.phpbb.com/community/viewtopic.php?f=46&t=581650&p=3212815). Он и сработал, но, видимо, без учёта алфавитов отличных от латиницы.

Buddy
phpBB 1.2.1
 
Сообщения: 20
Зарегистрирован: 28.03.2007 17:19
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение rxu » 10.10.2007 16:44

Buddy писал(а):#1064 - You have an error in your SQL syntax

А дальше? В каком именно месте ошибка?
Изображение
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
 
Сообщения: 7314
Зарегистрирован: 12.05.2006 17:16
Откуда: Красноярск
Благодарил (а): 2 раз.
Поблагодарили: 251 раз.

Сообщение Buddy » 10.10.2007 16:49

Ошибка

SQL-запрос:

INSERT INTO phpbb_bots( bot_id, bot_active, bot_name, user_id, bot_agent, bot_ip )
VALUES ( 1, 1, 'AdsBot [Google]', 3, 'AdsBot-Google', '' ) ,

...далее перечисление остальных ботов...

( 58, 1, 'FeedBurner [Bot]', 90, 'FeedBurner/', '' ) , ( 59, 1, 'Bloglines [Bot]', 91, 'Bloglines', '' ) ;

TRUNCATE TABLE phpbb

Ответ MySQL:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ';

TRUNCATE TABLE phpb' at line 1

Buddy
phpBB 1.2.1
 
Сообщения: 20
Зарегистрирован: 28.03.2007 17:19
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение rxu » 10.10.2007 17:03

Buddy писал(а):TRUNCATE TABLE phpbb

Это откуда? Вы экспортировали не только данные, но и структуру?

Добавлено спустя 8 минут 52 секунды:

Указанный вами скрипт не производит никаких операций с содержимым БД, а только генерирует её новую схему - по сути, это то же самое, что содержится в файле install/schemas/mysql_41_schema.sql, о котором я писАл выше.
Изображение
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
 
Сообщения: 7314
Зарегистрирован: 12.05.2006 17:16
Откуда: Красноярск
Благодарил (а): 2 раз.
Поблагодарили: 251 раз.

Сообщение Buddy » 10.10.2007 17:19

Нет, экспортировал только данные!

Добавлено спустя 4 минуты 56 секунд:

В общем, получается в этом и суть. Только при помощи этого скрипта я смог восстановить работоспособность форума, поскольку не пришлось переливать сами данные. Тем не менее, не всё так гладко, и что-то осталось не учтённым - что именно я не понимаю.

Buddy
phpBB 1.2.1
 
Сообщения: 20
Зарегистрирован: 28.03.2007 17:19
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение rxu » 10.10.2007 17:24

Buddy писал(а): что-то осталось не учтённым - что именно я не понимаю.

Вы указывали, что кодировка ранее была cp1251. В этом и есть проблема.
Изображение
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
 
Сообщения: 7314
Зарегистрирован: 12.05.2006 17:16
Откуда: Красноярск
Благодарил (а): 2 раз.
Поблагодарили: 251 раз.

Сообщение Buddy » 10.10.2007 17:43

Да, но скрипт же всё и переписал. :)

Buddy
phpBB 1.2.1
 
Сообщения: 20
Зарегистрирован: 28.03.2007 17:19
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение rxu » 10.10.2007 17:45

Тот скрипт не перекодирует данные. Только изменяет схему БД (ещё раз, уже говорил об этом).
Изображение
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
 
Сообщения: 7314
Зарегистрирован: 12.05.2006 17:16
Откуда: Красноярск
Благодарил (а): 2 раз.
Поблагодарили: 251 раз.

Сообщение Buddy » 10.10.2007 17:54

Хмм, а я понял, что и раньше данные были в ut8, но сами схемы были представлены как содержащие cp1251, и скрипт перевёл это представление в ut8.

Так и какие же тогда есть решения?

Buddy
phpBB 1.2.1
 
Сообщения: 20
Зарегистрирован: 28.03.2007 17:19
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение rxu » 10.10.2007 17:56

Если сейчас у вас всё в utf-8, то новые темы и сообщения должны отображаться нормально. Проверьте.
Изображение
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
 
Сообщения: 7314
Зарегистрирован: 12.05.2006 17:16
Откуда: Красноярск
Благодарил (а): 2 раз.
Поблагодарили: 251 раз.

Сообщение Buddy » 10.10.2007 18:04

Я и писал раньше, что сейчас форум работает нормально! Но теперь невозможно восстановить форум из админки - только полный бэкап БД работает, плюс на сайте есть модуль, который берёт из базы список последних тем, но русские названия теперь отображает не верно. :roll:

Добавлено спустя 3 минуты 40 секунд:

То есть получается, что существует несколько разных utf8? Или раньше данные на самом деле были в cp1251, но почему тогда раньше форум работал нормально во всех смыслах?

Buddy
phpBB 1.2.1
 
Сообщения: 20
Зарегистрирован: 28.03.2007 17:19
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

След.

Вернуться в Поддержка phpBB 3.0.х

 

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

Бессрочный конкурс phpBB-ориентированных материалов
FastVPS — надёжный и доступный хостинг для phpBB
Место для вашей рекламы