Итак, у меня есть несколько простых доменных классов, которые, как я убедился, не используют никаких зарезервированных слов PostgreSQL (или любого другого поставщика, если на то пошло). Выполнение grails schema-export
создает ddl, который при запуске с той же базой данных будет успешно выполнен и без проблем создаст все таблицы.
Однако при запуске моего приложения grails я получаю сообщение об ошибке ERROR: relation "artist" does not exist
. (художник - это домен, образец которого я пытаюсь создать в BootStrap.groovy).
Глядя на свою базу данных, я вижу, что ни одна из таблиц не была создана для моих доменов.
Я включил все журналы для org.hibernate
, но там нет ничего, что указывало бы на какие-либо проблемы. Единственная проблема, которую я вижу, заключается в том, что нет регистрации, связанной с созданием каких-либо таблиц, только то, что кажется образцом запросов для простых выборок.
Вот мой DataSource.groovy:
dataSource {
pooled = true
driverClassName = "org.postgresql.Driver"
dialect = "org.hibernate.dialect.PostgreSQLDialect"
username = "my_username"
password = "my_password"
}
hibernate {
cache.use_second_level_cache = false
cache.use_query_cache = false
cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}
// environment specific settings
environments {
development {
dataSource {
dbcreate = "create-drop"
url = "jdbc:postgresql://localhost:5432/dev"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:postgresql://localhost:5432/test"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:postgresql://localhost:5432/prod"
pooled = true
properties {
maxActive = -1
minEvictableIdleTimeMillis=1800000
timeBetweenEvictionRunsMillis=1800000
numTestsPerEvictionRun=3
testOnBorrow=true
testWhileIdle=true
testOnReturn=true
validationQuery="SELECT 1"
}
}
}
}
Я проверил, что учетные данные (фальшивые выше) действительны, у пользователя есть разрешения, база данных работает в указанном месте и т. Д.
Есть ли что-то, чего мне не хватает, или какой-либо другой тип ведения журнала, который я могу включить, который, возможно, покажет, что это за ошибка, или поможет найти ее?
Что мне кажется наиболее любопытным, так это то, что ddl, созданный schema-export
, работает нормально. Создает ли grails SQL по-разному во время выполнения, или есть что-то, что может заставить grails не выполнять ни один из операторов create?
Grails версии 2.1.1, PostgreSQL 9.2.1
BootStrap по запросу:
import my.site.domain.artist.*
class BootStrap {
def init = { servletContext ->
System.out.println("\n")
log.info("---------------------------------------------------")
log.info("BootStrap initializing...")
log.info("---------------------------------------------------")
TimeZone.setDefault(TimeZone.getTimeZone("UTC"))
log.info("Default TimeZone set to " + TimeZone.getDefault().displayName)
Artist artist = new Artist(artistName: 'Artist Name', shortBio: "Short Bio", biography: "Bio", url: "/some_artist")
artist.save()
if(artist.hasErrors()) {
log.info(artist.errors)
} else {
log.info("--Artist--")
log.info("dateCreated: " + artist.dateCreated)
log.info("lastUpdated: " + artist.lastUpdated)
log.info("mediumImageURL: " + artist.mediumImageURL)
}
}
def destroy = {
}
}
org.hibernate
, который не показывает никакого SQL-запроса create. Единственный результат, который он действительно производит, - это конфигурация БД и простые операции CRUD (которые, как я полагаю, он сохраняет для дальнейшего использования). К сожалению, ничего, что могло бы вызвать тревогу. - person kz3   schedule 19.10.2012