我有H2数据库和dbconsole随附的grails 2.0。

我想从dbconsole进行数据库备份:

数据库网址:“jdbc:mysql:// localhost / opal”

用户名:root

密码:(无)

在dbconsole的“工具”部分中,有一个备份数据库的选项。

它会问3件事

目标文件名:〜/ backup.zip(默认情况下)

源目录:

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

当我按下run时,它给出了错误,

   No database files have been found in directory E:/Workspace/opal for the database opal

有人可以建议如何进行数据库备份。

最佳答案

我从来没有得到工作。如果您只想获取数据快照以进行开发(在启动时加载),我发现使用DBUnit导出/导入数据对我来说非常有用。我写了一个脚本来导出它,我从控制台调用它:

    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 中可以将其加载回
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'

10-04 22:01
查看更多