grails - 在数据库迁移插件中使用生产设置

标签 grails database-migration

我正在尝试遵循here教程。

我已使用runtime ":database-migration:1.0"在BuildConfig.groovy文件中声明了数据库迁移插件的依赖性,然后进行了编译。我还已经在DataSource.groovy文件中注释掉了我的生产设置的dbCreate行。我的生产数据库为空,其中没有表。

然后,我尝试运行以下两个命令来生成我的初始更改日志:

grails dbm-create-changelog
grails prod dbm-generate-gorm-changelog --add changelog-1.0.groovy

问题是第一个命令在我的开发数据库而不是生产数据库中创建表。然后第二条命令无法创建应该创建的changelog-1.0.groovy文件(我认为),因为生产数据库从未创建过任何表。我收到几个错误,这些错误说Hibernate无法索引数据库,并且出现了很多这样的错误:
| Error 2012-07-10 08:40:28,704 [Compass Gps Index [pool-11-thread-2]] ERROR util.JDBCExceptionReporter  - Table 'mygrailsapp_prod.some_class' doesn't exist

即使当我在DataSource.groovy文件中注释掉我的开发设置时,Grails仍在寻找我的开发数据库。我应该指出,虽然如果我从第二个命令中删除prod,则changelog-1.0.groovy文件会很好地生成,尽管我不清楚是否会因为它是从开发数据库中生成的(在没有运行表的情况下就已经生成)而搞砸了。第一个命令)而不是生产数据库。

我在这里做错了什么?

最佳答案

The problem is the first command creates tables in my development database, not my production database.

那可能是因为它针对开发环境运行,并且您的dbCreate仍设置为“update”
Then the second command fails to create the changelog-1.0.groovy file it is supposed to create (I assume) because the production database never had any tables created.

这并不完全准确。在您发布的链接中,它表示在该步骤之后:“请注意,您的数据库将保持为空!”仅当执行dbm-update命令时才会创建数据库表。这就是更改日志实际执行的时间。

我认为您链接到的博客在第二条命令的产品开关上并不完全准确。关于您的域的一切都与环境无关。因此,只需将其保留,您就可以继续前进。我不确定为什么会引发该错误。真的没有道理。

关于grails - 在数据库迁移插件中使用生产设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11414510/

相关文章:

mysql - Yii DbMigration 将数据移动到其他表

android - 是否可以从 Realm 迁移到 Sqlite?

sql-server - 将数据从 DB2 迁移到 SQL Server - DB2 端需要什么?

grails - Grails/GORM:映射这两个域的正确/最佳方法是什么?

grails - 在 IBM 的 jetty 上启动 Grails 应用程序时出现 "Creation of DB2Driver object failed: CCSID value is not valid"

hibernate - Jboss 7没有释放连接

ruby-on-rails - 如何为单个迁移设置 statement_timeout?

debugging - 我可以使用文本编辑器(例如 Sublime Text 2)调试 Grails 应用程序吗?

google-app-engine - 由于 HashMap$Entry ClassNotFound 错误,Grails 应用程序无法在 GoogleAppEngine 中运行

sql - 将表拆分为多对多关系 : Data Migration