Невозможно выполнить MySQL sql «исходную» команду из задачи Rake, используя ActiveRecord - PullRequest
1 голос
/ 15 января 2012

Я написал хранимую процедуру и хочу выполнить ее в задаче Rake.

Перед вызовом хранимой процедуры (с помощью оператора "call") я должен создать процедуру с исходной командой, которая завершается ошибкой из-за следующей ошибки:

Mysql2 :: Ошибка:У вас есть ошибка в вашем синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с 'source import_legacy_database.sql' в строке 1: source import_legacy_database.sql

Эта ошибка возникает при выполнении следующей строки:

ActiveRecord::Base.connection.execute "source import_legacy_database.sql"

Та же команда "source import_legacy_database.sql" отлично работает в консоли, но не в задаче Rake.

Если я не вызываю эту команду, тогда

ActiveRecord::Base.connection.execute "call import_legacy_database()"

не удается, потому что база данных не находит процедуру, потому что она не существует.

Спасибо за продвинутый.

Ответы [ 2 ]

2 голосов
/ 15 января 2012

Я считаю, что это потому, что команда source специфична для реализации клиента командной строки MySQL и не является частью API, реализованного ActiveRecord. То же самое произойдет, если вы попытаетесь использовать команду DELIMITER внутри ActiveRecord, например.

1 голос
/ 15 января 2012

Я наконец использовал метод sh Rake и выполнил команды sql в пакетном режиме http://dev.mysql.com/doc/refman/5.5/en/batch-mode.html

sh "mysql -u root mydb_development -e 'source import_legacy_database.sql'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...