【问题标题】:Grails 2.1: How to use "schema-export export"?Grails 2.1:如何使用“模式导出导出”?
【发布时间】:2012-08-24 12:58:15
【问题描述】:

我想(重新)使用命令“schema-export”创建我的数据库模式。 DDL 生成工作正常,但如果我执行“模式导出导出”,我会收到以下错误,这表明配置文件中缺少某些内容。

grails> dev schema-export export
| Compiling 1 source files.....
Exporting in environment 'development' for the default DataSource
| Error 2012-08-24 14:45:57,466 [main] ERROR hbm2ddl.SchemaExport  - schema export unsuccessful
Message: No local DataSource found for configuration - 'dataSource' property must be set on LocalSessionFactoryBean
  Line | Method
->> 61 | doCall in SchemaExport$_run_closure1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| Error 2012-08-24 14:45:57,472 [main] ERROR hbm2ddl.SchemaExport  - schema export unsuccessful
Message: No local DataSource found for configuration - 'dataSource' property must be set on LocalSessionFactoryBean
  Line | Method
->> 64 | doCall in SchemaExport$_run_closure1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

我的 DataSource.groovy 定义了一个“数据源”:

dataSource {
    pooled = true
    driverClassName = "com.mysql.jdbc.Driver"
}
...
environments {
    development {
        dataSource {
            username = "xxx"
            password = "yyy"
            url = "jdbc:mysql://localhost:3306/chrono_dev?autoreconnect=true"
        }
    }
    ...
}

有什么建议可以解决这个错误吗?

【问题讨论】:

  • 也许我应该补充一下为什么要这样做:我不希望 grails 在开发过程中启动时“创建-删除”模式,因为我不希望我的测试数据每次都被删除我重新启动应用程序的时间。此外,“更新”并不总是正确地完成工作。我只是想按需重新创建架构,而不需要重新启动应用程序。

标签: hibernate grails grails-2.0


【解决方案1】:

语法有点不同:

grails dev schema-export // no export

据此:

http://grails.org/doc/2.1.0/ref/Command%20Line/schema-export.html

如果您正在执行导入,您可能需要描述数据源:

grails dev schema-export export --datasource=auditing

还有,您要导入的 ddl 的名称是什么?

【讨论】:

  • 我认为额外的“导出”是正确的。它是:“grails [environment] schema-export [action] ['stdout'] [filename] [--datasource]”。而“出口”是一种可能的[行动]。如果我删除导出,它只会生成一个 DDL 文件,这不是我想要的。
  • 我不知道如何指定数据源名称,这就是我不使用--datasrouce参数的原因。有没有办法指定数据源名称? grails.org/doc/2.1.0/ref/Plug-ins/dataSource.html 没有关于它的详细信息。
【解决方案2】:

我不知道为什么它现在有效,但它确实有效。我已经切换到 Postgres,也许它与此有关。 很抱歉打扰您。

【讨论】:

    【解决方案3】:

    一些建议:

    • 尝试在每个环境块中定义整个数据源(而不是让全局共享一个)。我之前在DataSource.groovy 中遇到过这种设置问题。
    • 在数据源定义中为 MYSQL 添加方言行。 dialect=org.hibernate.dialect.MySQL5InnoDBDialect
    • 如果这些都不起作用,您总是可以分两步进行。让schema-export 将内容转储到文件中(没有“导出”选项),然后将其输出粘贴到 SQL 编辑器中并运行。

    【讨论】:

    • 遗憾的是这并没有改变任何东西。我将不得不使用一种解决方法,就像您建议的那样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 2020-10-29
    相关资源
    最近更新 更多