sql >> データベース >  >> RDS >> Mysql

スプリングブートschema.sqlファイルでのプロシージャの実行に関する問題

    これが私が見つけた解決策であり、SQLスクリプトを変更する必要があるため理想的ではありませんが、十分に機能します。

    application.propertiesで ファイルは、データソースセパレータプロパティを変更します:

    spring.datasource.separator=^;
    

    次に、schema.sqlを更新します 次のように見えるファイル:

    CREATE PROCEDURE Alter_Table()
    BEGIN
     IF NOT EXISTS( SELECT NULL
                FROM INFORMATION_SCHEMA.COLUMNS
               WHERE table_name = 'test_table'
                 AND table_schema = 'test'
                 AND column_name = 'cc_test_id')  THEN
    
      alter table test_table add cc_test_id VARCHAR(128) NOT NULL;
    
    END IF;
    END ^;
    
    call Alter_Table ^;
    

    DELIMITERコマンドは、MySQL CLIクライアントとWorkbenchでのみ機能し、SpringBootデータベースの初期化では機能しません。 DELIMITERコマンドを削除した後も、SpringBootは;を理解しないため、例外をスローします。 ストアドプロシージャの文字は個別のステートメントではないため、回避策としてデータソースの区切り文字のプロパティを変更する必要があります。



    1. VBAを使用したスト​​アドプロシージャの呼び出し

    2. データベースから同様の経度と緯度を取得する

    3. Ubuntuにsqlcmd&bcpをインストールする方法

    4. MariaDBの時間値から時間を取得する4つの関数