Импорт процедур mysql, сгенерированных из mysqldump --routines - PullRequest
5 голосов
/ 02 февраля 2009

Я использую инструмент mysqldump для создания копий моей базы данных. Проблема в том, что когда я использую параметр --routines для вывода своих хранимых процедур вместе с моими данными, сгенерированный вывод вызывает ошибку при попытке импортировать его.

Это выглядит примерно так:

% mysqldump --routines MyDB | mysql MyDB2

(где MyDB2 уже существует, но пуст)

Я получаю следующую ошибку:

ERROR 1064 (42000) at line 307: 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 '' at line 23

Все работает правильно, если я опускаю --routines.

Кто-нибудь еще сталкивался с этим?

Ответы [ 2 ]

3 голосов
/ 12 февраля 2010

Если что-то дает ошибки при выполнении запросов в MyDB2, лучше всего:

  1. Запустите mysqldump, чтобы сохранить вывод в сохраненный файл.
  2. Запуск файла побитно, чтобы определить, в какой части возникла проблема.
  3. Исправьте этот бит.

Однажды у меня была такая проблема, когда я экспортировал из старой версии mysql и импортировал в более новую, которая объявила одно из имен моих столбцов зарезервированным словом. Ваши две базы данных на разных серверах работают под разными версиями mysql? Или есть какая-то другая разница между базами данных (например, набор символов)?

3 голосов
/ 02 февраля 2009

Мне удалось заставить это работать, разделив его на два вызова:

% mysqldump MyDB | mysql MyDB2
% mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt MyDB | mysql MyDB2
...