База данных Grails H2 DbConsole — резервное копирование базы данных

У меня есть Grails 2.0, который поставляется с базой данных H2 и dbconsole.

Я хочу сделать резервную копию базы данных из dbconsole:

URL базы данных: "jdbc:mysql://localhost/opal"

Имя пользователя: корень

пароль: (нет)

в разделе инструментов dbconsole есть возможность сделать резервную копию базы данных.

он спросит 3 вещи

Имя целевого файла: ~/backup.zip (по умолчанию)

Исходный каталог:

Имя исходной базы данных: opal (имя моей базы данных)

когда нажимаю запустить выдает ошибку

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

кто-нибудь может подсказать, как сделать резервную копию базы данных.


person maaz    schedule 09.10.2012    source источник
comment
Инструмент резервного копирования H2 может создавать резервные копии только файлов базы данных H2 (но не баз данных MySQL). Вы не указали исходный каталог, поэтому инструмент попытается выполнить поиск баз данных H2 в текущем рабочем каталоге, которым в вашем случае является E:/Workspace/opal, и базы данных H2 там не найдены.   -  person Thomas Mueller    schedule 13.10.2012


Ответы (2)


Я никогда не заставлял это работать. Если вам просто нужен снимок данных для разработки (загрузка при запуске), я обнаружил, что использование 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'
person Rick Mangi    schedule 09.10.2012

Я думаю, что этот сайт был бы очень полезен. Или, при снятии дампа базы данных и восстановлении базы данных, попробуйте фрагмент кода ниже:

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

и восстановить таблицу (таблицы) обратно:

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

Обе таблицы были созданы в my_database_2.

person Aman Adhikari    schedule 24.06.2013