tom.everett
tom.everett

Reputation: 21

Runtime exception "Unable to determine the appropriate ebean platform given database product name" using ebean 13.25.2-jakarta

I have a project using ebean 13.25.2-jakarta. I've included

io.ebean.ebean
io.ebean.ebean-ddl-generator

I'm configuring ebean programmatically

dataSourceConfig.setUsername(configService.get(DB_USERNAME));
dataSourceConfig.setPassword(configService.get(DB_PASSWORD));
dataSourceConfig.setUrl(configService.get(DB_URL));
dataSourceConfig.setDriver(configService.get(DB_DRIVER));
dataSourceConfig.setPlatform(configService.get(DB_PLATFORM));
/*
* configuration
*/
databaseConfig.setDdlGenerate(configService.getAsBoolean(DB_DDL_GENERATE));
databaseConfig.setDdlRun(configService.getAsBoolean(DB_DDL_GENERATE));
// databaseConfig.setDdlCreateOnly(false);
databaseConfig.setDataSourceConfig(dataSourceConfig);
/*
* create database instance
*/
database = DatabaseFactory.create(databaseConfig);

Unit testing with setPlatform('h2') works, however PROD configuration with setPlatform('mysql') doesn't.

This error is produced:

Caused by: jakarta.persistence.PersistenceException: java.lang.IllegalStateException: Unable to determine the appropriate ebean platform given database product name [mysql] and ebean platform providers [H2]. With ebean 13+ we now have separate platforms (ebean-postgres, ebean-mysql etc) and should use database specific platform dependency like ebean-postgres. Note that we can use ebean-platform-all to include all the platforms.

I'm not sure what to do from here. I've tried include ebean-platform-all and the result is the same.

Edit: added information

The DB settings when running unit tests are:

Username: sa
Password: sa
URL: jdbc:h2:file:~/ipdb.db
Driver: org.h2.Driver
Platform: h2
DDL Generate: true
DDL Run: true

The unit tests run and pass. The PROD settings, which fail are:

Username: ipdb
Password: 123qwe
URL: jdbc:mysql://db/ipdb
Driver: com.mysql.cj.jdbc.Driver
Platform: mysql
DDL Generate: true
DDL Run: false

The full stack trace is:

Configuration file: ipdb.properties Username: ipdb Password: 123qwe URL: jdbc:mysql://db/ipdb Driver: com.mysql.cj.jdbc.Driver Platform: mysql DDL Generate: true DDL Run: false com.khubla.ipdb.db.service.ServiceException: com.khubla.ipdb.db.service.ServiceException: com.khubla.ipdb.db.DAOException: Exception in deleteAll at com.khubla.ipdb.db.service.impl.DatabaseAdminServiceImpl.createDB(DatabaseAdminServiceImpl.java:60) at com.khubla.ipdb.cli.Main.main(Main.java:101) Caused by: com.khubla.ipdb.db.service.ServiceException: com.khubla.ipdb.db.DAOException: Exception in deleteAll at com.khubla.ipdb.db.service.impl.DatabaseAdminServiceImpl.clean(DatabaseAdminServiceImpl.java:50) at com.khubla.ipdb.db.service.impl.DatabaseAdminServiceImpl.createDB(DatabaseAdminServiceImpl.java:57) ... 1 more Caused by: com.khubla.ipdb.db.DAOException: Exception in deleteAll at com.khubla.ipdb.db.GenericRelationalDAO.deleteAll(GenericRelationalDAO.java:80) at com.khubla.ipdb.db.service.impl.DatabaseAdminServiceImpl.clean(DatabaseAdminServiceImpl.java:41) ... 2 more Caused by: jakarta.persistence.PersistenceException: java.lang.IllegalStateException: Unable to determine the appropriate ebean platform given database product name [mysql] and ebean platform providers [H2]. With ebean 13+ we now have separate platforms (ebean-postgres, ebean-mysql etc) and should use database specific platform dependency like ebean-postgres. Note that we can use ebean-platform-all to include all the platforms. at io.ebeaninternal.server.core.DatabasePlatformFactory.create(DatabasePlatformFactory.java:58) at io.ebeaninternal.server.core.DefaultContainer.setDatabasePlatform(DefaultContainer.java:219) at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:109) at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:33) at io.ebean.DatabaseFactory.createInternal(DatabaseFactory.java:135) at io.ebean.DatabaseFactory.create(DatabaseFactory.java:84) at com.khubla.ipdb.db.DBUtil.(DBUtil.java:74) at com.khubla.ipdb.db.DBUtil.getInstance(DBUtil.java:107) at com.khubla.ipdb.db.GenericRelationalDAO.deleteAll(GenericRelationalDAO.java:77) ... 3 more Caused by: java.lang.IllegalStateException: Unable to determine the appropriate ebean platform given database product name [mysql] and ebean platform providers [H2]. With ebean 13+ we now have separate platforms (ebean-postgres, ebean-mysql etc) and should use database specific platform dependency like ebean-postgres. Note that we can use ebean-platform-all to include all the platforms. at io.ebeaninternal.server.core.DatabasePlatformFactory.byDatabaseMeta(DatabasePlatformFactory.java:104) at io.ebeaninternal.server.core.DatabasePlatformFactory.byDataSource(DatabasePlatformFactory.java:80) at io.ebeaninternal.server.core.DatabasePlatformFactory.create(DatabasePlatformFactory.java:55) ... 11 more

Upvotes: 0

Views: 99

Answers (0)

Related Questions