28 марта 2024, 20:08

Цитата дня:

UNIX не предназначен для ограждения своих пользователей от глупостей, поскольку это оградило бы их и от умных вещей. Дуг Гвин


Ошибки при импорте базы в MySQL

Автор STALKER_SLX, 21 октября 2017, 13:24

« предыдущая тема - следующая тема »

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

Вниз

STALKER_SLX

Здравствуйте, уважаемы форумчане!

Настраиваю веб-сервер на базе Ubuntu 16.04, на котором установлен MySQL 5.7.19.

Есть дамп базы сайта для Drupal версии 6 (судя по конфигу) в кодировке utf8.
Сайт и данный дамп точно были рабочими до меня (так на всякий случай).

Создаю новую базу в MySQL командой:
create database sanaciadb default character set utf8 collate utf8_general_ci;


Пытаюсь импортировать дамп базы:
mysql -u root -p sanaciadb < sanacia.sql

В итоге вылетает ошибка:
«ERROR 1366 (HY000) at line 1324: Incorrect string value: '\xCC\xE5\xE4\xEF\xEE\xEC...' for column 'title' at row 1»

В строке 1324 базы «sanacia.sql» содержится такой текст:
«INSERT INTO `menu_custom` VALUES ('menu-medhelp', 'Медпомощь', '');»


Подскажите, пожалуйста, что я делаю не так?! В каком направлении копать?!

П.С.: погулив немного на эту тему - внятных для себя ответов пока не получил.
Но понимаю, что проблема связанна именно с кодировкой.

Уваров А.С.

Далеко не факт, что исходная база именно utf-8, посмотрите на старом сервере кодировку и сопоставление для старой базы и создайте новую с такими-же параметрами.

STALKER_SLX

Так сложились обстоятельства, что старого сервера нет.
При просмотре содержимого данного дампа через «Notepad», везде указано значение «DEFAULT CHARSET=utf8».
Кроме того, сам дамп был сделан с помощью «phpMyAdmin SQL Dump -- version 2.6.1» - если это имеет какое-то значение в данной ситуации.
Есть ли какие-то другие пути решения данной задачи, кроме как связываться с создателем этого творения?!
Спасибо!

Уваров А.С.

Кроме кодировок таблиц есть еще кодировка самой базы и ее сопоставление. Скажем база в кодировке latin1 вполне может иметь внутри таблицы в utf-8, но если вы попытаетесь залить такой дамп в utf8 базу - получите крякозяблики.

В вашем случае можно попробовать удалить из дампа эту строку, а потом создать ее руками. Либо попробуйте утилиту Sypex Dumper, бесплатной версии вполне достаточно для ваших целей, нас она несколько раз выручала в аналогичных ситуациях, когда были чужие дампы и было совсем непонятно как их заливать.

STALKER_SLX

#4
20 декабря 2017, 21:50 Последнее редактирование: 20 декабря 2017, 21:52 от STALKER_SLX
Большое спасибо за помощь Андрею Уварову!

Не смотря на то, что прошло уже достаточно времени, все же, думаю, правильно будет отписаться по этой теме, чтобы другим было легче в будущем решать схожие вопросы.

После долгих мучений и ковыряний, выяснилось-таки, что некоторые строки в базе оказались проблемными, а сама же база имеет «стандартную» кодировку utf8_general_ci.

Прога «SypexDumper» действительно очень проста и удобная, но из коробки работает только (!!!) с PHP-5.x, т.к. разарбы похоже подзабили на ее доработку и обновление (последний релиз датируется 28.08.2013).

ОС Ubuntu 16.04 по умолчанию устанавливается и используется PHP-7.x (!!!), в связи с чем, нужна модификация файла «index.php». Для решения этой задачи на форуме программы «SypexDumper» был найден уже готовый переделанный файл -
https://sypex.net/forum/viewtopic.php?f=3&t=1433 ,

а точнее тут:
https://github.com/Beaten-Sect0r/yii2-core/blob/d8c5b56d7205be953b163bb0c8284608cd7ffa42/backend/components/sypexDumper/sxd/index.php

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

В результате этого, импорт и экспорт баз происходит  успешно. Глюков/багов в работе «SypexDumper» с использованием нового файла «index.php» пока не выявлено.

Может кому-то пригодится в будущем, поэтому оставлю экземпляр файлика здесь на форуме (запакован в zip-архив - index.php.zip).

P.S.: Я не программист и не разбираюсь в php-коде: есть ли там что-то вредоносное или нет. Поэтому Вы можете использовать данный php-файл на свой страх и риск.

Вверх