play-slick : 未找到表

Posted

技术标签:

【中文标题】play-slick : 未找到表【英文标题】:play-slick : not found table 【发布时间】:2015-06-16 14:11:49 【问题描述】:

我想将 play-slick 1.0.0 与 play 2.4.0 一起使用。 根据示例(https://github.com/playframework/play-slick/tree/master/samples/basic),我这样定义了 UserTable:

包装表

import models.User
import scala.slick.driver.JdbcProfile

trait UserTable 
  protected val driver: JdbcProfile
  import driver.api._
  class Users(tag: Tag) extends Table[User](tag, "users")
    def ID = column[Long]("id", O.PrimaryKey, O.AutoInc)
    def email = column[String]("email", O.NotNull)
    def password = column[String]("password", O.NotNull)
    def * = (ID, email, password) <> (User.tupled, User.unapply)
  

我实现了控制器如下:

package controllers

import play.api._
import play.api.mvc._
import play.api.db.slick.DatabaseConfigProvider
import play.api.db.slick.HasDatabaseConfig
import tables.UserTable
import scala.slick.driver.JdbcProfile
import play.api.libs.concurrent.Execution.Implicits.defaultContext

import models.User
import tables.UserTable

class UserController extends Controller with UserTable with HasDatabaseConfig[JdbcProfile]
  val dbConfig = DatabaseConfigProvider.get[JdbcProfile](Play.current)
  import driver.api._

  val Users = TableQuery[Users]

  def index = Action.async 
    db.run(Users.result).map(res => Ok(views.html.User.index(res.toList)))
  

但是,我运行了应用程序并调用了这个控制器,我得到了错误

[SQLException: [SQLITE_ERROR] SQL error or missing database (no such table: users)]

如何创建“用户”表?

【问题讨论】:

【参考方案1】:

您需要使用现有的 users 表或通过 slick 创建表。

请看http://slick.typesafe.com/doc/3.0.0/gettingstarted.html#populating-the-database

您需要在您的应用程序中运行 db.run(Users.schema.create)。

【讨论】:

我在 Global.onStart 中调用了 db.run(Users.schema.create),但又发生了另一个错误:play.api.PlayException: Cannot init the Global object[null] 我也尝试在 UserController 构造函数中调用它,但它失败了 @987654323 @

以上是关于play-slick : 未找到表的主要内容,如果未能解决你的问题,请参考以下文章

Play-Slick 插件是不是完全支持 Slick 2.0?

Mysql play-slick 连接超时错误

play-slick升级后运行激活器失败

play-slick 1.0.0:无法定义类型为 java.sql.Date 的列

无法使用 play-slick 1.0.1/slick 3.0 连接到 mysql 数据库:配置错误

已配置到 play.api.db.DBApi 的绑定,play-slick 的演变和注入器错误