Если вы подозреваете повреждение в исходной базе данных, вы можете сделать следующее:
Для таблиц MyISAM:
CHECK TABLE <table_name>;
REPAIR TABLE <table_name>;
Для таблиц InnoDB:
http://www.mysqlperformanceblog.com/2008/07/04/recovering-innodb-table-corruption/
Я лично видел повреждение таблиц MyISAM в нескольких редких случаях, которые CHECK и REPAIR смогли обнаружить и исправить.Я никогда не сталкивался с коррупцией в таблицах InnoDB, поэтому не могу сказать из личного опыта в отношении информации, представленной в ссылке.
Тем не менее, если бы я был на вашем месте, я бы начал с более внимательного изучения.в выходной файл, созданный mysqldump, чтобы увидеть, могу ли я точно определить источник ошибки.mysqldump обычно выводит один оператор INSERT на таблицу со всеми данными в одной строке, поэтому диагностировать ошибки немного сложно, потому что номер строки, включенный в сообщение об ошибке, мало помогает.Итак, что бы я сделал, это отредактировал выходной файл mysqldump и вставил строки между каждой строкой.Например:
Оригинал:
INSERT INTO table VALUES (a,b,c),(d,e,f),(g,h,i), ...
Изменить на:
INSERT INTO table VALUES (a,b,c),
(d,e,f),
(g,h,i),
...
Поскольку вам удобна командная строка, вы, вероятно, можете автоматизировать это с помощью sed,и т.д.
Затем попробуйте импортировать измененный файл.Вы должны получить ту же ошибку, но на этот раз номер строки поможет точно определить строку, которая вызывает проблему.На этом этапе вы сможете диагностировать проблему (или опубликовать оскорбительную часть вывода mysqldump здесь, и мы постараемся помочь).
РЕДАКТИРОВАТЬ:
Происходит ли указанное вами сообщение об ошибке при импорте базы данных?Или база данных успешно импортируется, но приложение выдает сообщение об ошибке при доступе к базе данных?Я предполагал первое, но теперь подумал, что это может быть последним после перечитывания вашего вопроса.
Еще одна идея: включает ли ваша база данных хранимые процы?Если так, mysqldump не будет включать те по умолчанию.Вам необходимо использовать опцию - рутины :
mysqldump --routines -u <user> -p<password> <database> > output