3

コードが正しいデータベース ステートメントを作成するかどうかをテストする必要があります。インメモリ データベースを使用してアプリケーションを実行できることはわかっています。完璧ではありませんが、このプロジェクトには十分です。私の SQL には MySQL 固有のものが含まれています。

テストを実行すると、次を含む進化で中断します。

CREATE TABLE `Beaches` (
  `id` INT(10) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255) NOT NULL,
  PRIMARY KEY (`id`)
)
ENGINE=InnoDB;
COLLATE='utf8_general_ci'

MySQL 固有の構文の問題を解決するにはどうすればよいですか?

4

1 に答える 1

10

MySQL 固有のものを (ほとんど) 回避する方法を見つけました (質問 1.)。

running(FakeApplication(additionalConfiguration = 
  inMemoryDatabase(options=Map("MODE" -> "MySQL")))) {

  DB.withConnection { implicit c =>
    SQL("""
        CREATE TABLE `Beaches` (
          `id` INT(10) NOT NULL AUTO_INCREMENT,
          `name` VARCHAR(255) NOT NULL,
          PRIMARY KEY (`id`)
        )
        /*! ENGINE=InnoDB; */
        /*! COLLATE='utf8_general_ci' */
        """
    ).execute()
    ok
  }
}

H2 には、Play ドキュメントのインメモリ H2 データベースMODE=MySQLの操作 セクションで説明されているがあります。

他の部分は、MySQL ドキュメントの「コメント構文」セクションで説明されているように、c スタイルのコメントです。

于 2013-02-28T22:13:43.370 に答える