LO Anbindung an MariaDB / MySQL mit "Direkte Verbindung"

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
aladin
Beiträge: 30
Registriert: Di 30. Jul 2019, 15:49
Kontaktdaten:

Re: LO Anbindung an MariaDB / MySQL mit "Direkte Verbindung"

Beitrag von aladin » So 11. Aug 2019, 10:01

Hallo Robert.
RobertG hat geschrieben:
So 11. Aug 2019, 09:10
wenn Du die Datenbank seit StarOffice 5.2 mit Dir rumschleppst, dann müsste da vermutlich einiges überarbeitet werden.
Ja, da bin ich gerade dabei.
Die *TEXT-Spalten habe ich schon mal ersetzt.
Allein schon was den Tabellentyp und die Collation würde ich schleunigst aus der Datenbank eine relationale Datenbank machen. MyISAM durch InnoDB ersetzen, latin1_swedish (damals Standard) durch eine UTF8-Codierung. Meine ersten MySQL-Datenbanken (Bibliotheksdatenbank ...) habe ich erst mit der Version 5.0 erstellt. Da habe ich die Relationen auch erst einmal nur über die Programmierung (in PHP) zusammenbekommen. Irgendwann habe ich dann auch da umgestellt.
Auf UTF8 hatte ich schon früher umgestellt. Nur bei MyISAM war ich geblieben. Da gab es irgend einen Grund, glaube es war das autoincrement-Verhalten.
Auf InnoDB werde ich aber jetzt umstellen, wenn ich denn die Datenbank eh anfasse. Mit mysqldump bekommt man das ja relativ schnell umgestellt.

Aber es gibt Neuigkeiten zu den Abstürzen. Ich kann diese jetzt reproduzieren, ohne das Basic-Code im Spiel ist.
Sie treten bei einer Tabelle auf, die folgende Struktur hat:

Code: Alles auswählen

MariaDB [aladin]> describe Angebote1;
+-------------------------+---------------+------+-----+------------+----------------+
| Field                   | Type          | Null | Key | Default    | Extra          |
+-------------------------+---------------+------+-----+------------+----------------+
| DocumentID              | int(10)       | NO   | PRI | NULL       | auto_increment |
| Document_TypID          | int(2)        | NO   |     | 1          |                |
| ProjektID               | int(10)       | YES  | MUL | NULL       |                |
| Document_Typ            | varchar(100)  | YES  |     | Angebot    |                |
| Document_Name           | varchar(255)  | NO   |     |            |                |
| KontaktID               | int(11)       | YES  |     | NULL       |                |
| Leistungsempfaenger     | varchar(255)  | YES  |     | NULL       |                |
| Lieferbemerkung         | varchar(500)  | YES  |     | NULL       |                |
| 13b                     | int(1)        | NO   |     | 0          |                |
| 13bText                 | varchar(255)  | YES  |     | NULL       |                |
| AnsprechpartnerID       | int(10)       | YES  |     | NULL       |                |
| Erstellungsdatum        | date          | NO   |     | 0000-00-00 |                |
| gueltig_bis             | date          | NO   |     | 0000-00-00 |                |
| Skonto_bis              | date          | YES  |     | NULL       |                |
| Minutenverrechnungssatz | decimal(7,4)  | YES  |     | NULL       |                |
| Materialaufschlagsatz   | decimal(5,2)  | YES  |     | NULL       |                |
| MwSt_Satz               | decimal(4,1)  | NO   |     | 0.0        |                |
| Rabatt_Satz             | decimal(4,1)  | NO   |     | 0.0        |                |
| Skonto_Satz             | decimal(4,1)  | YES  |     | NULL       |                |
| Korrektur_Vorzeichen    | char(1)       | NO   |     | -          |                |
| Korrektur_Satz          | decimal(5,2)  | NO   |     | 0.00       |                |
| Korrektur_Anlass        | varchar(255)  | YES  |     | NULL       |                |
| Summe_ohne_MwSt         | decimal(11,2) | YES  |     | NULL       |                |
| Rabatt                  | decimal(11,2) | YES  |     | NULL       |                |
| Summe_nach_Rabatt       | decimal(11,2) | YES  |     | NULL       |                |
| Korrektur               | decimal(11,2) | YES  |     | NULL       |                |
| Summe_nach_Korrektur    | decimal(11,2) | YES  |     | NULL       |                |
| MwSt                    | decimal(11,2) | YES  |     | NULL       |                |
| Summe_mit_MwSt          | decimal(11,2) | YES  |     | NULL       |                |
| AZ_ohne_MwSt            | decimal(11,2) | YES  |     | NULL       |                |
| AZ_MwSt                 | decimal(11,2) | YES  |     | NULL       |                |
| AZ_mit_MwSt             | decimal(11,2) | YES  |     | NULL       |                |
| Zahlbetrag_ohne_MwSt    | decimal(11,2) | YES  |     | NULL       |                |
| Zahlbetrag_MwSt         | decimal(11,2) | YES  |     | NULL       |                |
| Zahlbetrag_mit_MwSt     | decimal(11,2) | YES  |     | NULL       |                |
| Skonto                  | decimal(11,2) | YES  |     | NULL       |                |
| Summe_nach_Skonto       | decimal(11,2) | YES  |     | NULL       |                |
| Bemerkung               | varchar(2000) | YES  |     | NULL       |                |
| Status                  | varchar(20)   | NO   |     | offen      |                |
| Pos_Format              | varchar(10)   | YES  |     | 1          |                |
| Gesperrt                | int(4)        | NO   |     | 0          |                |
| Schreibschutz           | int(1)        | NO   |     | 0          |                |
| Materialeinsatz         | decimal(11,2) | YES  |     | NULL       |                |
| Bauzeit_Tage            | decimal(11,2) | YES  |     | NULL       |                |
| Bauzeit_Stunden         | decimal(11,2) | YES  |     | NULL       |                |
| Skonto_Tage             | int(3)        | YES  |     | NULL       |                |
| Faellig_Tage            | int(3)        | YES  |     | NULL       |                |
| Leerzeilen              | varchar(50)   | YES  |     | NULL       |                |
| Autor                   | int(3)        | NO   |     | 0          |                |
| Geaendert_durch         | int(3)        | NO   |     | 0          |                |
| Geaendert_am            | date          | YES  |     | NULL       |                |
| Rechte                  | int(1)        | NO   |     | 0          |                |
+-------------------------+---------------+------+-----+------------+----------------+
Hier das passende SQL-Statement zum Anlegen einer solchen Tabelle mit 3 Datensätzen:
aladin_Angebote1.zip
(1.46 KiB) 8-mal heruntergeladen
Wenn ein Wert geändert wird und man den Cursor in einen anderen Datensatz setzt, dann stürzt LO zuverlässsig ab.
Es gibt aber andere Tabellen in meiner Datenbank, bei denen LO nicht abstürzt.

