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

テストオブジェクトYaml用のPlayFrameworkイメージBLOBファイル

    私はしばらく前にプロジェクトで同じ種類の問題を経験しました。ただし、フィクスチャでこれを解決する方法が見つからなかったため(データベースは、上記で説明したようにblobオブジェクトを文字列として格納するため)、少なくともテストケースシナリオでこの問題を解決するための回避策を作成しました。次のファイル/app/job/Bootstrap.javaを作成しました:

    import play.test.*;
    import play.jobs.*;
    import play.db.DB;
    import models.*;
    
    import java.util.List;
    
    @OnApplicationStart
    public class Bootstrap extends Job {
         public void doJob() {
            // Load default data if the database is empty
            if(Item.count() == 0) {
                Fixtures.loadModels("my_fixtures.yml");
                List<Item> allItems = Item.findAll();
                for (Item a: allItems){
                    DB.execute("UPDATE `Item` SET image='item_" + a.name.toLowerCase() + ".png|image/png' WHERE id=" + a.getId());
                }
            }
        }
    }
    

    最初に行うことは、データベースに「アイテム」がまだ保存されていない場合にデータベースに初期データを入力することです。
    2番目に行うことは、再生されるすべての「アイテム」を反復処理することです。 「my_fixtures.yml」ファイルから読み取られるデータベースに保存されます。ここでは、各アイテムについて、上記の例に示すように文字列フィールドが更新されます。

    これがOPの質問に対する正確な答えではないことは知っていますが、この問題を回避するための親切なアイデアが得られます。

    編集:上記の例では、 application.conf に指定されているように、写真が添付ファイルフォルダーに手動でアップロードされていると想定しています。 、および各画像名は次のようになります:「item_」と「.png」拡張子



    1. MySQLdbモジュールはプリペアドステートメントをサポートしていますか?

    2. データベースインデックスはいつ再構築する必要がありますか?

    3. UTF8文字列のMD5ハッシュを計算します

    4. MariaDB-インクリメンタルレコードの作成中に番号シーケンスをスキップするINNODB-なぜですか?