SQLITE und Netzwerkpfad

MAC OSX spezifisches Forum
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
shim
Beiträge: 65
Registriert: 12.09.2004 23:09

SQLITE und Netzwerkpfad

Beitrag von shim »

Hallo!

Nun dachte ich mir, ich mache mal meine ersten Versuche, eine Datenbank über das Netzwerk anzusprechen. Klappt aber bei mir nicht.

Ich habe mit dem Beispielcode angefangen.

Code: Alles auswählen

UseSQLiteDatabase()
Procedure CheckDatabaseUpdate(Database, Query$)
   Result = DatabaseUpdate(Database, Query$)
   If Result = 0
      Debug DatabaseError()
   EndIf
   ProcedureReturn Result
 EndProcedure
 InitialPath$ = "C:\"   ; anfänglichen Pfad für die Anzeige festlegen (kann auch leer sein)
  Path$ = PathRequester("Bitte wählen Sie einen Pfad aus", InitialPath$)
  If Path$
    MessageRequester("Information", "Sie haben folgenden Pfad ausgewählt:"+Chr(10)+Path$, 0)
  Else
    MessageRequester("Information", "Der Requester wurde abgebrochen.", 0) 
  EndIf

  a$=path$ ; Nur um den Pfad direkt auswählen zu können...
DatabaseFile$ = a$+"Database.sqlite"
If CreateFile(0, DatabaseFile$)
   CloseFile(0)
   If OpenDatabase(0, DatabaseFile$, "", "")
      CheckDatabaseUpdate(0, "CREATE TABLE food (name CHAR(50), weight INT)")
      CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('apple', '10')")
      CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('pear', '5')")
      CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('banana', '20')")
      If DatabaseQuery(0, "SELECT * FROM food WHERE weight > 7")
         While NextDatabaseRow(0)
            Debug GetDatabaseString(0, 0)
         Wend
         FinishDatabaseQuery(0)
       Else
         DatabaseError()
      EndIf
      CloseDatabase(0)
   Else
      Debug "Can't open database !"
   EndIf
Else
   Debug "Can't create the database file !"
EndIf

Bei mir passiert folgendes:
Die Datenbank wird geöffnet, aber die Select-Abfrage endet mit einem "Disk I/O Error".
Geht das generell nicht oder liegt hier bei mir das Problem?

Viele Grüße
Windows 8.1 Pro 64 Bit | PB 5.31 x86
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3857
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: SQLITE und Netzwerkpfad

Beitrag von bobobo »

mach mal mit unc (\\servernamen\freigabe\... )

damit sollte es gehen, insofern du dort schreiben darfst.
‮pb aktuell5.7 - windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
shim
Beiträge: 65
Registriert: 12.09.2004 23:09

Re: SQLITE und Netzwerkpfad

Beitrag von shim »

Also, ich habe jetzt mit dem "normalen" Netzwerkpfad (der z.B. per PathRequester geliefert wird)

CreateFile(1,"/Volumes/192.168.1.22/xampp/htdocs/telefon/"+"xyz123.txt")

problemlos eine Datei anlegen können. Schreibrechte sollten also verfügbar sein.

Mit CreateFile(1,"//192.168.1.22/xampp/htdocs/telefon/"+"xyz123.txt") wird keine Datei angelegt.

Es muß also noch ein anderes Problem existieren.
Windows 8.1 Pro 64 Bit | PB 5.31 x86
Benutzeravatar
TroaX
Beiträge: 659
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

Re: SQLITE und Netzwerkpfad

Beitrag von TroaX »

Vielleicht hilft dir das ja weiter: http://support.apple.com/kb/PH10774?viewlocale=de_DE

Denn der Mac beherscht von Haus aus verschiedene Freigabeprotokolle. Je nachdem, wie du die Freigabe erstellt hast solltest du es mit dem passenden Protokoll versuchen.

Ich denke damit sollte es dann funzen.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
shim
Beiträge: 65
Registriert: 12.09.2004 23:09

Re: SQLITE und Netzwerkpfad

Beitrag von shim »

OK, ich erkläre es mal Schritt für Schritt:

Der Server läßt sich einwandfrei mounten. (SMB)
Der Zugriff funktioniert.

