Play Framework 2.6 中未触发 Slick (postgresql) 演变
Posted
技术标签:
【中文标题】Play Framework 2.6 中未触发 Slick (postgresql) 演变【英文标题】:Slick (postgresql) evolutions are not being triggered in Play Framework 2.6 【发布时间】:2017-11-24 06:23:37 【问题描述】:这里是数据库配置
application.conf:
slick.dbs.default.profile="slick.jdbc.PostgresProfile$"
slick.dbs.default.db.driver="org.postgresql.Driver"
slick.dbs.default.db.url="jdbc:postgresql://localhost:5432/postgres"
slick.dbs.default.db.user=postgres
slick.dbs.default.db.password=postgres
build.sbt
name := """myproject"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayScala)
resolvers += Resolver.sonatypeRepo("snapshots")
scalaVersion := "2.12.4"
libraryDependencies += guice
libraryDependencies += evolutions
libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "3.0.0" % Test
libraryDependencies += "org.postgresql" % "postgresql" % "42.1.4"
libraryDependencies += "com.typesafe.play" %% "play-slick" % "3.0.1"
libraryDependencies += "com.typesafe.play" %% "play-slick-evolutions" % "3.0.1"
我在 conf/evolutions/default 文件夹中有 sql 脚本
1.sql
# Users schema
# --- !Ups
CREATE TABLE users
(
id bigint NOT NULL,
email character varying(255) NOT NULL,
username character varying(100) NOT NULL,
password character varying(100) NOT NULL,
PRIMARY KEY (id)
)
WITH (
OIDS = FALSE
);
# --- !Downs
DROP TABLE IF EXISTS users CASCADE;
但在应用程序启动时,不会触发进化。 db 连接工作正常(我已经通过从这个应用程序对 db 实施一些巧妙的查询来检查)。
我在这里做错了什么?
【问题讨论】:
【参考方案1】:尝试将此行添加到您的 application.conf :
play.evolutions.db.default.enabled = true
【讨论】:
【参考方案2】:我发现了问题。
进化脚本位于
conf/evolutions.default
但它们应该位于
下conf/evolutions/default
所以我不小心在conf
文件夹下创建了一个以点分隔的文件夹,而不是两个。
【讨论】:
以上是关于Play Framework 2.6 中未触发 Slick (postgresql) 演变的主要内容,如果未能解决你的问题,请参考以下文章
为 play framework 2.6 配置的默认控制器包在哪里?
Java Play Framework 2.6 不返回“Access-Control-Allow-Origin”CORS 标头
将 Play Framework 标签提交到 SVN 并触发提交挂钩