Die passenden Backtraces der Abstürze gibt es hier:
bt_db_crash_6304.zip
(5.45 KiB) 9-mal heruntergeladen
@Robert Ob Du mal bei Gelegenheit die Tabelle bei Dir erzeugen könntest und probieren, ob die Abstürze bei Dir auch auftreten?

Gruß und Danke

Heiko

RobertG
Beiträge: 1948
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: LO Anbindung an MariaDB / MySQL mit "Direkte Verbindung"

Beitrag von RobertG » So 11. Aug 2019, 15:57

Hallo Heiko,

was mir zuerst auffällt sind merkwürdige Werte für das Datum. LO versucht verzweifelt aus '0000-00-00' ein Datum zu machen, schafft das natürlich nicht. Ich dachte schon, dass da ein Problem zustande kommt. Passiert aber auch bei Beibehaltung des Wertes nicht.

Eine Absturz habe ich nicht beim Ändern von Datensätzen nicht erzeugen können. Ich habe eine ProjektID geändert, Document-Namen eingegeben, auch einen Leistungsempfänger - alles kein Problem hier mit LO 6.3.0.4.

Wenn ich den Backtrace richtig deute versucht bei Dir Base vor den ersten Datensatz beim Speichern zu springen (direkt die erste Zeile vom Backtrace). Wie verlässt Du den Datensatz? Ich habe in der Tabellenansicht Daten geändert und die Pfeiltasten bzw. die Maus genutzt.

Gruß

Robert
http://de.libreoffice.org/hilfe/dokumentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/map_3/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

aladin
Beiträge: 30
Registriert: Di 30. Jul 2019, 15:49
Kontaktdaten:

Re: LO Anbindung an MariaDB / MySQL mit "Direkte Verbindung"

Beitrag von aladin » So 11. Aug 2019, 17:13

Hallo Robert,

danke fürs Testen.
RobertG hat geschrieben:
So 11. Aug 2019, 15:57
Eine Absturz habe ich nicht beim Ändern von Datensätzen nicht erzeugen können. Ich habe eine ProjektID geändert, Document-Namen eingegeben, auch einen Leistungsempfänger - alles kein Problem hier mit LO 6.3.0.4.
Das ist natürlich Schade, dass Du das nicht nachvollziehen kannst.
Wenn ich den Backtrace richtig deute versucht bei Dir Base vor den ersten Datensatz beim Speichern zu springen (direkt die erste Zeile vom Backtrace).
Die Zeile gehört eigentlich nicht zum Backtrace, habe diese aber mit rein genommen, weil die Warnung auch seltsam ist.
Der Backtrace beginn bzw endet bei #0. Als relevante Zeile würde ich #5 vermuten.

Code: Alles auswählen

#5  0x00007fffbcaa315e in connectivity::mysqlc::OPreparedResultSet::next (this=0x555559001660)
    at /usr/src/debug/app-office/libreoffice-6.3.0.4/libreoffice-6.3.0.4/connectivity/source/drivers/mysqlc/mysqlc_prepared_resultset.cxx:627
Ich meine, dass ich bei älteren Versuchen mit LO und dem LO-Treiber, sinngemäße Fehlermeldungen gesehen habe, dass der Cursor außerhalb des Bereiches liegt. Also wenn versucht wird mit next den Cursor auf einen Datensatz zu setzen, der aber nicht da ist.
Wie verlässt Du den Datensatz? Ich habe in der Tabellenansicht Daten geändert und die Pfeiltasten bzw. die Maus genutzt.
Genauso habe ich es auch gemacht. Die Vorgehensweise passt aber nicht zu dem vorher geschrieben Vermutungen bezüglich next, weil man ja den Cursor in einen vorhanden Datensatz setzt.

In der real gefüllten Tabelle mit 1100 Datensätzen, reichte bei mir schon der Versuch mit der Taste >| ans Ende der Tabelle zu springen, um den Absturz auszulösen.

Ob ich Dir mal eine real gefüllte Tabelle per PN schicken darf?
Würde die ungern online stellen...

Gruß und Danke

Heiko

RobertG
Beiträge: 1948
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: LO Anbindung an MariaDB / MySQL mit "Direkte Verbindung"

Beitrag von RobertG » So 11. Aug 2019, 18:37

Hallo Heiko,

Du kannst mich gerne per privater Mail kontaktieren. Wird für eine LO-Base-Thread inzwischen ja sowieso sehr speziell.

Gruß

Robert
http://de.libreoffice.org/hilfe/dokumentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/map_3/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Antworten