Bitte wähle nachfolgend aus, welche Beiträge auf dieser Themenseite auf dem Ausdruck ausgegeben werden sollen. Um dies zu tun markiere bitte die Checkbox auf der linken Seite der Posts, die im Ausdruck berücksichtigt werden sollen und klicke anschließend ganz unten auf der Seite auf den Button "Drucken".

MariaDB-Fehler

jansohn

Betreff:

MariaDB-Fehler

 ·  Gepostet: 08.04.2025 - 12:01 Uhr  ·  #176539
Hallo,
ich versuche gerade von H2 auf MariaDB umzustellen. Leider kommt beim Starten von Jameica/Hibiscus ein Fehler beim Starten des Plugins...

Sieht so aus als würde er in der Klasse DBIteratorImpl hart auf mysql_version prüfen. Leider kann ich den Source Code dazu auf GitHub nicht finden, um es genauer anzuschauen...

Code

[Tue Apr 08 11:36:12 CEST 2025][INFO][main][de.willuhn.jameica.gui.SplashScreen$3.run]  initializing plugin hibiscus ...
[Tue Apr 08 11:36:12 CEST 2025][INFO][main][de.willuhn.jameica.hbci.HBCI.init] starting init process for hibiscus
[Tue Apr 08 11:36:12 CEST 2025][INFO][main][de.willuhn.jameica.hbci.server.HBCIDBServiceImpl.<init>] loading database driver: de.willuhn.jameica.hbci.server.DBSupportMySqlImpl
[Tue Apr 08 11:36:12 CEST 2025][INFO][main][de.willuhn.datasource.db.DBServiceImpl.start] starting db service
[Tue Apr 08 11:36:12 CEST 2025][INFO][main][de.willuhn.jameica.hbci.server.DBSupportMySqlImpl.getJdbcDriver] try to determine JDBC driver
[Tue Apr 08 11:36:12 CEST 2025][INFO][main][de.willuhn.jameica.hbci.server.DBSupportMySqlImpl.getJdbcDriver] auto-detected JDBC driver: org.mariadb.jdbc.Driver
[Tue Apr 08 11:36:12 CEST 2025][INFO][main][de.willuhn.jameica.hbci.server.HBCIDBServiceImpl.checkConsistency] determine current database version
[Tue Apr 08 11:36:12 CEST 2025][INFO][main][de.willuhn.datasource.db.DBServiceImpl.createConnection] creating new connection
[Tue Apr 08 11:36:12 CEST 2025][INFO][main][de.willuhn.datasource.db.DBServiceImpl.getConnection] transaction isolation level: 2
[Tue Apr 08 11:36:12 CEST 2025][INFO][main][de.willuhn.datasource.db.DBServiceImpl.getConnection] created new connection for <local>
[Tue Apr 08 11:36:12 CEST 2025][WARN][main][de.willuhn.jameica.hbci.server.HBCIDBServiceImpl.checkConsistency] unable to determine database version - database probably empty, recreating
[Tue Apr 08 11:36:12 CEST 2025][INFO][main][de.willuhn.util.I18N.<init>] loading resource bundle lang/hibiscus_messages for locale en
[Tue Apr 08 11:36:12 CEST 2025][INFO][main][de.willuhn.jameica.gui.SplashScreen$3.run]  Installiere Hibiscus ...
[Tue Apr 08 11:36:12 CEST 2025][ERROR][main][de.willuhn.jameica.hbci.server.HBCIDBServiceImpl.checkConsistency] unable to recreate database
java.rmi.RemoteException: unable to init iterator. statement: ClientPreparedStatement{sql:'select version.* from version where name = ?', parameters:['db']}; nested exception is: 
  java.sql.SQLException: Unknown label 'mysql_version'. Possible value [version.version, name, version.id, id, version, version.name]
  at de.willuhn.datasource.db.DBIteratorImpl.init(DBIteratorImpl.java:234)
  at de.willuhn.datasource.db.DBIteratorImpl.hasNext(DBIteratorImpl.java:249)
  at de.willuhn.jameica.hbci.server.VersionUtil.getVersion(VersionUtil.java:46)
  at de.willuhn.jameica.hbci.server.HBCIDBServiceImpl.checkConsistency(HBCIDBServiceImpl.java:159)
  at de.willuhn.jameica.hbci.HBCI$1.call(HBCI.java:122)
  at de.willuhn.jameica.hbci.HBCI.call(HBCI.java:371)
  at de.willuhn.jameica.hbci.HBCI.init(HBCI.java:118)
  at de.willuhn.jameica.plugin.PluginLoader.initPlugin(PluginLoader.java:394)
  at de.willuhn.jameica.plugin.PluginLoader.init(PluginLoader.java:239)
  at de.willuhn.jameica.services.PluginService.init(PluginService.java:39)
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:139)
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:119)
  at de.willuhn.boot.BootLoader.getBootable(BootLoader.java:70)
  at de.willuhn.jameica.system.Application.init(Application.java:103)
  at de.willuhn.jameica.system.Application.newInstance(Application.java:87)
  at de.willuhn.jameica.Main.main(Main.java:78)
