2016-09-08 13 views
0

私は、アプリケーションの起動時に適用する新しい移行があるかどうかを確認するプロジェクトをGOで行っています(ライブラリhttps://github.com/mattes/migrateを使用しています)。移行からストアドプロシージャを作成する

ここで問題となるのは、この移行の1つで作成するストアドプロシージャがあることです(これは後で呼び出されるため、移行で作成する必要があります。そうしないと、テストスイートはもちろん失敗します)。

の例では、このいずれかになります。

DELIMITER @@ 
    CREATE PROCEDURE get_value(my_id BIGINT(20), OUT out_value DOUBLE) 
     BEGIN 
     SELECT CASE 
      WHEN o.financial_status = "test" THEN 0 
      ELSE 1 
      END 
      INTO out_value 
      FROM `order` o 
      LEFT JOIN `my_table_2` io ON io.field_2 = o.id 
      LEFT JOIN `my_table_3` ip ON io.field_3 = ip.id 
      WHERE o.id = my_id; 
END @@ 
DELIMITER ; 

行くためのSQLドライバは(我々は、MySQL 5.6を使用している)マルチステートメントをサポートしていないので、私の知る限り読んで、これができない場合があります。

他の方法がありますか?ありがとう!

+0

あなたはmymyslを見ましたか? http://stackoverflow.com/questions/28548559/does-a-go-mysql-driver-exist-that-supports-multiple-statements-within-a-single-s –

答えて

1

私は実際に同じ状況に遭遇しました。私が実行した方法は、すべての区切り文字の宣言を削除して実行したことです。移行中に区切り文字は必要ないので、自動区切り(または現実的に名前を付ける)し、移行を実行する必要があります。

+0

素晴らしい!ありがとうございました – Alessio

関連する問題