Seite 3 von 3

Re: Beziehung läßt sich nicht erstellen

Verfasst: So 3. Feb 2019, 11:12
von Nordlicht00
Hallo Robert,
Ansichten kannst Du in keiner Datenbank anschließend mit Daten versehen.
Doch. In MS SQL geht das . Sowas haben wir auf der Arbeit. Tabellen einer gekauften Datenbank mit einer eigenen Datenbank per View verbunden. Die Datensätze der View ließen sich ganz normal bearbeiten. Wäre ja auch schlecht, wenn das nicht gehen würde, denn dann sind Views unbrauchbar (Berichte hat man doch eher selten, die Hauptaufgabe ist doch das Bearbeiten der Datensätze).
Falls Access so etwas kann, dann versteckt es hinter dem Begriff "Ansicht" auch nur eine Abfrage, wie sie in Base in der GUI erstellt wird.
Eine View ist doch auch nur eine gespeicherte Abfrage. In Access nennt sich das "gespeicherte Abfrage"; In MS SQL "View".
Wenn in MySQL/MariaDB die Datensätze einer "View" auch dann nicht bearbeitbar sind, wenn nur eine einzige Tabelle incl. Primärschlüssel verwendet wird (eine solche Abfrage ist ja immer bearbeitbar, problematisch wird es nur bei Joins über mehrere 1:n-Verknüpfungen, weil dann die Datensätze nicht mehr eindeutig zugeordnet werden können), wie speichert man denn dann eine bearbeitbare Abfrage in phpMyAdmin, so daß die View unter "Tabellen" in LO angezeigt wird und die Datensätze mit LO bearbeitet werden können?


Datenbanken ohne Beziehungen mit referentieller Integrität sind Mist. :!:
Ich habe endlich herausgefunden, wie ich sowohl mit phpMyAdmin als auch in LO die Beziehungen erstellen kann (Connector: MySQL(nativ) ). Ich mußte das Tabellenformat auf "InnoDB" umstellen (voreingestellt ist immer MyISAM). Wenn dann ein Index auf dem Fremdschlüsselfeld existiert (mit oder ohne UNIQUE, also genauso wie in Access), ließ sich die Beziehung erstellen. Die in LO erstellte Beziehung ist auch in phpMyAdmin angekommen, d.h. im Gegensatz zu Access konnte LO die Beziehung direkt auf dem Server erstellen.
Jetzt kann das nicht mehr passieren, daß beim Löschen eines Datensatzes auf der 1-Seite ein verweister Eintrag in der n-Tabelle stehen bleibt. :)
Bei zwei Beziehungen mußte ich zuvor die Fremdschlüsseldatensätze bereinigen, da bereits Schlüsselverletzungen entstanden waren und daher die Beziehung nicht eingerichtet werden konnte. :x Nach der Bereinigung ging es dann.

Erstellen einer Beziehung im Tab "Designer" in phpMyAdmin geht aber immer noch nicht und die Anordnung der Tabellen im Designer-Fenster läßt sich nicht speichern. Nach jedem neuen Aufruf der Designer-Seite sind die Tabellen wieder auf einem Haufen überlappend zusammen gewürfelt. Angezeigt werden die Beziehungslinien dort aber. Zum Glück lassen sich die Beziehungen in phpMyAdmin auch über "Struktur --> Beziehungsansicht" erstellen. Nicht so schön grafisch, aber es funktioniert hier gut. Nur möchte ich natürlich die Beziehungen auch schön grafisch angezeigt bekommen ohne jedesmal die Tabellen übersichtlich anordnen zu müssen, damit ich den Überblick behalte. Woran könnte es liegen, daß die Designer-Seite nicht gespeichert werden kann?

Ein Problem mit LO habe ich noch:
Ich konnte ja ein Index in LO für ein Feld erstellen und dieser Index wurde mir dann auch in phpMyAdmin angezeigt. Soweit gut. Aber wenn ich die Tabelle erneut zum Bearbeiten öffne, dann wird mir der erstellte Index nicht mehr angezeigt :!: In phpMyAdmin ist er aber weiterhin vorhanden. Wie kommt das? Wie kann ich in LO mir anzeigen lassen, welche Indizes für eine Tabelle bzw. ein Feld erstellt wurden?

Re: Beziehung läßt sich nicht erstellen

Verfasst: So 3. Feb 2019, 12:22
von RobertG
Hallo Nordlicht,

