Seite 1 von 1

Datenbankmigration - Die Dateninhalte konnten nicht geladen werden

Verfasst: Di 15. Dez 2020, 18:15
von Cindy
Die Datenbank lief auf einer alten Base-Version, wobei Base das Frontend und Maria das Backend war. Ich habe alles
upgedatet auf:
MariaDB 5.5
LibreOffice 7.0.3
Angebunden über JDBC
MySQL-Connector

Verbindung läuft; Authentifizierung läuft; Tabellen laufen; viele Abfragen laufen; viele Formulare laufen
einige Makros waren fehlerhaft; größtenteils repariert;

Fehler in den Abfragen:
Einige Abfragen laufen nicht und ich kann es mir nicht erklären. Exemplarisch habe ich hier mal einige vorgestellt.
Beispielsweise habe ich eine sehr komplexe Abfrage, die eine Rechnungsausgangsliste erstellt. Diese Abfrage funktioniert als Abfrage (ist aber zu komplex für den Entwurfsmodus) und gibt mir die gewünschten Datensätze zurück. Weiterhin gibt es die Rechnungsausgangsliste_Steuerberater Abfrage, die auf die eben genannte Abfrage zurückgreift:
Statement:
SELECT `Rechnungsausgangsliste`.`Rechnungsnummer`, `Rechnungsausgangsliste`.`Rechnungsdatum`, `Rechnungsausgangsliste`.`Träger-Name`, `Rechnungsausgangsliste`.`Rechnungsbetrag-Brutto`, `Rechnungsausgangsliste`.`Zahlungseingang`, `Auditoren`, `Maßnahme`, `Zertifikat`, `Rechnungsausgangsliste`.`Bemerkung`
FROM `Rechnungsausgangsliste`, `meinedb`.`buffer` AS `buffer`
WHERE `Rechnungsausgangsliste`.`Rechnungsdatum` BETWEEN `buffer`.`Zeitraum_von` AND `buffer`.`Zeitraum_bis`

Diese Abfrage funktioniert. Ich habe sehr ähnlich strukturierte Abfragen, die auf die Rechnungsausgangsliste zurückgreifen, die nicht gehen. Ich habe daraufhin die Statements reduziert, bis ich bei
select * from Rechnungsausgangsliste anlangte. Es ging nicht. Die Fehlermeldung war wie immer: "Die Dateninhalte konnten nicht geladen werden"

Daraufhin habe ich eine neue Abfrage direkt in SQL erstellt und das funktionierende Statement rüberkopiert und es ging NICHT. Es war kopiert. Kein versehentlicher Punkt oder whatever. Das ist für mich nicht erklärlich. Ich habe mir daraufhin die content.xml angeschaut, das sah aber bis auf die Bezeichnung identisch aus. Dennoch ging es nicht.

Bei den nicht in Base funktionierenden Statements ging es übrigens immer, wenn ich die Statements direkt in Maria ausgeführt hatte.

Alternativ hatte ich versucht, die komplexe Anfrage Rechungsausgangsliste als Ansicht zu speichern. Gleiche Fehlermeldung. Wenn ich den View übrigens auf der MariaDB-Ebene ansehe, ist er da und gibt mir die Datensätze zurück.

Alternativ hatte ich versucht, Views in MariaDB direkt zu erstellen. Diese waren in Base nicht sichtbar.

Fehler in den Formularen basieren - soweit ich das überblicken kann - darauf, dass einige Abfragen nicht laufen. Darum kümmere ich mich nach den Abfragen.
Berichte und restliche Makros analog dazu.

Ich hoffe sehr, dass jemand eine Idee hat. Meine sind nun aus.

Tausend Grüße
Cindy

Re: Datenbankmigration - Die Dateninhalte konnten nicht geladen werden

Verfasst: Di 15. Dez 2020, 18:52
von gogo
Treiberproblem.
... bis ich bei select * from Rechnungsausgangsliste anlangte. Es ging nicht ...
Du musst vermutlich irgendwo ein "use meineDatenbank" unterbringen, damit der Treiber weiß welches Schema er verwenden muss. Meist reicht schon ein Testlauf:

