Jeu de H2 schéma de connexion
Je suis à la configuration d'un h2 base de données de test pour notre oracle base de données de production. Toutes les tables du schéma xxx
. Ma source de données est définie comme ci-dessous:
public DataSource dataSource() {
JdbcDataSource ds = new JdbcDataSource();
ds.setUrl("jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=Oracle;TRACE_LEVEL_SYSTEM_OUT=2;INIT=CREATE SCHEMA IF NOT EXISTS xxx;SCHEMA=xxx");
ds.setUser("xxx");
ds.setPassword("xxx");
return ds;
}
Avec SCHEMA=xxx
, j'obtiens une erreur: Caused by: org.h2.jdbc.JdbcSQLException: Schema "xxx" not found; SQL statement: SET SCHEMA xxx [90079-186]
Sans SCHEMA=xxx
, j'ai des erreurs à chaque fois que Hibernate tente d'exécuter une requête avec une jointure, car il n'est pas à mettre le schéma pour le nom de la table. Cette production avec notre base de données oracle.
Edit:
Pour préciser un peu plus de perspicacité, je suis le remplissage de ma db à partir de la création de scripts qui sont également utilisés dans la production:
@Bean
public DataSourceInitializer dataSourceInitializer(final DataSource dataSource) {
final DataSourceInitializer initializer = new DataSourceInitializer();
initializer.setDataSource(dataSource);
initializer.setDatabasePopulator(databasePopulator());
return initializer;
}
private DatabasePopulator databasePopulator() {
final ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
populator.setSeparator(";");
populator.setCommentPrefix("--");
populator.addScript(new ClassPathResource("db-schema.sql"));
populator.addScript(new ClassPathResource("db-init-data.sql"));
return populator;
}
Il existe parce qu'il est créé avec
INIT=CREATE SCHEMA IF NOT EXISTS xxx
. Tout le reste fonctionne comme prévu, outre les requêtes qui cause des jointures.désolé, je n'ai pas d'avis
OriginalL'auteur Roger | 2015-03-23
Vous devez vous connecter pour publier un commentaire.
Cette chaîne de connexion a fonctionné:
ds.setUrl("jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=Oracle;TRACE_LEVEL_SYSTEM_OUT=2;INIT=CREATE SCHEMA IF NOT EXISTS xxx\\;SET SCHEMA xxx");
OriginalL'auteur Roger
Je suggère que vous devriez utiliser
hibernate.hbl2ddl.auto=create
pour créer schéma de connexion.Ici quelques infos
Hibernate hbm2ddl.auto valeurs possibles et ce qu'ils font?
ROLE_PERMISSION
pasxxx.ROLE_PERMISSION
OriginalL'auteur Antoniossss