Grails 运行H2脚本工具

Grails 运行H2脚本工具,grails,h2,Grails,H2,我在Windows环境中使用“内存中”H2数据库运行Grails2.3.3 我正在尝试使用命令行工具(如Script)来备份数据表 我找到了jar文件: C:\Program Files\springsource\grails-2.3.3\lib\hsqldb\hsqldb\jars\hsqldb-1.8.0.10.jar 下面是我正在尝试的命令: java -cp hsqldb-1.8.0.10.jar orgh2.tools.Shell 但我得到了一个错误: 'Error: Co

我在Windows环境中使用“内存中”H2数据库运行Grails2.3.3

我正在尝试使用命令行工具(如Script)来备份数据表

我找到了jar文件:

C:\Program Files\springsource\grails-2.3.3\lib\hsqldb\hsqldb\jars\hsqldb-1.8.0.10.jar
下面是我正在尝试的命令:

java -cp hsqldb-1.8.0.10.jar orgh2.tools.Shell
但我得到了一个错误:

    'Error: Could not find or load main class orgh2.tools.Shell'
下面是dB配置的说明。我在配置文件DataSource.groovy中定义了两个Dbs,它们目前都使用用户sa,密码为空

以下是数据源文件中的关键行:

dataSource {
            pooled = true
            driverClassName = "org.h2.Driver"
            username = "sa"
            password = ""
}

hibernate {
            cache.use_second_level_cache = true
            cache.use_query_cache = false
            cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}

   dataSource {
    dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
        url = "jdbc:h2:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
    }

dataSource_publish {
    dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
    url = "jdbc:h2:/dbmak/devDb;MVCC=TRUE;LOCK_TIMEOUT10000;
                    AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE"
}
因为这是一个“内存中”配置,所以我无法更改sa密码,因为当grails应用程序重新启动时,它会自动重置为空值

我在grails-2.3.3\lib\com.h2database\h2\jars中找到了java jar

所以我现在的命令是: java-cp h2-1.3.173.jar org.h2.tools.Shell

如果我这样做,则会以交互方式要求我输入一组响应,以便进入目标数据库-即:

密码为空,需要我按RTN两次才能连接

我已经能够成功地进入我的一个数据库(jdbc:h2:/dbmak/devDb),但没有进入另一个,然后能够运行SQL命令

但是,如果我尝试访问dB:jdbc:h2:devDb,我会得到一个错误:

“SQL异常:用户名或密码错误”

这很奇怪,因为我可以通过dbconsole web会话使用相同的用户/密码访问两个dBs

最后,我最终要做的是使用一组脚本将所有单个db表的内容提取到单独的文件中(可能使用-script选项运行单独的文件。理想情况下,命令行应该在没有任何交互的情况下执行此操作-我已尝试使用-url-driver-user和-password输入参数删除此交互部分。但我无法使这些选项中的任何一个正常工作

欢迎任何建议


-mike

看起来你忘记了org后面的一个点,org.h2.tools.ShellYes愚蠢的我-谢谢。@user3584190我想添加-是的,这更有意义-但我仍然收到“找不到错误或加载主类”错误。如果我下载单独的h2安装,那么该命令适用于单独的h2系统。可能这些工具没有加载grail springsource安装?我可以独立加载它们吗?或者有其他方法提取内存数据库的当前内容吗?@mikek您想对DB?Search“h2数据库控制台grails运行查询吗“hsqldb和h2是两个不同的数据库引擎。您需要使用h2而不是hsqldb。您问题中的另一个弱点是:您只能从另一个java进程访问内存中的数据库,前提是您命名了内存中的数据库,并且创建该内存中数据库的jvm没有与之断开连接。
"Driver", "Database", "Login User and finally Password.