Ошибка Mysql в строке 1153: неизвестная команда''

Я пытаюсь импортировать файл mysqldump через командную строку, но продолжаю получать ошибку. Я сбросил файл с другого сервера, используя:

mysqldump -u XXX -p database_name > database.sql

затем я пытаюсь импортировать файл с:

mysql -u XXX -p database_name < database.sql

он загружает небольшую часть, а потом застревает. Ошибка, которую я получаю:

ERROR at line 1153: Unknown command '''.

Я проверил эту строку в файле с помощью:

awk '{ if (NR==1153) print  }' database.sql >> line1153.sql

и это случается с размером более 1 МБ, только для этой строки.

любые идеи, что может быть здесь происходит?

7 ответов


У вас есть двоичные капли в вашей БД, попробуйте добавить --hex-blob в свой оператор mysqldump.


вы знаете, что происходит - у вас есть лишние одинарные кавычки в SQL!O

Если у вас есть "awk", у вас, вероятно, есть "vi", который откроет вашу line1153.sql-файл с легкостью и позволит вам найти значение в вашей базе данных, которое вызывает проблему.

или... Строка, вероятно, большая, потому что она содержит несколько строк. Вы также можете использовать --skip-extended-insert опция mysqldump так, чтобы каждая строка получила отдельный оператор insert.

удачи.


У меня была такая же проблема, потому что у меня были китайские символы в моей базе данных. Ниже я нашел на каком-то Китайском форуме, и это сработало для меня.

mysql -u[USERNAME] -p[PASSWORD] --default-character-set=latin1
[DATABASE_NAME] < [BACKUP_SQL_FILE.sql]

Я думаю, вам нужно использовать path/to/file.sql вместо path\to\file.sql

и database < path/to/file.sql не работал для меня по какой - то причине-я должен был использовать use database; и source path/to/file.sql;.


Если все остальное не удается, используйте MySQLWorkbench для импорта. Это решило для меня ту же проблему.


недавно у меня была аналогичная проблема, когда я сделал дамп sql на машине Windows и попытался установить его на машине Linux. У меня был довольно большой файл SQL, и моя ошибка происходила в строке 3455360. Я использовал следующую команду, чтобы скопировать весь текст до момента, когда я получал сообщение об ошибке:

sed-n '1, 3455359p' destinationfile.в SQL

это скопировало весь хороший код в целевой файл. Я посмотрел на последнюю. несколько строк целевого файла и увидел, что это полная команда SQL (последняя строка заканчивалась на";"), Поэтому я импортировал хороший код и не получил никаких ошибок.

затем я посмотрел на остальную часть файла, которая была около 20 строк. Оказывается, экспорт, возможно, не завершил b / c я видел следующий php-код в конце кода:

Array
(
    [type] => 1
    [message] => Maximum execution time of 300 seconds exceeded
    [file] => C:\xampp\htdocs\openemr\phpmyadmin\libraries\Util.class.php
    [line] => 296
)

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


у меня был специальный символ в именах таблиц, например _\ и это дает ошибку при попытке импортировать эти таблицы. я исправил это, изменив \ to \ в бросил в SQL. мои имена таблиц, где like rate_\ и я использовал эту команду для исправления дампа :

sed 's._\._\\.g' dump.sql > dump2.sql

Я не заменил все обратные косые черты, потому что я не был уверен, есть ли какая-то обратная косая черта где-то в базе данных, которая не должна заменяться.

специальные символы в имени таблицы будут преобразованы в @ знак в имя файла. читать http://dev.mysql.com/doc/refman/5.5/en/identifier-mapping.html