Таблица "play_evolutions" не найдена

У меня есть базовая база данных разработки, настроенная так:

# Default database configuration using H2 database engine in an in-memory mode
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play;DB_CLOSE_DELAY=-1;MODE=MYSQL;DATABASE_TO_UPPER=FALSE"

Я добавил скрипт для создания таблиц из базы данных в conf/evolutions/default/1.sql

При запуске приложения с sbt run и переходя на любую страницу, Play просит меня применить скрипт 1.sql, После нажатия на кнопку я получаю следующую ошибку:

JdbcSQLException: Table "play_evolutions" not found; SQL statement: update play_evolutions set last_problem = ? where id = ? [42102-192]`en`

Разве игровой фреймворк уже не должен создавать это?

Версии:

//project/plugins.sbt
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.10")

//build.sbt
lazy val root =
  (project in file("."))
    .enablePlugins(PlayScala)

scalaVersion := "2.11.8"

libraryDependencies += jdbc
libraryDependencies += evolutions

1 ответ

Решение

Я проверил 1.sql в пакете evolutions.default, и может быть что-то, что вызывает table not found вещь.

ИСПОЛЬЗОВАТЬ mydb;

С этим утверждением ваша "рабочая схема" теперь имеет вид jdbc: h2: mem: play / mydb.

Однако таблица play_evolutions создается только под корнем jdbc: h2: mem: play, что не имеет значения для jdbc: h2: mem: play / mydb с именем play_evolutions, что вызывает ОШИБКУ.

Решение легко:

удалить USE mydb;

Надеюсь, поможет.

Другие вопросы по тегам