Caused by: java.sql.SQLException: Unknown label 'mysql_version'. Possible value [version.version, name, version.id, id, version, version.name]
  at org.mariadb.jdbc.client.result.Result.findColumn(Result.java:1760)
  at org.mariadb.jdbc.client.result.Result.getString(Result.java:688)
  at de.willuhn.datasource.db.types.TypeString.get(TypeString.java:30)
  at de.willuhn.datasource.db.AbstractDBObject.fill(AbstractDBObject.java:302)
  at de.willuhn.datasource.db.DBIteratorImpl.init(DBIteratorImpl.java:226)
  ... 15 more

[Tue Apr 08 11:36:12 CEST 2025][ERROR][main][de.willuhn.jameica.hbci.HBCI.call] unable to init db service
java.rmi.RemoteException: unable to init iterator. statement: ClientPreparedStatement{sql:'select version.* from version where name = ?', parameters:['db']}; nested exception is: 
  java.sql.SQLException: Unknown label 'mysql_version'. Possible value [version.version, name, version.id, id, version, version.name]
  at de.willuhn.datasource.db.DBIteratorImpl.init(DBIteratorImpl.java:234)
  at de.willuhn.datasource.db.DBIteratorImpl.hasNext(DBIteratorImpl.java:249)
  at de.willuhn.jameica.hbci.server.VersionUtil.getVersion(VersionUtil.java:46)
  at de.willuhn.jameica.hbci.server.HBCIDBServiceImpl.checkConsistency(HBCIDBServiceImpl.java:141)
  at de.willuhn.jameica.hbci.HBCI$1.call(HBCI.java:122)
  at de.willuhn.jameica.hbci.HBCI.call(HBCI.java:371)
  at de.willuhn.jameica.hbci.HBCI.init(HBCI.java:118)
  at de.willuhn.jameica.plugin.PluginLoader.initPlugin(PluginLoader.java:394)
  at de.willuhn.jameica.plugin.PluginLoader.init(PluginLoader.java:239)
  at de.willuhn.jameica.services.PluginService.init(PluginService.java:39)
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:139)
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:119)
  at de.willuhn.boot.BootLoader.getBootable(BootLoader.java:70)
  at de.willuhn.jameica.system.Application.init(Application.java:103)
  at de.willuhn.jameica.system.Application.newInstance(Application.java:87)
  at de.willuhn.jameica.Main.main(Main.java:78)
Caused by: java.sql.SQLException: Unknown label 'mysql_version'. Possible value [version.version, name, version.id, id, version, version.name]
  at org.mariadb.jdbc.client.result.Result.findColumn(Result.java:1760)
  at org.mariadb.jdbc.client.result.Result.getString(Result.java:688)
  at de.willuhn.datasource.db.types.TypeString.get(TypeString.java:30)
  at de.willuhn.datasource.db.AbstractDBObject.fill(AbstractDBObject.java:302)
  at de.willuhn.datasource.db.DBIteratorImpl.init(DBIteratorImpl.java:226)
  ... 15 more

[Tue Apr 08 11:36:12 CEST 2025][INFO][main][de.willuhn.datasource.db.DBServiceImpl.stop] stopping db service
[Tue Apr 08 11:36:12 CEST 2025][INFO][main][de.willuhn.datasource.db.DBServiceImpl.closeConnection] commit connection
[Tue Apr 08 11:36:12 CEST 2025][INFO][main][de.willuhn.datasource.db.DBServiceImpl.closeConnection] closing connection
[Tue Apr 08 11:36:12 CEST 2025][INFO][main][de.willuhn.datasource.db.DBServiceImpl.closeConnection] connection closed
[Tue Apr 08 11:36:12 CEST 2025][INFO][main][de.willuhn.datasource.db.DBServiceImpl.stop] db service stopped [1 connection(s) closed]
[Tue Apr 08 11:36:12 CEST 2025][ERROR][main][de.willuhn.jameica.plugin.PluginLoader.init] unable to init plugin hibiscus: Hibiscus-Datenbank konnte nicht initialisiert werden.

