Grails 3.3.x, похоже, не поддерживает схему на пользователя с PostgreSQL - PullRequest
0 голосов
/ 26 мая 2018

Кому-нибудь удалось использовать Grails 3.3.x с многопользовательским режимом и PostgreSQL?Кажется, проблема в синтаксисе SQL, используемом в классе DefaultSchemaHandler.groovy.Для PostgreSQL правильный синтаксис: SET SCHEMA 'schemaName', но DefaultSchemaHandler пропускает одиночные галочки: SET SCHEMA schemaName, что приводит к сбою запуска с:

Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.postgresql.util.PSQLException: ERROR: syntax error at or near "information_schema"

В дальнейших исключениях перечислены другие схемы вPG DB, пока запуск не завершится неудачей полностью.Кажется, нет никакого способа переопределить DefaultSchemaHandler, и никто другой не борется с этой проблемой, что меня удивляет.

Я должен добавить, что все это прекрасно работает в Grails 3.2.11, с которого я был занят, портируя.

1 Ответ

0 голосов
/ 26 мая 2018

Я решил собственную проблему, реализовав свой собственный SchemaHandler следующим образом:

@CompileStatic
@Slf4j
class PostgreSQLSchemaHandler extends DefaultSchemaHandler {

    PostgreSQLSchemaHandler() {
        super("SET SCHEMA '%s'", "CREATE SCHEMA '%s'", "public")
    }
}

И затем в application.yml я добавил schemaHandler следующим образом:

dataSource:
    pooled: true
    jmxExport: true
    driverClassName: org.postgresql.Driver
    dialect: org.hibernate.dialect.PostgreSQLDialect
    schemaHandler: com.mypackage.PostgreSQLSchemaHandler
...