我需要测试我的代码是否创建了正确的数据库语句。我知道我可以使用内存数据库运行我的应用程序。它并不完美,但足以满足这个项目的需要。我的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特定语法的问题?
答案 0 :(得分: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有一个MODE=MySQL
,如Play文档的Working with the in-memory H2 database部分所述。
另一部分是MySQL文档的Comment Syntax部分中描述的c样式注释。