Перенос базы - проблема с кодировкой

Автор MrBean, 29 октября 2007, 17:09:30

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

MrBean

Доброго времени суток! Вот такая у меня проблема. Перехожу с другого движка (PHP-Nuke). В старой базе используется кодировка Windows 1251. В новой базе используется кодировка UTF-8 (требование администратора). Кактим образом можно перевести старую БД в новую кодировку?

Kirill

Для начала попробовать перевести ее в одну кодировку. Например php-nuke в UTF8 или сначала локально сделать в Win1251 SMF, а потом на юникод перевести

MrBean

Ну я и спрашиваю, каким образом это можно сделать? При попытке редактирования SQL файла то при импорте в базу данных он выдает ошибку :(

Avdenago

1. Какую ошибку?

2. Дамп бд у вас читаем?

MrBean

Для получения дампа использую скрипт "Sypex Dumper Lite 1.0.8". После сохранения в .SQL редактирую файл, заменяю все значения cp_1251 на utf8 и сохраняю файл в кодировке UTF-8. При восстановлении БД из этого файла возникает ошибка:
ЦитироватьВозникла ошибка!
Неправильный запрос.
Duplicate entry '' for key 1 (256)"
Если восстанавливаю базу из этого же файла, не редактируя его предварительно - все проходит нормально.

Mavn

ЦитироватьВозникла ошибка!
Неправильный запрос.
Duplicate entry '' for key 1 (256)"

http://www.simplemachines.ru/index.php/topic,1428.0.html
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Kirill

у тебя размер индексной строки выходит за длину индекса строки (256 символов). Надо уменьшать вдвое размер строкового поля.

MrBean

Цитата: Kirill от 30 октября 2007, 10:59:54
Надо уменьшать вдвое размер строкового поля.
А вот можно с этого места поподробней? :)

Kirill

Смотришь SQL код, который создает таблицы. Смотришь что там создается текстовое поле с размером больше 128 и используется в индексе. Ты размер ограничиваешь 128 или даже 127. Так как в юникоде на один символ два байта.

Mavn

Цитата: Kirill от 30 октября 2007, 11:23:08
Смотришь SQL код, который создает таблицы. Смотришь что там создается текстовое поле с размером больше 128 и используется в индексе. Ты размер ограничиваешь 128 или даже 127. Так как в юникоде на один символ два байта.
вообще править таблицу не нужно. у него проблема с поисковыми индексами по ссылке что я дал выше написано как исправить ошибку.
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

MrBean

Цитата: Mavn от 30 октября 2007, 11:29:10
вообще править таблицу не нужно. у него проблема с поисковыми индексами по ссылке что я дал выше написано как исправить ошибку.
При чем тут поисковые индексы, если эта ошибка вылазит еще на базе от PHP-Nuke?
2Kirill Это чего, все вручную надо пересмотреть? А нету стандартных программ/скриптов конвертеров баз данных?

Mavn

а ты сначала проверь а потом говори причем...
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Kirill

2 MrBean,
Как причем? Знаком с реляционными базами данных? Так вот на них дествуют свои ограничения и не важно какой движок

MrBean

Цитата: Mavn от 30 октября 2007, 15:23:47
а ты сначала проверь а потом говори причем...
По ссылке пример чистки БД от SMF. А мне для начала надо с Нюковской разобраться. Структура то у них немного разная...
2Kirill С базами данных я знаком только с практической стороны :( Т.е. постольку-поскольку...

Mavn

Цитата: MrBean от 30 октября 2007, 16:48:07
По ссылке пример чистки БД от SMF. А мне для начала надо с Нюковской разобраться. Структура то у них немного разная...
2Kirill С базами данных я знаком только с практической стороны :( Т.е. постольку-поскольку...
Хм я что должен догадаться что у вас такая ошибка на нюковской бд лезет? уточнения не было...
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.