ich kenne aus eigener Anwendung nur die internen Datenbanken von Base und MySQL/MariaDB. Schaue ich anderswo im Netz nach dem Begriff "view" und "mysql", so erhalte ich auch dort nur die Informationen zum Anlegen, Ändern und Löschen von Views. Die Dateneingabe in Views gehört vermutlich nicht zu den SQL-Standards. Ich nehme eher an, dass da der Microsoft SQL Server als einziger den Begriff "view" so auslegt, dass da eben auch ganz normale Abfrage mit Eingabemöglichkeit laufen - wie es eben Base mit den Abfragen macht.

Habe gerade auch noch in einem älteren PostgreSQL-Handbuch nachgesehen. Auch dort wird geschrieben, dass aktualisierbare Views nicht unterstützt werden. Stattdessen kann aber eine Prozedur geschrieben werden, die eben statt eines Updates des views ein Update auf die Originaldaten durchführt. Kann also sein, dass eben andere Datenbanken das intern von vornherein so machen, gibt aber natürlich Probleme, wenn es sich bei dem view um Daten aus mehreren Tabellen handelt. Die Probleme tauchen ja in Abfragen von Base dann auch auf.

Wenn bei Dir in MySQL/MariaDB nicht "InnoDB" die Voreinstellung ist, dann hast Du entweder eine veraltete Version (MySQL < 5.5) oder jemand hat vorher an den Standards gedreht. "MyISAM" ist die Standardeinstellung vor Version 5.5 gewesen.

In PHPMyAdmin erstelle ich die Beziehungen direkt in der Tabellenansicht. Mit dem "Designer" habe ich auch einmal gearbeitet, um das Ganze sichtbar zu machen. Bei mir funktioniert der aber auch nicht ohne zutun.

Ich kann zu Problemen mit dem nativen Treiber von MySQL/MariaDB nichts schreiben, weil das Ding bei mir eben nur schreibgeschützte Tabellen öffnet - unbrauchbar.

Gruß

Robert

Re: Beziehung läßt sich nicht erstellen

Verfasst: So 3. Feb 2019, 17:37
von Nordlicht00
Hallo Robert,
Wenn bei Dir in MySQL/MariaDB nicht "InnoDB" die Voreinstellung ist, dann hast Du entweder eine veraltete Version (MySQL < 5.5) oder jemand hat vorher an den Standards gedreht.
Es handelt sich um die in QNAP-NAS bereits integrierte MariaDB (Version 5.5.57 bei aktuellen QTS). Die kann ich über die Systemsteuerung lediglich aktivieren und den Port ändern. Ansonsten gibt es da keine Einstellmöglichkeiten. Auch das phpMyAdmin kann über das App-Center von QTS installiert werden (Version 4.8.2.0). Die Datenbank ist dann sofort verbunden und alle Einstellungen voreingestellt. Aber hier könnte ich wahrscheinlich im integrierten Webserver auch eine andere phpMyAdmin-Version installieren. Im Gegensatz zu den Dateien des SQL-Servers sehe ich die Dateien von phpMyAdmin im Webordner. Aber wenn der Designer bei dir auch Probleme machte, dann hat eine andere Version wohl keinen Sinn?

Habe gerade festgestellt, daß die zwei zuletzt über LO erstellten Beziehungen im Beziehungsfenster von LO nicht mehr zu sehen sind, in phpMyAdmin aber noch angezeigt werden. Wie kommt das? Gespeichert hatte ich das Beziehungsfenster von LO und alle anderen zuvor erstellten Beziehungslinien werden auch noch angezeigt.
Bei mir funktioniert der aber auch nicht ohne zutun.
Wie konntest du das Problem denn lösen?
Ich kann zu Problemen mit dem nativen Treiber von MySQL/MariaDB nichts schreiben, weil das Ding bei mir eben nur schreibgeschützte Tabellen öffnet - unbrauchbar.
Und bei mir war der JDBC-Treiber unter Windows unbrauchbar, weil man damit die Tabellen nicht bearbeiten konnte. Ist schon seltsam, daß diese Treiber so unterschiedlich sind bei verschiedenen Betriebssystemen. Noch schlimmer als der JDBC-Connector für MySQL war der JDBC und ODBC für MariaDB. Ist MariaDB noch nicht so weit entwickelt wie MySQL? Sollte man lieber eine andere Datenbank nehmen? Auf dem QNAP-NAS kann ich noch PostgreSQL (Version 9.3.13.3) über das Appcenter installieren. Allerdings fand ich das mitinstallierte phppgadmin reichlich unkormfortabel. Da bin ich nicht so gut mit zurecht gekommen. Hast du Erfahrung mit der Zusammenarbeit von LO mit PostgreSQL?

