首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免初始化表格以在Squeryl/Activerecord中创建表格

避免初始化表格以在Squeryl/Activerecord中创建表格
EN

Stack Overflow用户
提问于 2013-06-13 05:26:54
回答 3查看 614关注 0票数 0

我已经在mySQL中定义了一个数据库模式,我想在play-2上使用ActiveRecord应用程序。

然而,当我启动这个项目时,它给出了一个错误:

代码语言:javascript
复制
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'user' already exists
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'user' already exists
and it is triggered by 
 org.squeryl.Schema.create(Schema.scala:181)
 models.Tables$.initialize(Tables.scala:7)

这是它在我的Tables.scala中的样子

代码语言:javascript
复制
object Tables extends ActiveRecordTables with PlaySupport {
    val users = table[User]
}

我的User.scala是:

代码语言:javascript
复制
case class User( 
    override val id: Long,  
    @Length(max=50) login: String
) extends ActiveRecord {
    lazy val role = belongsTo[Role]
}
object User extends ActiveRecordCompanion[User]

我试着在我的global.scala中跳过这个

代码语言:javascript
复制
override def onStart(app: Application) {
    //Tables.initialize
} 

但是,它仍然会给我同样的错误

这是不是我可以绕过create table部分?

非常感谢!

EN

回答 3

Stack Overflow用户

发布于 2013-06-13 09:18:05

您的数据库中是否已经有一个具有不同模式的user表?

由于您使用的是Scala,所以我猜您使用的是PlaySupport ActiveRecord Play2.1插件。正如该项目的wiki中所述,在conf/play.plugins中添加以下设置

代码语言:javascript
复制
9999:com.github.aselab.activerecord.ActiveRecordPlugin

ActiveRecordPlugin类在启动时初始化表。因此,您不应该在Global onStart中执行此操作

票数 0
EN

Stack Overflow用户

发布于 2013-06-13 13:31:14

也许你自己也在使用像MyDatabaseLibrary.create()这样的东西?

看看这个。您可以尝试在目录中搜索.create的实例

票数 0
EN

Stack Overflow用户

发布于 2013-06-14 06:14:36

我通过在Tables.scala中注释掉一些表模式来解决这个问题。我在Table对象中声明了多个表,但其中一个在数据库中不存在,例如:

代码语言:javascript
复制
object Tables extends ActiveRecordTables with PlaySupport {
  val users = Table[User]
  val role = Table[Role]
  val group = Table[Group] //not exist which cause the error!
}

如果数据库中不存在其中一个表,框架将按照对象中列出的顺序创建所有表。

我确实尝试将不存在的记录排列到顶部,框架将创建表,但无法运行。但是,如果出现上述情况,则会出现错误:表'user‘已声明,并且不会在数据库中创建任何表。

会作为一个bug抛给Activerecord,看看有没有解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17075648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档