hibiscus

Betreff:

Re: MariaDB-Fehler

 ·  Gepostet: 08.04.2025 - 15:03 Uhr  ·  #176542
Das ist der selbe Fehler wie hier: forum/topic.php?p=176508#real176508
Nur halt nicht die Spalte "bankleitzahl" betreffend sondern "mysql_version". In Hibiscus gibt es keine solche Spalte und die wird auch nirgends im Quellcode referenziert. Dein MySQL-User sieht hier versehentlich eine Tabelle "version" aus einer anderen Datenbank, in der es diese Spalte gibt.

jansohn

Betreff:

Re: MariaDB-Fehler

 ·  Gepostet: 08.04.2025 - 15:43 Uhr  ·  #176545
Ja, mein Benutzer hatte versehentlich auch Berechtigungen für die sys Datenbank. Sollte der Code aber nicht explizit nur auf die hibiscus Datenbank zugreifen?

Der Import ist nun auf jeden Fall erfolgreich gestartet...

hibiscus

Betreff:

Re: MariaDB-Fehler

 ·  Gepostet: 08.04.2025 - 16:01 Uhr  ·  #176547
Das ist ein bekanntes Problem bei MySQL/MariaDB. In der JDBC-URL ist ja explizit die Datenbank angegeben, die verwendet werden soll. Beim Laden der Datenbank-Metadaten (um herauszufinden, welche Spalten in einer Tabelle existieren) gibt Hibiscus explizit kein Schema an, weil sonst die Metadaten bei MySQL nicht gefunden werden würden. Unter https://bugs.mysql.com/bug.php?id=94223 ist das näher beschrieben. Du könntest mal testen, ob es hilft, den Parameter "&useInformationSchema=false" (auch mal mit "true") an die JDBC-URL anzuhängen.

jansohn

Betreff:

Re: MariaDB-Fehler

 ·  Gepostet: 08.04.2025 - 20:57 Uhr  ·  #176552
Danke für den Link zum Bugreport. 6 Jahre alt und immer noch kein Fix, wow. Vielleicht ein Grund Postgres doch nochmal näher zu betrachten?

&useInformationSchema\=false (oder true) hat nicht geholfen...

hibiscus

Betreff:

Re: MariaDB-Fehler

 ·  Gepostet: 08.04.2025 - 21:04 Uhr  ·  #176553
Postgres unterstütze ich leider nicht mehr offiziell.

jansohn

Betreff:

Re: MariaDB-Fehler

 ·  Gepostet: 08.04.2025 - 23:49 Uhr  ·  #176555
Ich weiß, daher mein Hinweis diese Entscheidung eventuell doch nochmal zu überdenken. Ich habe bisher nur gute Erfahrungen mit Postgres gesammelt (v.a. als Docker Container sehr einfach zu handhaben).

heikorobert

Betreff:

Re: MariaDB-Fehler

 ·  Gepostet: 18.04.2025 - 15:33 Uhr  ·  #176681
Ich habe das gleiche Problem nun nach einem Hibiscus-Update auf MySQL (8.0) und mehreren hibiscus-DBs (privat, familie)
Beim Starten kommt:
Code

select version.* from version where name = 'db'; nested exception is: 
  java.sql.SQLSyntaxErrorException: Column 'mysql_version' not found.

In der Kommandozeile funktioniert das Statement wie erwartet .

Jahrelang hat es so funktioniert ...

heikorobert

Betreff:

Re: MariaDB-Fehler

 ·  Gepostet: 19.04.2025 - 00:18 Uhr  ·  #176685
Als work around habe ich nun für die Hibiscus-Version 2.10.25 jeder DB einen eigenen User zugewiesen und diesem jeweils nur eine db berechtigt. Auf diese Weise klappt jetzt wenigstens der Start mit der Besonderheit, dass ich den Treiber trotz mysql auf mariadb umstellen musste.

Das Problem mit den "falschen" Tabellen ist aber für mich neu und erst mit der aktuellen hibiscus-Version aufgetaucht.
Mit anderen Java-Anwendungen und mysql hatte ich diese Probleme noch nicht.