MariaDB-Fehler

 
jansohn
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 9
Dabei seit: 07 / 2020
Betreff:

MariaDB-Fehler

 · 
Gepostet: 08.04.2025 - 12:01 Uhr  ·  #1
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
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10760
Dabei seit: 03 / 2005
Betreff:

Re: MariaDB-Fehler

 · 
Gepostet: 08.04.2025 - 15:03 Uhr  ·  #2
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
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 9
Dabei seit: 07 / 2020
Betreff:

Re: MariaDB-Fehler

 · 
Gepostet: 08.04.2025 - 15:43 Uhr  ·  #3
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
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10760
Dabei seit: 03 / 2005
Betreff:

Re: MariaDB-Fehler

 · 
Gepostet: 08.04.2025 - 16:01 Uhr  ·  #4
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
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 9
Dabei seit: 07 / 2020
Betreff:

Re: MariaDB-Fehler

 · 
Gepostet: 08.04.2025 - 20:57 Uhr  ·  #5
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
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10760
Dabei seit: 03 / 2005
Betreff:

Re: MariaDB-Fehler

 · 
Gepostet: 08.04.2025 - 21:04 Uhr  ·  #6
Postgres unterstütze ich leider nicht mehr offiziell.
jansohn
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 9
Dabei seit: 07 / 2020
Betreff:

Re: MariaDB-Fehler

 · 
Gepostet: 08.04.2025 - 23:49 Uhr  ·  #7
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
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 3
Dabei seit: Gestern
Betreff:

Re: MariaDB-Fehler

 · 
Gepostet: Gestern um 15:33 Uhr  ·  #8
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
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 3
Dabei seit: Gestern
Betreff:

Re: MariaDB-Fehler

 · 
Gepostet: Heute um 00:18 Uhr  ·  #9
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.
Gewählte Zitate für Mehrfachzitierung:   0