Reconnect zu einer remote MySQL DB

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

weiss_gabi5
Beiträge: 4
Registriert: Di, 29.03.2011 13:51

Reconnect zu einer remote MySQL DB

Beitrag von weiss_gabi5 »

Hallo liebe Netzgemeinde,

ich greife mit Base auf eine MySQL-DB zu, die auf einem Server (also nicht lokal hier bei mir auf dem Rechner) liegt.
Die Verbindung herzustellen ist gar kein Problem, ich habe JDBC und auch den Direkt-Connector zu einer MySQL-DB ausprobiert.

Folgendes Problem hat sich aber gezeigt:
bei Inaktivität (vielleicht so 30 Sekunden oder 60 Sekunden) meldet der JDBC Connection closed bei Driver und der native MySQL-Connector meldet MySQL Server gone away.

Das wäre ja gar nicht so schlimm, gäbe es irgendwo einen Reconnect - Button, mit dem man die Verbindung zum DB-Server wieder herstellen könnte, aber ich habe so etwas noch nicht gefunden.
Vielleicht gibt es auch ein Macro, das man einfach ausführen lassen kann und welches dann die Verbindung erneuert.

Da muß es doch eine bessere Lösung geben, als immer wieder Base zu schließen und ganz neu wieder zu öffnen....

lieben Gruß
Gabi
gogo
*****
Beiträge: 207
Registriert: Mi, 10.11.2010 13:11

Re: Reconnect zu einer remote MySQL DB

Beitrag von gogo »

Da muß es doch eine bessere Lösung geben, als immer wieder Base zu schließen und ganz neu wieder zu öffnen....
Die DB-Verbindung die beim ersten Zugriff auf Tabellen hergestellt wird ist - wenn sie vom Server her unterbrochen wird - so weit ich weiss nicht wiederherstellbar. Das Einzige das Dir da weiterhelfen kann ist, dass Du die Verbindung definiert öffnest und bei Makroende wieder schliesst. Das Ganze eignet sich dann aber leider nicht zum stundenlangen Durchblättern einer Tabelle.

g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
weiss_gabi5
Beiträge: 4
Registriert: Di, 29.03.2011 13:51

Re: Reconnect zu einer remote MySQL DB

Beitrag von weiss_gabi5 »

Danke für deine schnelle Antwort.
Leider disqualifiziert das Base die Verwendung von externen Datenbanken.
Schade eigentlich.
Naja, dann werde ich mich mal weiter nach anderen Alternativen umsehen müssen.
gogo
*****
Beiträge: 207
Registriert: Mi, 10.11.2010 13:11

Re: Reconnect zu einer remote MySQL DB

Beitrag von gogo »

Leider disqualifiziert das Base die Verwendung von externen Datenbanken.
Da liegst Du mE nicht ganz richtig - ich persönlich würde einer Datenbank mistrauen die während der Arbeit beendete Verbindungen einfach so wiederherstellt. Das "Problem" liegt ja nicht bei Base, sondern bei Deinem MySQL-Anbieter. Ausserdem ist es ja (sehr einfach) möglich die Verbindung neu aufzubauen, was z.B. in Access bei gekappten ODBC-Verbindungen ohne Neustart nicht möglich ist.

g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
weiss_gabi5
Beiträge: 4
Registriert: Di, 29.03.2011 13:51

Re: Reconnect zu einer remote MySQL DB

Beitrag von weiss_gabi5 »

Die MySQL-DB ist vollkommen in Ordnung, so wie sie angeboten wird.
Ich benutze unter anderem die MySQL Workbench und wenn dort die Verbindung nicht mehr besteht, weil vom Server beendet, was ja OK ist - und das kommt auch häufiger vor, dann gibt es da eben einen Refresh-Button und schon ist wieder alles in Ordnung.

@Ausserdem ist es ja (sehr einfach) möglich die Verbindung neu aufzubauen.
Wie ist das denn möglich, ohne Base zu beenden und neu zu starten, genau nach so einer Lösung suche ich ja? Habe ich da was übersehen?

du schriebst doch
Die DB-Verbindung die beim ersten Zugriff auf Tabellen hergestellt wird ist - wenn sie vom Server her unterbrochen wird - so weit ich weiss nicht wiederherstellbar.

Habe ich da etwas falsch verstanden oder habe ich mein Problemchen mit Base gar nicht richtig beschrieben ?

