Ich entwickle eine Scala/Play-Anwendung, die mysql verwendet. Ich bin auf ein Problem gestoßen, bei dem meine Anwendung bei der Bereitstellung in unserer Integrationsumgebung beschädigt wird, weil die SQL-Abfragen aus meiner Anwendung den Fall für Tabellen und Aliase falsch darstellen. Ich habe das in der Entwicklung nicht bemerkt, weil ich auf einem Mac bin, wo MySQL standardmäßig nicht zwischen Groß- und Kleinschreibung unterscheidet. Abgesehen davon, dass ich meine lokale Umgebung so konfiguriere, dass auch Groß- und Kleinschreibung beachtet wird, möchte ich, dass die Komponententests fehlschlagen, wenn Abfragen geschrieben werden, bei denen der Fall falsch ist. Ich teste die Datenbank mit H2 wie von der Play documentation beschrieben. Ich habe die Datenbank mit dem folgenden Code, wo Schema ist eine Zeichenfolge, die die Erstellung Skript hat:So testen Sie die Sensitivität der MySQL-Groß-/Kleinschreibung mit H2
def apply[T](block: Database => T):Unit = {
Databases.withInMemory(
urlOptions = Map(
"MODE" -> "MYSQL"
),
config = Map(
"logStatements" -> false
)
){
database =>
Evolutions.withEvolutions(database, SimpleEvolutionsReader.forDefault(
Evolution(
1,
schema,
""
)
)){
block(database)
}
}
}
wäre eine Option wie "caseSensitive" -> true
oder so ähnlich Intuitiv die Config-Karte hat, aber ich habe nicht in der Lage gewesen zu finden Sie Dokumentation für alle Optionen dort. Weiß jemand, ob H2 eine Konfigurationsoption dafür hat und was es ist?
Vielen Dank, dass Sie auf diese Dokumentation hingewiesen haben. Leider ist es nicht das, wonach ich gesucht habe. Wie gesagt, die IGNORECASE-Option wirkt sich auf Daten im Vergleich aus, scheint aber keine Konsequenzen für Metadaten wie Tabellennamen und Aliase zu haben. –
Ich stimme auch Ihren Ratschlägen zu Integrationstests zu, aber das ist es nicht. Es ist lediglich dazu gedacht, bei Komponententests zu helfen, die oft in Teilen unserer Pipeline ausgeführt werden, für die keine MySQL-Instanz verfügbar ist, wie z. B. der Build/Test-Trigger, der beim Commit ausgeführt wird. Unsere Integrationstests sind etwas weiter unten und mit dem eigentlichen MySQL-Treiber erledigt. –