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 回答