2012-10-09 42 views
1

我有Grails 2.0,它随H2数据库和dbconsole一起提供。Grails H2数据库DbConsole - 数据库备份

我想从DBCONSOLE采取数据库备份:

DATABSE网址:为 “jdbc:mysql的://本地主机/蛋白石”

用户名:根

密码:(无)

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

它会问三件事情

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

源目录:

源数据库名称:蛋白石(我的数据库的名称)

当我按运行,它给错误,

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

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

+1

H2备份工具只能备份H2数据库文件(不是MySQL数据库)。您没有设置源目录,因此该工具将尝试搜索当前工作目录下的H2数据库,该目录在您的案例中为“E:/ Workspace/opal”,并且没有找到H2数据库。 –

回答

0

我从来没有得到那个工作。如果你只是想要开发数据的快照(在启动时加载),我发现使用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() 
    } 
} 

然后在引导你可以加载它放回

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

我觉得这site将是非常有帮助的。或者,在以数据库的转储和恢复下面的数据库尝试片段:

mysqldump -u root -p my_database Table1 Table2 > /home/user/tablesDump.sql; 

和恢复表(一个或多个)回:在my_database_2创建

mysql -u root -p my_database_2 
mysql> source /home/user/tablesDump.sql; 

两个表。