Seite 1 von 3
externe HSQLDB findet auf gemountetem Fritzbox-NAS Netzwerkspfad nur einen Datensatz
Verfasst: Sa 9. Mär 2024, 20:27
von Aubergino
Nach dem Auftrennen der Datenbank.odb, dem Verschieben der Inhalte des Datenverzeichnisses in ein anderes Verzeichnis auf meinem Rechner und dem Anpassen der content.xml wie im Handbuch beschrieben kann ich problemlos auf die Daten zugreifen.
Schiebe ich die Daten in ein Verzeichnis auf der an die Fritz-box angeschlossene und als Laufwerk Z: gemountete Festplatte (und passe die Content.xml entsprechend an) startet Base erfolgreich, öffnet auch die Datenbank und das Hauptformular, zeigt dort aber nur einen einzigen Datensatz an. Schaue ich in die Tabellen, finde ich auch in jeder Tabelle nur einen einzigen Datensatz, irgendwo mittenraus. GLeichermaßen bei kleinen Tabellen mit 10 oder 20 Einträgen als auch in der Haupttabelle mit den Daten der zu verwaltenden Objekte. Immer nur ein DS.
Irgendeine Idee??
Re: externe HSQLDB findet auf gemountetem Netzwerkspfad nur einen Datensatz
Verfasst: So 10. Mär 2024, 10:04
von Freischreiber
Aubergino hat geschrieben: ↑Sa 9. Mär 2024, 20:27
Schiebe ich die Daten in ein Verzeichnis auf der an die Fritz-box angeschlossene und als Laufwerk Z: gemountete Festplatte (und passe die Content.xml entsprechend an) startet Base erfolgreich, öffnet auch die Datenbank und das Hauptformular, zeigt dort aber nur einen einzigen Datensatz an. Schaue ich in die Tabellen, finde ich auch in jeder Tabelle nur einen einzigen Datensatz, irgendwo mittenraus. GLeichermaßen bei kleinen Tabellen mit 10 oder 20 Einträgen als auch in der Haupttabelle mit den Daten der zu verwaltenden Objekte. Immer nur ein DS.
Irgendeine Idee??
Das könnte ein Berechtigungsproblem des SMB-Servers der Fritzbox sein. Schau dir mal die Berechtigungen der Dateien auf dem Netzlaufwerk an. Ich meine mich zu erinnern, um mit Formularen zuzugreifen, braucht man Schreibzugriff. Ich finde aber im Moment nichts per Google.
Re: externe HSQLDB findet auf gemountetem Netzwerkspfad nur einen Datensatz
Verfasst: So 10. Mär 2024, 19:24
von Aubergino
Danke für den Hinweis...
Ich sehe aber auch, wenn ich gar nicht über ein Formular zugreife, sondern nur die Tabellen der Datenbank öffne, nur einen einzigen Datensatz. (Die Dateien sind 1:1 kopiert von den Dateien, mit denen es auf der Festplatte des Rechners läuft). Kann das trotzdem mit den Berechtigungen zu tun haben?
Mein Versuch, die Berechtigungen nachzuschauen, ist leider schon daran gescheitert, dass es den Tab "Sicherheit" in den Dateieigenschaften bei den Dateien (bei allen) auf der Festplatte an der Fritz Box gar nicht gibt. Was ich auch nicht verstehe.
In dem Museum, für die die Datenbank gedacht ist, wollen wir aber von der Fritz-Box-NAS-Lösung sowieso auf eine richtige NAS gehen. Denkt Ihr, dass das Problem dann nicht auftauchen wird?
Re: externe HSQLDB findet auf gemountetem Netzwerkspfad nur einen Datensatz
Verfasst: So 10. Mär 2024, 20:44
von RobertG
Wenn ein richtiges NAS existiert, dann bietet sich da viel eher eine Lösung mit MySQL oder MariaDB an - je nachdem, welche der beiden Datenbanken vom NAS mitgeliefert werden.
Warum soll denn die externe DB auf einem Netzwerkpfad liegen?
Re: externe HSQLDB findet auf gemountetem Netzwerkspfad nur einen Datensatz
Verfasst: Mo 11. Mär 2024, 09:41
von Aubergino
Die DB soll auf den Netzwerkpfad, weil es in dem Museum (ein kleines, ehrenamtlich geführtes Museum mit nur sporadischer Öffnung udn Besetzung), für das ich die Datenbank erstelle, zwei Büros in verschiedenen Gebäuden gibt. Die Datenbank wird gelegentlich aus dem einen und mal aus dem anderen benutzt. Die NAS und die Fritz-Box soll ständig an bleiben. Der "Hauptrechner" in "meinem" Büro nicht. Mit den Daten auf der NAS kann sich das Büro im anderen Gebäude in die Datenbank einschalten, ohne vorher in "meinem" Büro erst den Rechner hochfahren zu müssen.
Außerdem lese ich in diesem und anderen Foren, dass eine größere Datensicherheit gegeben ist?
Bezüglich des Vorschlags, zu MySQL oder MariaDB zu wechseln, mache ich mal einen eigenen Thread auf, das ist ja ein anderes Thema.
Re: externe HSQLDB findet auf gemountetem Netzwerkspfad nur einen Datensatz
Verfasst: Di 12. Mär 2024, 08:43
von Aubergino
Hallo Freischreiber, Robert und alle,
In den Berechtigungen der Fritz-box sind für den angemeldeten Benutzer Lese- und Schreibrechte für alle Dateien gegeben.
Den automatischen Aufruf des Anwenderformulars bei Start der Datenbank habe ich jetzt erst mal herausgenommen.
Nun habe ich versucht, mich über den Datenbankassistenten manuell mit der Datenbank zu verbinden.
Der Test der JDBC Treiberklasse ist erfolgreich.
Der Verbindungstest braucht ca. 5min, um sich dann als erfolgreich zu melden.
Merkwürdig: im Windows-Explorer habe ich das externe Datenverzeichnis in der Anzeige - da rotiert während der ersten zwei oder drei Minuten der Wartekreisel oben links im Tab.
Bei "Fertigstellen" habe ich bei "Speichern unter" wieder die "Bestand_extern" angegeben und bestätigt.
Das Datenbankfenster öffnet sich, bleibt aber zunächst leer. Nach wiederum ca. 5min ist das Datenbankfenster dann gefüllt. Und in allen Tabellen wieder nur ein einziger Datensatz.
Im Datenverzeichnis gibt es nach dem Schließen zusätzlich die Datei .properties.new und .script.new.
Nun könnte man ja befürchten, dass es etwas mit viel zu langsamer Festplatte an der Fritzbox zu tun hat, wegen der 5min. Wenn ich aber die DB mit der internen HSQLDB aus dem Fritz-NAS-Verzeichnis starte, geht alles genau so schnell wie beim Start von einem Verzeichnis der Festplatte des Arbeitsplatzrechners aus.
Was also treibt LO da 5min lang, und warum findet es nur einen DS in jeder Tabelle???
Die Eingaben im Datenbankassistenten und einen Blick in das NAS-Verzeichnis habe ich als .pdf angehängt.
Danke für's Mitdenken...
Re: externe HSQLDB findet auf gemountetem Fritzbox-NAS Netzwerkspfad nur einen Datensatz
Verfasst: Di 12. Mär 2024, 12:13
von JensR
Hallo,
ich habe keine Lösung zu Deinem Dastensatzproblem, aber eventuell zu Deinem Geschwindigkeitsproblem.
Hierzu wäre es von Interesse welche Fritzbox (Typ) einsetzt wird. Eventuell auch zur Firmwareversion.
Die Fritzboxen sind auf ihren USB Ports im Auslieferungszustand aus Energiespargründen auf USB 2 begrenzt, was sich aber ändern lässt. Hinzu kommt, dass die Fritzboxen (die Meisten von Ihnen) auf den USB Ports nicht die schnellsten sind. Auch bei USB 3, und es gibt als Drittes einen Faktor welcher weitgehend unbekannt ist, undzwar handelt es sich um Interferenzen zwische WLAN 2,4 GHz und USB (kein Witz ist von AVM bestätigt). Der Durchsatz kann hierdurch bei USB 3 bis unter USB 2 Geschwindigkeit sinken.
Jensr
Re: externe HSQLDB findet auf gemountetem Fritzbox-NAS Netzwerkspfad nur einen Datensatz
Verfasst: Di 12. Mär 2024, 12:17
von Freischreiber
Was also treibt LO da 5min lang, und warum findet es nur einen DS in jeder Tabelle???
Das ist die 100000-Dollar-Frage.
Merkwürdig: im Windows-Explorer habe ich das externe Datenverzeichnis in der Anzeige - da rotiert während der ersten zwei oder drei Minuten der Wartekreisel oben links im Tab.
Das finde ich allerdings auch merkwürdig. Hast du den SMB-Server in der Fritzbox mal deaktiviert und wieder aktivert (also neu gestartet)?
als Laufwerk Z: gemountete Festplatte
Das liest sich eben nur so vertraut, Festplatte mit Laufwerksbuchstabe. Aber dahinter tickt nunmal ein Server, und was das für das Lesen und Schreiben bedeutet, habe ich keine Ahnung. Aber vermutlich ist genau für solche Fälle der Servermode da.
Hast du noch eine andere Kombination probiert: odb-Datei UND DB-Dateien auf dem Netzlaufwerk, und die odb-Datei von dort gestartet? Wie verhält sich das?
Verlier die Geduld nicht.
Gruß
Freischreiber
Re: externe HSQLDB findet auf gemountetem Fritzbox-NAS Netzwerkspfad nur einen Datensatz
Verfasst: Di 12. Mär 2024, 21:13
von Aubergino
Danke auch an Jens für's Einsteigen...
Es ist eine Fritz Box 6850 LTE, OS-Version 7.57.
USB 3.0 ("Power Mode") ist eingeschaltet.
SMBv1-Unterstützung ist versuchsweise auch mal eingeschaltet.
Ich habe eben auch die .odb auf die Z:-Festplatte kopiert und
von dort aus gestartet, das Ergebnis ist das gleiche. Ewiges
Warten und nur eine Zeile pro Tabelle.
SMB-Server ausschalten (->Übernehmen) und wieder einschal-
ten (->Übernehmen) ändert auch nichts.
Aktuell öffnet sich das Datenbankfenster wieder zügiger mit In-
halten, aber das Öffnen einer Tabelle dauert unverändert meh-
rere Minuten und zeigt nur eine Zeile.
Denkt Ihr denn, dass diese Probleme mit einer echten NAS-Lösung
nicht auftreten können? Ich würde ungern dem Museum die Kos-
ten für die NAS verursachen, und dann klappt es gar nicht...
Re: externe HSQLDB findet auf gemountetem Fritzbox-NAS Netzwerkspfad nur einen Datensatz
Verfasst: Mi 13. Mär 2024, 11:11
von Freischreiber
Hallo Aubergino,
so, jetzt kommt eine Überraschung: bei mir klappt die Lösung mit Datenbank auf dem Fritzbox-Netzlaufwerk und odb-Datei auf dem PC reibungslos. Alle Datensätze, gefühlt genauso schnell wie alles auf dem PC.
Mein USB-Speicher an der Fritzbox ist Ext4-formatiert. Bei dir vermutlich NTFS. Keine Ahnung, ob es daran liegt.
Ich stelle die Verbindung zu der Datenbank nicht von Hand her, sondern mit diesem Makro, das auch aus diesem Forum stammt:
Code: Alles auswählen
Sub Setup 'Tools > Customize... > Events > Open Document
'Globalscope.BasicLibraries.LoadLibrary("MRILib")
On Error Goto ErrorHandler
'get the current path to this .odb file
sPathURL = ThisDatabaseDocument.URL
sPath = ConvertFromURL(sPathURL)
sName = ThisDatabaseDocument.Title
iLen = InStr(sPath, sName)
sPath = Left(sPath, iLen-1)
'setup Class Path
ClassPath:
sClassPath = sPath & "hsqldb.jar"
If Not FileExists(sClassPath) Then
sLine1 = "Please add a copy of the HSQLDB engine (hsqldb.jar) to the current folder : "
sLine2 = "NOTE: This is necessary for proper wizard function, but additional benefits include : "
sLine3 = "* enhanced portability of the database-folder"
sLine4 = "* ensures database compatibility across computers and *Office installations"
sLine5 = "* guards against inadvertent upgrade of your database since the results are uncertain and irreversible"
sLine6 = "* hsqldb 2.x provides a built-in database management GUI accessible by clicking hsqldb.jar."
iButton = MsgBox (chr(13) & sLine1 & chr(13) & chr(13) & sPath & chr(13) & chr(13) & sLine2 & chr(13) & sLine3 & _
chr(13) & sLine4 & chr(13) & sLine5 & chr(13) & sLine6, 18, "hsqldb.jar not found")
If iButton = 3 Then Exit Sub 'ThisDatabaseDocument.close(True)
If iButton = 4 Then Goto ClassPath
End If
sClassPath = ConvertToURL(sClassPath)
ThisDatabaseDocument.DataSource.Settings.JavaDriverClassPath = sClassPath
'get the HSQL database name from the current folder
NextFile = Dir(sPath, 0)
While NextFile <> ""
If (Right(NextFile, 7) = ".script") Then dbName = (Left(NextFile, Len(NextFile)-7))
NextFile = Dir
Wend
If dbName = Empty Then
sLine1 = "Optionally provide a name for your back-end data files. "
sLine2 = "NOTE: The particular name is not important. The default below will suffice. "
dbName = InputBox(sLine1 & chr(13) & chr(13) & sLine2, "Create a new database * JDBC | HSQL database engine | non-embedded data files *", "mydb")
If dbName = "" Then dbName = "mydb"
End If
'check for existing database
sLine1 = "A new database will be created in the current folder: "
sLine2 = "NOTE: This folder constitutes your ""database."" "
sLine3 = "A dedicated database folder is fully portable, and as such it may be renamed or moved as desired."
sLine4 = "NOTE: This Base front-end file (" & sName & ") must remain in this database folder. "
sLine5 = "You may rename this file as desired, but do maintain the .odb extension if visible. Create a desktop shortcut to this file as desired."
sLine6 = "NOTE: The back-end HSQL data files will be named: " & dbName & ".* "
sLine7 = "These files must also remain in this database folder."
If Not FileExists(sPath & dbName & ".script") Then MsgBox sLine1 & chr(13)_
& sPath & chr(13) & chr(13) & sLine2 & sLine3 _
& chr(13) & chr(13) & sLine4 & sLine5 _
& chr(13) & chr(13) & sLine6 & sLine7 _
, 64, "Please Read"
'setup Data Source URL
sURL_prefix = "jdbc:hsqldb:"
sURL_args = ";default_schema=true;shutdown=true;hsqldb.default_table_type=memory;get_column_name=false"
sURL = sURL_prefix & "file:///" & sPath & dbName & sURL_args
ThisDatabaseDocument.DataSource.URL = sURL
Exit Sub
Zuerst hatte ich alle Dateien (odb und DB-Dateien) auf das Netzlaufwerk verschoben. Dann habe ich dort einmal die odb und darin das Makro gestartet, wodurch der Pfad, der unten in der GUI angezeigt wird, sich auf den Netzwerkpfad änderte.
Dieser Pfad bleibt in der odb-Datei dann gespeichert, wenn das Makro nicht mehr ausgeführt wird. Ich habe die odb-Datei zurück auf den Rechner geschoben und die Datenbank öffnet sich problemlos. Ich bin jetzt selbst etwas erstaunt.
Gruß
Freischreiber