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 并触发提交挂钩

Play Framework:“连接太多”数据库错误

Play Framework 1.2.5.1 和 1.2.6 版本之间的区别?

播放框架 2.6:NoClassDefFoundError:播放/缓存/DefaultCacheApi