Auch das Anlegen einer Datei funktioniert (ohne smb:// davor...).
; a= CreateFile(#PB_Any,"/Volumes/192.168.1.22/xampp/htdocs/telefon/"+"xyz123.txt")
; WriteString(a,"Hallo")
; closefile(a)

Auch beim Öffnen der Datei (SQLite) erscheint noch kein Fehler.
Erst bei der anschließenden "select"-Abfrage erscheint der "disk I/O error".
Nun meine Frage, die ich evtl. nicht ganz klar formuliert habe: Ist jemand hier im Forum der dieses Verhalten bestätigen kann?

Ich erwarte folgendes:
Wenn ich mir einen Pfad über den Pathrequester hole, eine Datei anhänge und diese dann benutzen möchte, sollte doch genau das funktionieren. Die ganzen Protokolle liefert der Requester nicht mit, es wäre also vollkommen unmöglich auf unterschiedlich gemountete Verzeichnisse per SQLite zuzugreifen.
Windows 8.1 Pro 64 Bit | PB 5.31 x86
Benutzeravatar
TroaX
Beiträge: 659
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

Re: SQLITE und Netzwerkpfad

Beitrag von TroaX »

Wenn ich mir einen Pfad über den Pathrequester hole, eine Datei anhänge und diese dann benutzen möchte, sollte doch genau das funktionieren. Die ganzen Protokolle liefert der Requester nicht mit, es wäre also vollkommen unmöglich auf unterschiedlich gemountete Verzeichnisse per SQLite zuzugreifen.
Der Patchrequester liefert im Grunde nur den Pfad zurück, den er vom OS beim Zugriff auf die Dateien/Ordner zurückgeliefert bekommt. Ich weiß nicht, wie MacOS tickt. Da du aber anscheinend die Dateien anlegen kannst, dürfte das Problem nicht an dem liegen.

Nutzt du eine virtuelle Maschine? Das kann bei solchen Sachen auch gerne Probleme machen, da der Virtualisierungskontext gerne mal mit den Eigenarten des Host-Dateisystems kollidiert.

Ich gehe mal nicht davon aus, das du die SQLite-Datei noch in einem SQLite-Manager gelinkt hast. Das wäre dann der Excel-Effekt. Alle wollen eine Exceldatei bearbeiten. Aber so lange einer sie offen hat, schauen alle anderen in die Röhre. Das läuft natürlich auch mit SQLite so ab :lol:

Bekommst du denn nur "Disk I/O Error" oder noch eine Nummer mit dabei? Vom logischen her würde ich die Meldung als "Datenträger Eingabe/Ausgabe Fehler" interpretieren und als erstes natürlich ein Problem mit der Datei vermuten.

Vielleicht ist es aber auch etwas ganz banales. Zum Beispiel der Datentyp CHAR. Den gibt es nämlich meines erachtens in SQLite garnicht. Du solltest es dann eher mit VARCHAR probieren.

Scheust du: http://sqlite.org/datatype3.html

Es kann also noch an so vielem liegen ;)
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
shim
Beiträge: 65
Registriert: 12.09.2004 23:09

Re: SQLITE und Netzwerkpfad

Beitrag von shim »

Vielleicht nochmal kurz die Frage:

Läuft der Zugriff auf SQLite-Dateien über ein lokales Netzwerk bei Mac OS generell nicht?

Kann das bestätigt werden (Beispielcode aus der Hilfe) oder sind meine Mac's kaputt.

Vielen Dank für die Hinweise.

Übrigens: SQLite verhält sich beim Zugriff mehrerer Benutzer lange nicht so wie Office-Dateien.
Windows 8.1 Pro 64 Bit | PB 5.31 x86
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: SQLITE und Netzwerkpfad

Beitrag von mk-soft »

Dein Mac ist nicht kaputt.

Also... Dateien anlegen und schreiben über "smb" und "afp" funktioniert.
Muss also an den Datenbanktreiber liegen.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: SQLITE und Netzwerkpfad

Beitrag von ts-soft »

shim hat geschrieben:Übrigens: SQLite verhält sich beim Zugriff mehrerer Benutzer lange nicht so wie Office-Dateien.
SQLite ist ja auch nicht für die Nutzung mehrerer User gleichzeitig ausgelegt und enthält auch keinerlei entsprechende Mechanismen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: SQLITE und Netzwerkpfad

Beitrag von mk-soft »

Habe es einmal mit Firefox SQLite-Manager getestet. Geht auch über Netzwerk nicht.
Liegt also nicht an PB.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten