【问题标题】:Grails - Problems deploying WAR to tomcat serverGrails - 将 WAR 部署到 tomcat 服务器时出现问题
【发布时间】:2014-09-05 12:30:37
【问题描述】:

我目前正在尝试将我新生成的 grails WAR 文件部署到 tomcat 服务器。但是,我在 stacktrace.log 中收到以下错误,因此应用程序无法启动。

2014-09-05 14:19:59,891 [ajp-bio-8009-exec-4] ERROR StackTrace  - Full Stack Trace:
liquibase.exception.DatabaseException: Error executing SQL SELECT FILENAME,AUTHOR,ID,MD5SUM,DATEEXECUTED,ORDEREXECUTED,TAG,EXECTYPE FROM `DATABASECHANGELOG` ORDER BY DATEEXECUTED ASC, ORDEREXECUTED ASC: Table 'aedb.databasechangelog' doesn't exist
    at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:62)
    at liquibase.executor.jvm.JdbcExecutor.query(JdbcExecutor.java:142)
    at liquibase.executor.jvm.JdbcExecutor.query(JdbcExecutor.java:150)
    at liquibase.executor.jvm.JdbcExecutor.queryForList(JdbcExecutor.java:202)
    at liquibase.executor.jvm.JdbcExecutor.queryForList(JdbcExecutor.java:197)
    at liquibase.database.AbstractDatabase.getRanChangeSetList(AbstractDatabase.java:921)
    at liquibase.changelog.DatabaseChangeLog.validate(DatabaseChangeLog.java:132)
    at liquibase.Liquibase.listUnrunChangeSets(Liquibase.java:625)
    at grails.plugin.databasemigration.MigrationRunner.runMigrations(MigrationRunner.groovy:96)
    at grails.plugin.databasemigration.MigrationRunner$_autoRun_closure1.doCall(MigrationRunner.groovy:76)
    at grails.plugin.databasemigration.MigrationUtils.executeInSession(MigrationUtils.groovy:133)
    at grails.plugin.databasemigration.MigrationRunner.autoRun(MigrationRunner.groovy:56)
    at DatabaseMigrationGrailsPlugin$_closure2.doCall(DatabaseMigrationGrailsPlugin.groovy:96)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'aedb.databasechangelog' doesn't exist
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:408)
    at com.mysql.jdbc.Util.getInstance(Util.java:383)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1062)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4226)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4158)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2834)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2783)
    at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1569)
    at liquibase.executor.jvm.JdbcExecutor$1QueryStatementCallback.doInStatement(JdbcExecutor.java:128)
    at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:55)
    ... 12 more

我不知道可能是什么原因。因为在 GGTS 中启动应用程序是可能的,没有任何问题。也许你有一个想法。感谢您的帮助。

【问题讨论】:

    标签: tomcat grails deployment


    【解决方案1】:

    我猜你正在使用grails datasource environments? 如果您部署到(远程)tomcat,则“开发”环境不再处于活动状态。所以没有为 tomcat 实例定义数据源,因此抱怨缺少表。

    【讨论】:

    • 我也定义了一个生产数据源。从我的角度来看,这应该是部署战争时使用的那个。
    • 生产数据库中存在 aedb.databasechangelog 表吗?
    • 嗯,不,但我必须自己创建它吗?我认为它会自动创建 - 就像我的开发环境中发生的那样
    • 只是一个想法,但也许在开发环境中 drop-create hibernate 设置处于活动状态,而在 prd 上却不是?
    • 不,这通常是因为我使用数据库迁移插件而被停用
    【解决方案2】:

    使用数据库迁移 (Liquibase) 时,请确保您的数据源中没有 dbCreate。

    【讨论】:

      猜你喜欢
      • 2012-08-10
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      • 2011-06-03
      • 2018-07-25
      相关资源
      最近更新 更多