lieben Gruß
Gabi
gogo
*****
Beiträge: 207
Registriert: Mi, 10.11.2010 13:11

Re: Reconnect zu einer remote MySQL DB

Beitrag von gogo »

weiss_gabi5 hat geschrieben: @Ausserdem ist es ja (sehr einfach) möglich die Verbindung neu aufzubauen.
Wie ist das denn möglich, ohne Base zu beenden und neu zu starten, genau nach so einer Lösung suche ich ja? Habe ich da was übersehen?
http://www.starbasicfaq.de/Wiekannmanau ... ifen..html

Code: Alles auswählen

DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
Connection = DatabaseContext.getByName("myDatenbank").GetConnection("","")
weiss_gabi5 hat geschrieben: du schriebst doch
Die DB-Verbindung die beim ersten Zugriff auf Tabellen hergestellt wird ist - wenn sie vom Server her unterbrochen wird - so weit ich weiss nicht wiederherstellbar.
Die DB-Verbindung die beim ersten Zugriff auf Tabellen hergestellt wird "gehört" der IDE - alle Objekte die aus der IDE heraus geöffnet werden nutzen automatisch diese Erst-Verbindung. Bis jetzt ist mir kein Weg bekannt wie man diese Erst-Verbindung (für die IDE) wiederherstellen kann (ausser die *.odb wird neu geöffnet). Mit der Methode .GetConnection kannst Du aber weiterhin auf die Datenbank (erneut) zugreifen, es wird eben eine neue Verbindung erstellt, die Du solange die Variable in der Deine Connection verpackt ist gültig ist (also in der Regel so lange das Makro läuft) "weitervererben" kannst. Ein in diesem Makro geöffnetes Formular (http://www.starbasicfaq.de/Formularopen.html) kann mithilfe der definierten Datenquelle auf die Datenbank erneut zugreifen. Diese Methode kannst Du z.B. auch dazu verwenden um in einem Formular in verschiedenen Subformularen auf unterschiedliche Datenbanken zuzugreifen.

Die Connection in einer Globalen Variable zu verpacken ist ein Weg sie etwas länger am Leben zu halten, aber wesentlich mehr als die 30 Sekunden wird's auch nicht bringen.
weiss_gabi5 hat geschrieben: Habe ich da etwas falsch verstanden oder habe ich mein Problemchen mit Base gar nicht richtig beschrieben ?
"MySQL Server gone away" ist Dein Problem oder? ;)

g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
weiss_gabi5
Beiträge: 4
Registriert: Di, 29.03.2011 13:51

Re: Reconnect zu einer remote MySQL DB

Beitrag von weiss_gabi5 »

@"MySQL Server gone away" ist Dein Problem oder?

genau, wie ich schon in meinem ersten Beitrag geschrieben haben....
_____
bei Inaktivität (vielleicht so 30 Sekunden oder 60 Sekunden) meldet der JDBC Connection closed bei Driver und der native MySQL-Connector meldet MySQL Server gone away.
_____

Tja, dann muß ich leider bei meiner Ansicht bleiben, dass Base für eine Remote MySQL DB überhaupt nicht geeignet ist, was mir im übrigen überhaupt nicht gefallen will, denn die Berichte und Formulare, die man erstellen kann, sind gar nicht so übel und ich habe auch noch keinen besseren kostenlosen visuellen SQL-Komposer gefunden als den bei Base (respektive Access).

Wenn man z.B. ein längeres Formular ausfüllt und zwischendurch nur mal das Telefon klingelt, dann ist man ganz schnell bei 30 oder 60 Sekunden Inaktivität.
Wenn man dann die DB-Verbindung nicht "wiederbeleben" kann, kann ich nicht erkennen, wie man an der Stelle weiterverfahren könnte.

Wirklich schade :-(
gogo
*****
Beiträge: 207
Registriert: Mi, 10.11.2010 13:11

Re: Reconnect zu einer remote MySQL DB

Beitrag von gogo »

Backend-Datenbanken die die Verbindungen automatisch kappen wollen nicht, dass Du permanent verbunden bist ...

Also musst Du Dich für das Update/Insert... frisch verbinden. Du kannst dann also Deinen Datensatz in Ruhe tippen, und telefonieren und und und ... und dann wenn Du fertig bist löst Du ein Makro aus, das folgendes macht: 1. Verbindung herstellen, 2. SQL-Update-(oder Insert)-Statement ausführen, 3. Rückgabe-Ergebnis auswerten.

g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
Antworten