Ist es normal daß die Indizes in LO nach erneutem Öffnen der Tabelle nicht mehr angezeigt werden oder liegt das am Connector?

Re: Beziehung läßt sich nicht erstellen

Verfasst: So 3. Feb 2019, 18:12
von RobertG
Hallo Nordlicht,

mit der MariaDB habe ich keine Probleme - auch mit dem Kontakt eben zu LO über JDBC. Nicht die MariaDB bereitet Probleme, sondern die Verbindung von LO nach dort, sofern es um andere Treiber geht.

Die einzige interne (direkte) Verbindung zu einer externen größeren Datenbank, die schon sehr lange in LO integriert ist, ist die Verbindung zu PostgreSQL.

Wenn bestimmte Sachen wie z.B. der Index nicht mehr unter LibreOffice, wohl aber unter phpMyAdmin angezeigt werden, dann ist der Index sehr wohl eingestellt. Der Treiber meldet das LibreOffice aber nicht zurück. Da Du den direkten Treiber nutzt musst Du einfach berücksichtigen, dass der nicht ständig gepflegt wurde, weil wegen der Lizenz eine Integration in LO strittig war. So gab es den Treiber immer als Extension. Die neuesten Versionen bei mir funktionieren aber nicht mehr mit dieser Extension und mit LO 6.2 wird der Treiber zwar integriert, zeigt die Tabellen aber schreibgeschützt: https://bugs.documentfoundation.org/sho ... ?id=122446.

Kann also gut sein, dass Du mit PostgreSQLund LO weniger Probleme hast. Habe ich aber nie weiter getestet, da meine Webdatenbanken alle mit MySQL bzw. MariaDB laufen - problemlos.

Gruß

Robert

Re: Beziehung läßt sich nicht erstellen

Verfasst: Mo 4. Feb 2019, 11:28
von Nordlicht00
Hallo Robert,
und mit LO 6.2 wird der Treiber zwar integriert, zeigt die Tabellen aber schreibgeschützt:
Wieso wird ein unbrauchbarer Treiber integriert? Bei schreibgeschützten Tabellen ist die Datenbank doch nicht nutzbar (man muß schließlich Daten eintragen) und somit macht ein solcher Treiber doch gar keinen Sinn. Kann man bei LO 6.2 denn noch den bisherigen funktionierenden (bis auf Kleinigkeiten wie Index) Treiber MySQL(native) installieren oder muß man bei der jetzigen LO-Version bleiben wenn man die Datenbank richtig nutzen will?
Kann also gut sein, dass Du mit PostgreSQLund LO weniger Probleme hast.
Dann werde ich das noch mal testen.
Habe ich aber nie weiter getestet, da meine Webdatenbanken alle mit MySQL bzw. MariaDB laufen - problemlos.
Problemlos aber offenbar nur unter Linux? Du benutzt doch LO nur unter Linux oder hast du auch unter Windows getestet?

Re: Beziehung läßt sich nicht erstellen

Verfasst: Mo 4. Feb 2019, 15:57
von RobertG
Hallo Nordlicht,

das mit dem nativen Treiber versuche ich doch die ganze Zeit, dir entsprechend klar zu machen: Vor LO 6 funktionierte der Treiber bei mir, der als Extension verfügbar war. Irgendwann war da wieder Funkstille. Mit der Version 6.2 wurde der Treiber integriert, lässt bei mir aber keine Eingabe von Daten über die GUI zu - wohl über SQL direkt. Deswegen habe ich Dir da auch die Bugnummer mit genannt. Ist so natürlich für mich nicht nutzbar. Da ich mit JDBC hier nie Probleme habe empfehle ich grundsätzlich immer noch die JDBC-Verbindung.

Ich nutze gar keine externe Datenbank mit Base. Ich teste das nur, im Falle von MariaDB und MySQL manchmal auch ausführlicher. Webdatenbanken nutze ich nur mit Webserver und PHP. Deswegen kommt mir da PHPMyAdmin auch sehr gelegen.

Meine eigenen Systeme laufen alle auf Linux, der Zugriff auf die Seiten aber auch von Windows aus. Welches System (mit welcher von beiden, MariaDB oder MySQL) bei meinem Anbieter für meine Website läuft habe ich nicht nachgeprüft. Aber da funktioniert der Kontakt und Datenzugriff auch einwandfrei.

Gruß

Robert