【问题标题】:How do I generate database tables in Grails?如何在 Grails 中生成数据库表?
【发布时间】:2013-01-08 06:21:18
【问题描述】:

我有一个我似乎无法弄清楚的错误。我是 Grails 的新手,我正在尝试将表放入我的数据库。我在 MySQL 中创建了数据库。然后我尝试创建表,但是当我启动应用程序并单击表时,我收到以下错误:

/racetrack/race/list
Class org.h2.jdbc.JdbcSQLException
Message Table "RACE" not found;

我的 DevelopmentDataSource.groovy 文件如下:

class DevelopmentDataSource {
    boolean pooling = true
    String dbCreate = "update"
    String url = "jdbc:mysql://localhost/racetrack_dev"
    String driverClassName = "com.mysql.jdbc.Driver"
    String username = "ironmantis7x"
    String password = "mantismonk07"
}

我检查了 MySQL,数据库存在,但它没有任何表。应该有两个——raceregistration。我该如何补救?请让我知道您需要查看我的 Grails 应用程序的其他部分。

【问题讨论】:

    标签: java mysql grails


    【解决方案1】:

    您正在使用古老的第一版Grails 入门。当前的 Grails 版本不支持该语法。使用第二版,你可以得到here。这已经过时了,但效果会更好。

    只需约 30 美元,您就可以获得最新发布的 Grails 书籍,其中涵盖了Grails 2.0+。它由 Grails 的两位核心开发人员 Jeff Brown 和 Graeme Rocher 编写。

    【讨论】:

    • 谢谢...刚刚订购了它们!!
    【解决方案2】:

    你没有给 Grails 你的 MySQL 端口号:

    url = "jdbc:mysql://localhost:3306/racetrack?autoreconnect=true"
    

    在 MySQL 和 DataSource.groovy URL 中检查数据库的名称。

    如果您在 MySQL 中创建一个名为 racetrack 的数据库,您的数据源代码应如下所示:

    dataSource {
        pooled = true
        driverClassName = "com.mysql.jdbc.Driver"
        username = "ironmantis7x"
        password = "mantismonk07"
    }
    hibernate {
        cache.use_second_level_cache = true
        cache.use_query_cache = false
        cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
    }
    // environment specific settings
    environments {
        development {
            dataSource {
                dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
                url = "jdbc:mysql://localhost:3306/racetrack?autoreconnect=true"
            }
        }
        test {
            dataSource {
                dbCreate = "update"
                url = "jdbc:mysql://localhost:3306/racetrack?autoreconnect=true"
            }
        }
        production {
            dataSource {
                dbCreate = "update"
                url = "jdbc:mysql://localhost:3306/racetrack?autoreconnect=true"
                pooled = true
                properties {
                   maxActive = -1
                   minEvictableIdleTimeMillis=1800000
                   timeBetweenEvictionRunsMillis=1800000
                   numTestsPerEvictionRun=3
                   testOnBorrow=true
                   testWhileIdle=true
                   testOnReturn=true
                   validationQuery="SELECT 1"
                }
            }
        }
    }
    

    【讨论】:

    • 默认端口(3306)可以省略。
    • 当我尝试上面的代码时,我得到以下错误:|错误 2013-01-08 08:33:51,793 [localhost-startStop-1] 错误 context.GrailsContextLoader - 执行引导程序时出错:
    • 您使用什么版本的 grails?你能分享你的引导代码吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 2015-04-22
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 2018-06-17
    • 2016-10-30
    相关资源
    最近更新 更多