Ошибка 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 ответов
вы знаете, что происходит - у вас есть лишние одинарные кавычки в 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