LINUX.ORG.RU

Не импортируются бекапы в phpmyadmin

 ,


0

1

Здравствуй, лор.

Пытаюсь восстановить несколько сайтов на серваке, надо закинуть бекапы баз в mysql, сделанные через phpmyadmin, через него же. Есть 13-мегабайтный бекап. Загружаю его - ругается на синтаксис этого:

LOCK TABLES `b_blog_smile_lang` WRITE;
INSERT INTO `b_blog_smile_lang` (`ID`, `SMILE_ID`, `LID`, `NAME`) VALUES (1,1,'ru','Широкая улыбка'),(2,1,'en','Big grin'),(3,2,'ru','С улыбкой'),(4,2,'en','Smile'),(5,3,'ru','Печально'),(6,3,'en','Sad'),(7,4,'ru','Удивленно'),(8,4,'en','Surprised'),(9,5,'ru','Здорово'),(10,5,'en','Cool'),(11,6,'ru','Поцелуй'),(12,6,'en','Kiss'),(13,7,'ru','Смущенный'),(14,7,'en','Embarrassed'),(15,8,'ru','Очень грустно'),(16,8,'en','Crying'),(17,9,'ru','Со злостью'),(18,9,'en','Angry'),(19,10,'ru','Шутливо'),(20,10,'en','Wink'),(21,11,'ru','Восклицание'),(22,11,'en','Exclamation'),(23,12,'ru','Вопрос'),(24,12,'en','Question'),(25,13,'ru','Идея'),(26,13,'en','Idea'),(27,14,'ru','Скептически'),(28,14,'en','Skeptic');
UNLOCK TABLES;

Вручную через запрос sql в pma - тоже ругается на синтаксис.

Делаю три запроса по очереди - все ок.

LOCK TABLES `b_blog_smile_lang` WRITE;
INSERT INTO `b_blog_smile_lang` (`ID`, `SMILE_ID`, `LID`, `NAME`) VALUES (1,1,'ru','Широкая улыбка'),(2,1,'en','Big grin'),(3,2,'ru','С улыбкой'),(4,2,'en','Smile'),(5,3,'ru','Печально'),(6,3,'en','Sad'),(7,4,'ru','Удивленно'),(8,4,'en','Surprised'),(9,5,'ru','Здорово'),(10,5,'en','Cool'),(11,6,'ru','Поцелуй'),(12,6,'en','Kiss'),(13,7,'ru','Смущенный'),(14,7,'en','Embarrassed'),(15,8,'ru','Очень грустно'),(16,8,'en','Crying'),(17,9,'ru','Со злостью'),(18,9,'en','Angry'),(19,10,'ru','Шутливо'),(20,10,'en','Wink'),(21,11,'ru','Восклицание'),(22,11,'en','Exclamation'),(23,12,'ru','Вопрос'),(24,12,'en','Question'),(25,13,'ru','Идея'),(26,13,'en','Idea'),(27,14,'ru','Скептически'),(28,14,'en','Skeptic');
UNLOCK TABLES;

В sql дилетант, ткните носом.

Ответ на: комментарий от reprimand
#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 'ALTER TABLE `b_blog_smile_lang` ENABLE KEYS */;
UNLOCK TABLES' at line 2 
Llevellyn
() автор топика

ругается на синтаксис этого

в нем нет

ALTER TABLE `b_blog_smile_lang` ENABLE KEYS

который ты привёл

определись в каком участке ошибка, и его приведи

reprimand ★★★★★
()
Ответ на: комментарий от Llevellyn

/*!40000 ALTER TABLE `b_blog_smile_lang` ENABLE KEYS */;

это вообще какая-то странная конструкция... которая не должна выполняться
ибо согласно докам эта строка - комментарий: https://dev.mysql.com/doc/refman/5.0/en/comments.html

у тебя остается 1 вариант - почистить свои *.sql файлы (предварительно сделав backup) от «проблемных» мест вручную

а впредь советую делать backup-ы с помощью mysqldump. phpmyadmin он такой... особенный :)

reprimand ★★★★★
()
Ответ на: комментарий от Llevellyn

на первый взгляд - всё в порядке

хотя стоило бы в каком-нибудь редакторе-составителе запросов посмотреть - они подсвечивают синтаксис

я бы на твоем месте забил и импортировал без *LOCK TABLES, предварительно отрубив доступ сторонних объектов (сайтов?) к БД

reprimand ★★★★★
()
Ответ на: комментарий от reprimand

Ненужно, как оказалось. Сделал все через консоль.

Llevellyn
() автор топика
Ответ на: комментарий от reprimand

ибо согласно докам эта строка - комментарий

На сколько я понимаю это условный комментарий. Для некоторых версий мускуля он коментарий, для некоторых — код.
В дампах или оборачивают опциональные операторы которые поддерживаются не всеми версиями mysql.

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

На сколько я понимаю это условный комментарий. Для некоторых версий мускуля он коментарий, для некоторых — код.

сомневаюсь. Я думаю, что это phpmyadmin намудрил

вот именно из-за таких случаев стоит юзать mysqldump :)

reprimand ★★★★★
()
Ответ на: комментарий от reprimand

If you add a version number after the “!” character, the syntax within the comment is executed only if the MySQL version is greater than or equal to the specified version number. The TEMPORARY keyword in the following comment is executed only by servers from MySQL 3.23.02 or higher:
CREATE /*!32302 TEMPORARY */ TABLE t (a INT);


http://dev.mysql.com/doc/refman/5.1/en/comments.html

Возможно PMA решил что он очень умный и решил раскрыть условные комментарии за mysql. Вообще PMA — мерзость, только mysql и mysqldump истинно православны. Жаль не всех заказчиков удаётся в этом убедить.

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

хм... перед этим искал инфу о /*! - не нашел
ох уж этот интернет, волей-неволей читаешь странички по диагонали

reprimand ★★★★★
()
Ответ на: комментарий от reprimand

Да, гуглисть такие вещи неудобно, гугели игнорируют все эти /*!, по запросу «/*!40000» находит только вархамер 40000 (:
Я нашёл пруф только потому-что знал что искать.

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

Возможно PMA решил что он очень умный и решил раскрыть условные комментарии за mysql.

По-моему PMA банально неправильно сделал дамп. Там ; не там стоит.

Вообще PMA — мерзость, только mysql и mysqldump истинно православны.

Истину глаголешь!

goingUp ★★★★★
()

Уточнил про бекапы, ибо не я их делал. Они были через cpanel сделаны, через phpmyadmin я их только восстановить хотел. В этом случае действительно кривость pma,

mysqldump -u root -p -f mydatabase > /home/myname/mydatabasedump.sql 

отлично работает.

Llevellyn
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.