8
Jest naprawdę niemożliwe, aby użyć domyślnego schematu dla bezpieczeństwa wiosny w PostgreSQL, część "varchar_ignorecase" does not exist
nie może być zastąpiona?Spring Security jdbcAuthentication domyślny błąd schematu na PostgreSQL
Właśnie testuję ustawienie domyślne.
auth.jdbcAuthentication()
.dataSource(dataSource)
.withDefaultSchema();
A poniżej jest błąd
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.servlet.Filter org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration.springSecurityFilterChain() throws java.lang.Exception] threw exception; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement at line 1 of resource class path resource [org/springframework/security/core/userdetails/jdbc/users.ddl]: create table users(username varchar_ignorecase(50) not null primary key,password varchar_ignorecase(500) not null,enabled boolean not null); nested exception is org.postgresql.util.PSQLException: ERROR: type "varchar_ignorecase" does not exist
Twoje rozwiązanie działa również dla MySQL. –
Dlaczego schemat jest "nieodpowiedni" dla PostgreSQL i MySQL? BTW, działa ... tks – Hinotori
@Hinotori Schemat domyślny (na http://docs.spring.io/spring-security/site/docs/current/reference/html/appendix-schema.html) jest napisany w Dialekt SQL dla HSQLDB (w szczególności, PostgreSQL nie ma typu "varchar_ignorecase", który jest obecny w domyślnym schemacie użytkownika). Użytkownicy innych baz danych muszą przetłumaczyć to na coś, co działa. Zobacz dokumentację na temat inicjowania bazy danych w Spring JDBC tutaj, ma kilka doskonałych wskazówek: http://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html#howto- initialize-a-database-using-spring-jdbc – Lyle