首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grails H2数据库DbConsole -数据库备份

问Grails H2数据库DbConsole -数据库备份
EN

Stack Overflow用户
提问于 2012-10-09 20:51:56
回答 2查看 1.1K关注 0票数 1

我有Grails2.0,它带有H2数据库和dbconsole。

我想从dbconsole获取数据库备份:

数据库url:"jdbc:mysql://localhost/opal“

用户名: root

密码:(无)

在dbconsole的tools部分中,有一个备份数据库的选项。

它会问3件事

目标文件名:~/backup.zip(默认)

源目录:

源数据库名称: opal (我的数据库名称)

当我按run时,它会给出错误,

代码语言:javascript
复制
   No database files have been found in directory E:/Workspace/opal for the database opal 

有谁能建议如何备份数据库吗?

EN

回答 2

Stack Overflow用户

发布于 2012-10-09 22:10:46

我从来没有让它工作过。如果您只是想要一个用于开发的数据快照(在启动时加载),我发现使用DBUnit导出/导入数据对我来说非常有效。我写了一个脚本来导出它,我从控制台调用它:

代码语言:javascript
复制
    class DataExport {

    def ctx = SCH.servletContext.getAttribute(GA.APPLICATION_CONTEXT)   

    def exportData() {
        println "-->export"
        def ds = ctx.dataSourceUnproxied
        println ds.dump()

        Connection jdbcConnection = ctx.dataSourceUnproxied.getConnection()
        IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);
        println connection.dump()
        ITableFilter filter = new DatabaseSequenceFilter(connection);
        IDataSet dataset = new FilteredDataSet(filter, connection.createDataSet());
        FlatXmlDataSet.write(dataset, new File("full.xml").newWriter());
        connection.close()
    }
}

然后在bootstrap中,您可以将其加载回

代码语言:javascript
复制
Connection jdbcConnection
FlatXmlDataSet dataSet = new FlatXmlDataSetBuilder().build(new ClassPathResource('resources/data/full.xml').inputStream)

jdbcConnection = ctx.dataSource.getConnection()
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);
try {
     DatabaseOperation.INSERT.execute(connection, dataSet)
} catch(e) {
    e.printStackTrace()
    throw(e)
} finally {
    jdbcConnection.close()
}
log.info 'data loaded'
票数 0
EN

Stack Overflow用户

发布于 2013-06-24 15:46:39

我认为这个site会很有帮助。或者,在转储数据库并恢复数据库时,尝试以下代码片段:

代码语言:javascript
复制
mysqldump -u root -p my_database Table1 Table2 > /home/user/tablesDump.sql;

并将表恢复回:

代码语言:javascript
复制
mysql -u root -p my_database_2  
mysql> source /home/user/tablesDump.sql;

这两个表都是在my_database_2中创建的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12800464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档