私はストアドプロシージャを作成し、Rakeタスク内で実行したいと思います。私は次のエラーのため失敗したソースコマンドを使用してプロシージャを作成する必要があります(「コール」ステートメントを使用して)ストアドプロシージャを呼び出す前にActiveRecordを使用してRakeタスクからMySQL sql "source"コマンドを実行できません
:
Mysql2::Error: 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 'source import_legacy_database.sql' at line 1: source import_legacy_database.sql
次の行が実行されると、このエラーが発生しました次の場合、コンソールではなく、rakeタスクで
ActiveRecord::Base.connection.execute "source import_legacy_database.sql"
同じコマンド「ソースimport_legacy_database.sqlは」細かい動作します。
私はそれが存在しないため、データベースが手順を見つけることができませんので
ActiveRecord::Base.connection.execute "call import_legacy_database()"
に障害が発生し、そのコマンドを呼び出さない場合。
ありがとうございました。
これは、アプリケーションサーバーとデータベースサーバーが同じマシン上にある場合に最適ですが、大部分の実稼働環境では、この方法は機能しません。 – jwg2s