Code: Alles auswählen

select * from meineDatenbank.Rechnungsausgangsliste

Re: Datenbankmigration - Die Dateninhalte konnten nicht geladen werden

Verfasst: Di 15. Dez 2020, 20:01
von RobertG
Und was vielleicht noch wichtig ist: Du schreibst von der MariaDB und einem JDBC MySQL-Connector.
Für die MariaDB bietet sich der JDBC-Treiber von https://downloads.mariadb.com/Connectors/java/ an. Der Treiber kann ebenso in den Class-Pfad eingebunden werden und wird mit org.mariadb.jdbc.Driver angesprochen.
Es könnte ja sein, dass der MySQL-Connector neueren Datums nicht mehr einwandfrei mit der MariaDB läuft. Ich habe das hier jetzt allerdings nicht weiter getestet.

Re: Datenbankmigration - Die Dateninhalte konnten nicht geladen werden

Verfasst: Di 15. Dez 2020, 20:06
von Cindy
Bei der Ansprache des Treibers wird die DB schon übergeben:
jdbc:mysql://localhost:3306/meineDB?autoReconnect=true&serverTimezone=Europe/Berlin

Und es geht ja bei der Abfrage Rechnungsausgangsliste_Steuerberater - aber nicht bei der mit dem kopierten Statement.

Kann es sonst eine versteckte Kodierung sein? Irgendwelche Whitespaces, die ungewöhnlich reagieren?

Re: Datenbankmigration - Die Dateninhalte konnten nicht geladen werden

Verfasst: Di 15. Dez 2020, 21:09
von Cindy
RobertG hat geschrieben:
Di 15. Dez 2020, 20:01
Und was vielleicht noch wichtig ist: Du schreibst von der MariaDB und einem JDBC MySQL-Connector.
Für die MariaDB bietet sich der JDBC-Treiber von https://downloads.mariadb.com/Connectors/java/ an. Der Treiber kann ebenso in den Class-Pfad eingebunden werden und wird mit org.mariadb.jdbc.Driver angesprochen.
Es könnte ja sein, dass der MySQL-Connector neueren Datums nicht mehr einwandfrei mit der MariaDB läuft. Ich habe das hier jetzt allerdings nicht weiter getestet.
Hallo Robert,
mit dem Maria-Connector habe ich es nicht geschafft, die Verbindung herzustellen. Daher bin ich wieder auf den Mysql-Treiber umgestiegen.
Viele Grüße
Cindy

Re: Datenbankmigration - Die Dateninhalte konnten nicht geladen werden

Verfasst: Di 15. Dez 2020, 21:38
von RobertG
Hallo Cindy,

das mit dem Connector von MariaDB funktioniert hier einwandfrei. Hast Du denn wirklich org.mariadb.jdbc.Driver als MySQL-JDBC-Treiberklasse angegeben?

Wenn Du mit dem lokalen Rechner arbeitest, also nicht über das Internet nach Daten suchst, dann brauchst Du autoReconnect nicht. Du hast doch die beständige Verbindung.
Auch mit dem MySQL-Treiber funktioniert das Ganze über com.mysql.jdbc.Driver.

Und so ist der Verbindungsstring bei mir, wenn ich direkt über JDBC gehe, nicht über den MySQL-Zuschnitt von LibreOffice:

Code: Alles auswählen

mysql://localhost/libretest?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
Und die Treiberklasse dafür ist dann

Code: Alles auswählen

com.mysql.cj.jdbc.Driver
Funktioniert hier ebenso einwandfrei bei Abfragen.

Gruß

Robert

Re: Datenbankmigration - Die Dateninhalte konnten nicht geladen werden

Verfasst: Mo 21. Dez 2020, 19:38
von Cindy
Ich habe die dahinterliegenden Abfragen so verändert, dass ich keine "Unterabfragen" (Abfragen von Abfragen) verwende. Dann geht es. Ist nicht elegant, funktioniert aber zuverlässig.