Play / Slick / SQLite Evolutions 不工作
Play / Slick / SQLite Evolutions Not Working
我在我的 Ubuntu
中从终端创建了一个 SQLite
数据库:
$ sqlite users.db
然后我将 users.db
文件移动到 projectDir/conf/application.conf
。
后来我写了一个进化但是当我通过 DBeaver
查看我的数据库时它没有应用到我的 users.db
数据库。
这是我的 application.conf
文件
play.http.secret.key = "changeme"
play.i18n {
langs = [ "en" ]
}
play.filters {
enabled += filters.ExampleFilter
}
play.evolutions.db.default {
enabled = true
autoApply = true
autoApplyDowns = true
}
slick.dbs.default {
profile = "slick.jdbc.SQLiteProfile$"
driver = "slick.driver.SQLiteDriver$"
db.driver = "org.sqlite.JDBC"
db.url = "jdbc:sqlite:/home/saad/play-scala-starter-example/conf/users.db"
}
play.assets {
path = "/public"
urlPrefix = "/assets"
}
这是我的 build.sbt
name := """play-scala-starter-example"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayScala)
resolvers += Resolver.sonatypeRepo("snapshots")
scalaVersion := "2.12.7"
crossScalaVersions := Seq("2.11.12", "2.12.7")
libraryDependencies += guice
libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "3.1.2" % Test
libraryDependencies += "com.typesafe.slick" %% "slick" % "3.2.0"
libraryDependencies += "com.typesafe.slick" %% "slick-codegen" % "3.2.3"
libraryDependencies += evolutions
libraryDependencies ++= Seq(
"com.typesafe.play" %% "play-slick" % "3.0.0",
"com.typesafe.play" %% "play-slick-evolutions" % "3.0.0"
)
libraryDependencies ++= Seq(
cache,
javaWs,
"org.xerial" % "sqlite-jdbc" % "3.23.1"
)
这是我的1.sql
文件,我已经测试过代码没有错误。
# --- !Ups
CREATE TABLE IF NOT EXISTS Users(
ID INTEGER PRIMARY KEY AUTOINCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Password varchar(255) NOT NULL,
Email varchar(255) NOT NULL UNIQUE,
Authenticated boolean
);
INSERT INTO Users(LastName, FirstName, Password, Email, Authenticated) VALUES ('Saad', 'Ali', 'spadsdditcom', 'asdasdasd', 1);
# --- !Downs
DROP TABLE IF EXISTS Users
在我执行 sbt run
后,index
页面打开并且没有错误,但是从 DBeaver
看到的进化也没有应用。
我的问题是,我做错了什么?
我想出来了,我把 1.sql
放在 conf/default.evolution
而不是 conf/default/evolution
。
我在我的 Ubuntu
中从终端创建了一个 SQLite
数据库:
$ sqlite users.db
然后我将 users.db
文件移动到 projectDir/conf/application.conf
。
后来我写了一个进化但是当我通过 DBeaver
查看我的数据库时它没有应用到我的 users.db
数据库。
这是我的 application.conf
文件
play.http.secret.key = "changeme"
play.i18n {
langs = [ "en" ]
}
play.filters {
enabled += filters.ExampleFilter
}
play.evolutions.db.default {
enabled = true
autoApply = true
autoApplyDowns = true
}
slick.dbs.default {
profile = "slick.jdbc.SQLiteProfile$"
driver = "slick.driver.SQLiteDriver$"
db.driver = "org.sqlite.JDBC"
db.url = "jdbc:sqlite:/home/saad/play-scala-starter-example/conf/users.db"
}
play.assets {
path = "/public"
urlPrefix = "/assets"
}
这是我的 build.sbt
name := """play-scala-starter-example"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayScala)
resolvers += Resolver.sonatypeRepo("snapshots")
scalaVersion := "2.12.7"
crossScalaVersions := Seq("2.11.12", "2.12.7")
libraryDependencies += guice
libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "3.1.2" % Test
libraryDependencies += "com.typesafe.slick" %% "slick" % "3.2.0"
libraryDependencies += "com.typesafe.slick" %% "slick-codegen" % "3.2.3"
libraryDependencies += evolutions
libraryDependencies ++= Seq(
"com.typesafe.play" %% "play-slick" % "3.0.0",
"com.typesafe.play" %% "play-slick-evolutions" % "3.0.0"
)
libraryDependencies ++= Seq(
cache,
javaWs,
"org.xerial" % "sqlite-jdbc" % "3.23.1"
)
这是我的1.sql
文件,我已经测试过代码没有错误。
# --- !Ups
CREATE TABLE IF NOT EXISTS Users(
ID INTEGER PRIMARY KEY AUTOINCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Password varchar(255) NOT NULL,
Email varchar(255) NOT NULL UNIQUE,
Authenticated boolean
);
INSERT INTO Users(LastName, FirstName, Password, Email, Authenticated) VALUES ('Saad', 'Ali', 'spadsdditcom', 'asdasdasd', 1);
# --- !Downs
DROP TABLE IF EXISTS Users
在我执行 sbt run
后,index
页面打开并且没有错误,但是从 DBeaver
看到的进化也没有应用。
我的问题是,我做错了什么?
我想出来了,我把 1.sql
放在 conf/default.evolution
而不是 conf/default/evolution
。