Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Groovy & Grails > не сохраняются изменения в БД


Автор: julka137 21.4.2013, 00:57
Всем привет! 
Подскажите, пожалуйста, как решить проблему: создаю grails-приложение, создаю домен и контроллер. Когда запускаю приложение, ввожу данные и сохраняю их, то при повторном запуске приложения этих данных уже нет. Использую стандартную БД - H2. Если посмотреть через bdconsole, то там созданных таблиц (если я правильно понимаю, то они создаются через домен и контроллер??) нет.... 
Никак не могу найти решения... Помогите пожалуйста, хотя бы понять причину. Заранее спасибо.

Автор: Stolzen 21.4.2013, 08:51
Случаем не embedded in-memory бд используется?

Автор: julka137 21.4.2013, 11:22
Цитата(Stolzen @ 21.4.2013,  08:51)
Случаем не embedded in-memory бд используется?


наверное используется, если я правильно поняла, о чём Вы. Вот скрин dbconsole: http://s1.ipicture.ru/uploads/20130421/aqp49O48.jpg

Автор: Dummy 22.4.2013, 11:00
Проверьте конфигурацию data source для того режима, в котором вы запускаете (development, prod, test и т. д.) Конкретнее - какой режим dbCreate прописан в DataSource.groovy. Например, в development-режиме по умолчанию назначено так:
Код

environments {
    development {
        dataSource {
            dbCreate = "create-drop"
            ...
        }
    }
}

Это означает, что при запуске приложения база каждый раз удаляется и создаётся заново. Чтобы база не пересоздавалась каждый раз, должно быть dbCreate = "update".

Автор: julka137 22.4.2013, 14:06
Цитата(Dummy @ 22.4.2013,  11:00)
Проверьте конфигурацию data source для того режима, в котором вы запускаете (development, prod, test и т. д.) Конкретнее - какой режим dbCreate прописан в DataSource.groovy. Например, в development-режиме по умолчанию назначено так:
Код

environments {
    development {
        dataSource {
            dbCreate = "create-drop"
            ...
        }
    }
}

Это означает, что при запуске приложения база каждый раз удаляется и создаётся заново. Чтобы база не пересоздавалась каждый раз, должно быть dbCreate = "update".

да, я это проверяла, в настройках в этом плане вроде бы нормально:
Код

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


просто даже если бы стоял 'create-drop', то я думаю в dbconsole таблицы должны были бы хотя бы создаться, но там ничего нет...

Автор: Dummy 22.4.2013, 16:37
В скриншоте dbConsole, который вы сначала показывали, URL вот такой:
Код

jdbc:h2:~devDb;MVCC=TRUE

, а теперь же вы пишете про вот такой:
Код

jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000


Какому из них верить?  smile Если урл у вас действительно начинается с "jdbc:h2:mem", то Stolzen прав - это in-memory DB.

Автор: julka137 23.4.2013, 19:53
Цитата(Dummy @ 22.4.2013,  16:37)
В скриншоте dbConsole, который вы сначала показывали, URL вот такой:
Код

jdbc:h2:~devDb;MVCC=TRUE

, а теперь же вы пишете про вот такой:
Код

jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000


Какому из них верить?  smile Если урл у вас действительно начинается с "jdbc:h2:mem", то Stolzen прав - это in-memory DB.

ух ты-ж ёлки-палки))) пора покупать очки)) скопирую полностью url из datasource, думаю, что теперь всё нормально будет))
 спасибо всем огромное))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)