gb.db2.sqlite3

Spezielle Fragen zu PostgreSQL, MySQL, SQLite, SQL ...
Poly
Foriker
Beiträge: 82
Registriert: Fr 17. Apr 2020, 12:46
Kontaktdaten:

gb.db2.sqlite3

Beitrag von Poly » So 19. Jan 2025, 20:27

Ich habe gerade versucht das Programm "DatabaseEditorDesignTimeConnection 1.0.0" aus der Gambas-Software Farm nachzuvollziehen und dabei ist mir ein anderes Verhalten der neuen gb.db2 Komponenten aufgefallen.

Wenn ich mit den eingeschalteten neuen gb.db2- Komponenten, also gb.db2.form und gb.db2.sqlite3 unter Verwendung der Project-Verwaltung eine neue Verbindung (Connection) erstellen, dann wird meine Sqlite3-Datenbank im Projektordner nicht gefunden.
Das Programm bricht mit einer Fehlermeldung ab. Es werden also keine Daten angezeigt.

Stattdessen Verweist die lokale Variable sHost immer auf mein Homeverzeichnis.

Bei der Verwendung der alten Komponenten, wie sie noch in dem Programm von MartinFischer (Gambas Farm) verwendet werden, wird die Datenbank hingegen gefunden.

Abhilfe: Ich trage einfach im Projektordner unter dem Ordner .connection in die Datei hcon.connection die Zeile

Code: Alles auswählen

Path="kompletter Pfad zur sqlite-Datei"
ein. Wobei hcon hier einfach der Name meiner Verbindung ist.

Das Problem ist hier nur, dass ich diesen Eintrag dann bei jeder Verschiebung der Datenbank ändern muss.

Die manuelle Erstellung der gesamten Verbindung unter der Verwendung von

Code: Alles auswählen

hcon.host = Application.path
funktioniert natürlich auch.

Kann dieses Verhalten hier jemand bestätigen? Ist dies ein Bug, eine Besonderheit von sqlite3 oder wurde das vielleicht sogar schon behoben?

Ich verwende unter Devuan die Gambas-Version. 3.20.0 fff98

Danke
Ceterum censeo Goo..... esse delendam

Poly
Foriker
Beiträge: 82
Registriert: Fr 17. Apr 2020, 12:46
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Poly » Fr 24. Jan 2025, 21:18

Kurzes Update: Auch in der neuen, aktuellen Version, Gambas 3.20.1 wird eine Datenbank im Projektordner nicht ohne die Änderung der oben genannten Datei erkannt.
Ceterum censeo Goo..... esse delendam

Benutzeravatar
tionov
Site Admin
Beiträge: 560
Registriert: So 18. Mai 2014, 23:40
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von tionov » So 26. Jan 2025, 07:24

Poly hat geschrieben:
So 19. Jan 2025, 20:27
Kann dieses Verhalten hier jemand bestätigen? Ist dies ein Bug, eine Besonderheit von sqlite3 oder wurde das vielleicht sogar schon behoben?
Ich verwende unter Devuan die Gambas-Version. 3.20.0 fff98
Ich habe es nicht ausprobiert, aber wenn du ein kleines Beispielprojekt machst, das das Verhalten zeigt, inklusive einer Beschreibung des Fehlers, trage ich es im Bugtracker ein (kannst du auch selber machen).

Die db2-Komponenten sollten exakt so funktionieren wie ihre Vorgänger. Darum ist es ein Bug.
Alles Gute,

tionov

Poly
Foriker
Beiträge: 82
Registriert: Fr 17. Apr 2020, 12:46
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Poly » So 26. Jan 2025, 12:48

tionov hat geschrieben:
So 26. Jan 2025, 07:24

trage ich es im Bugtracker ein (kannst du auch selber machen).
Herzlichen Dank tionov,

es wäre wirklich sehr nett, wenn Du das mit dem Bugtracker übernehmen würdest.
Ich habe noch nie einen Bug-Report erstellt :/

Hier ist mal eine ganz einfaches Beispiel zur Demonstration

https://cloud.disroot.org/s/Fde2MTpBx4SQxon

Ich habe lediglich eine kleine sqlite3-Datenbank test.sqlite selber erstellt und in den Projektordner gelegt.

Dann habe ich über die IDE der Projektübersicht eine neue Verbindung (Connection) erstellt.
SQLite ausgewählt und den Pfad zu dieser Datenbank angegeben und die Datenbank ausgewählt.

Wenn ich jetzt das Programm starte wird diese Datenbank aber nicht automatisch gefunden.
Es gibt den Fehler:

Database does not exist

und in den lokalenVariablen wird auf ein Eintrag verwiesen denn ich in die Datei .connection/hcon.connection
zum Demonstration geschrieben habe: "here you must put in the complete path to the application"

Erste wenn ich im Projektordner den kompletten Pfad zu dieser Datenbank in diese Datei eintrage:

Code: Alles auswählen

/Datenbank_mit_IDE/.connection/hcon.connection 
wird die Datenbank erkannt und das Programm ausgeführt.

Als Beispiel wie das dann in dieser Datei aussehen könnte:

Code: Alles auswählen

Path="/home/User/Databases/Datenbank_mit_IDE"

Wenn ich die Datenbank manuell erstelle, so wie ich es in der Beispiel-Datenbank auch getan habe, aber den Text auskommentiert habe.
Würde dies dem Eintrag:

Code: Alles auswählen

.Host = Application.path
entsprechen.

Ich denke es könnte ein Bug sein, dass dieser Eintrag nicht automatisch vorgenommen wird.

Ich würde mich wirklich sehr freuen, wenn Du das mal prüfen könntest und den Bug-Bereicht machen würdest.

Danke :)
Ceterum censeo Goo..... esse delendam

Benutzeravatar
tionov
Site Admin
Beiträge: 560
Registriert: So 18. Mai 2014, 23:40
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von tionov » So 26. Jan 2025, 13:11

Das ist mir jetzt unverständlich. Wenn ich in deinem Projekt eine neue Connection 'hcon2' anlege, darin der Pfad zur db 'test.sqlite' angebe, kann ich die Connection öffnen und auch nachdem ich das Projekt geschlossen und wieder geöffnet habe, ist die Connection nach wie vor funktionsfähig.

Was ist das Problem? (Ich habe den Thread nicht gelesen)
Alles Gute,

tionov

Poly
Foriker
Beiträge: 82
Registriert: Fr 17. Apr 2020, 12:46
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Poly » So 26. Jan 2025, 13:56

Welche Version von Gambas nutzt Du?

Also bei mir kann ich die Verbindung nicht öffnen.
Der Host wird automatisch auf das USER-Verzeichnis gesetzt.

Also in den lokalen Variablen wird angezeigt:
sHost="/home/user"
sPath="/home/user/test.sqlite"

und zwar egal, wo sich die Datei befindet.

bei mir wäre es z.B.

/home/user/Coding/Gambas/Datenbanken_try


Aber gut, dann ist es kein Bug, sondern muss ein Problem von meinem System sein.

Mit gb.db.sqlite3 ging es mit gb.db2.sqlite3 und gb.db2.form irgendwie nicht mehr :(

Herzlichen Dank für Deine Mühe :)
Ceterum censeo Goo..... esse delendam

Poly
Foriker
Beiträge: 82
Registriert: Fr 17. Apr 2020, 12:46
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Poly » So 26. Jan 2025, 14:30

Ich kann das Ganze auch etwas genauer angeben.

Es scheint wirklich ein Problem der Komponente gb.db2.sqlite3 zu sein.

Im Stack backtrack finde ich folgendes:


unter gb.db2.sqlite3

Code: Alles auswählen

_DatabaseDriver_Sqlite3.FindDatabase.64
_DatabaseDriver_Sqlite3.Open77
zu

_DatabaseDriver_Sqlite3.FindDatabase.64

gehören folgende lokale Variablen:

Code: Alles auswählen

bCreate    False
sHost        "home/user"
sName      "test.sqlite"
sPath        "/home/user/test.sqlite"
sTemp      ""

Also zumindest auf meinem System wird der Datenbank nicht erkannt und der Pfad (Path) der Datenbank nicht richtig
aus der Auswahl zusammengesetzt. Stattdessen werden nur die vorgegebenen lokalen Variablen erkannt.
Verschiebe ich die Datenbank in dieses Verzeichnis: /home/user wird sie erkannt.

Mein System:

Gambas=3.20.1 c98578e (master)
OperatingSystem=Linux
Distribution=Devuan GNU/Linux 5 (daedalus)
Kernel=6.1.0-21-amd64
Architecture=x86_64

Wie erstelle ich denn ein richtigen BugReport?

Danke :)
Ceterum censeo Goo..... esse delendam

Benutzeravatar
tionov
Site Admin
Beiträge: 560
Registriert: So 18. Mai 2014, 23:40
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von tionov » So 26. Jan 2025, 14:41

Ok, jetzt ist es klar. Habe gerade einen Bug geschrieben.

Dass in '.connection/hcon.connection' der String 'Path="here you must put in the complete path to the application"' stand, hat mich irritiert.

Woher kam der String?
Alles Gute,

tionov

Benutzeravatar
tionov
Site Admin
Beiträge: 560
Registriert: So 18. Mai 2014, 23:40
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von tionov » So 26. Jan 2025, 14:48

Poly hat geschrieben:
So 26. Jan 2025, 14:30
Wie erstelle ich denn ein richtigen BugReport?
Sorry, aber ich habe nicht die Zeit, mich mit den vielen Details zu beschäftigen. Sqlite interessiert mich normalerweise auch nicht.

Registriere dich bei https://gambaswiki.org/bugtracker/ und schau mal da rein, da siehst du den Bug und kannst auch sehen, wie die geschrieben werden. Für den Fortgang in der Mailingliste 'Bugtracker' auf https://lists.gambas-basic.org/ registrieren.

Wichtig bei Bugs ist: Es muss so klar und einfach wie möglich sein und simpel nachvollziehbar. Am besten mit einem eindeutigen Projekt. Unnötige Zusatzinformationen vermeiden.
Alles Gute,

tionov

Poly
Foriker
Beiträge: 82
Registriert: Fr 17. Apr 2020, 12:46
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Poly » So 26. Jan 2025, 19:48

tionov hat geschrieben:
So 26. Jan 2025, 14:48

Sorry, aber ich habe nicht die Zeit, mich mit den vielen Details zu beschäftigen. Sqlite interessiert mich normalerweise auch nicht.
Danke, dass Du Dir dennoch die Zeit genommen hast.
tionov hat geschrieben:
So 26. Jan 2025, 14:48

Ok, jetzt ist es klar. Habe gerade einen Bug geschrieben.

Dass in '.connection/hcon.connection' der String 'Path="here you must put in the complete path to the application"' stand, hat mich irritiert.

Woher kam der String?
Zunächst einmal vielen Dank für den Bug-Report :)

Den String habe ich erstellt, um zu zeigen, wo der genaue Pfad zur Datenbank in diese Datei eingetragen werden muss.

Im Projektordner wird eine Ordern .connection angelegt und darin befindet sich die Konfigurations-Datei für diese Verbindung.
In meinem Fall hcon.connection.
Hier habe ich zur Demonstration diese Zeile eingetragen:

Code: Alles auswählen

Path="here you must put in the complete path to the application"
bei mir in der Datei zu Hause habe ich hingegen folgende Zeile eingetragen, damit die Datenbank erkannt wird:

Code: Alles auswählen

Path="/home/User/Databases/Datenbank_mit_IDE"
tionov hat geschrieben:
So 26. Jan 2025, 14:48

Unnötige Zusatzinformationen vermeiden.
Das wird schwierig :wink: , aber ich werde mich mit dem Bugtracker beschäftigen.

Vielen Dank noch einmal, dass Du Dir überhaupt die Zeit genommen hast auf meinen Beitrag zu reagieren.
Ceterum censeo Goo..... esse delendam

Benutzeravatar
tionov
Site Admin
Beiträge: 560
Registriert: So 18. Mai 2014, 23:40
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von tionov » Mo 27. Jan 2025, 11:08

Gerne, wir wollen ja alle, dass Gambas besser wird. Die db2 Komponenten sind neu und da ist es wichtig, dass Fehler gemeldet werden.

Wenn dich die Sache interessiert, dann trage dich mal in die Bugtracker Mailingliste ein und lese etwas mit. Die Entwicklung von Gambas zu beobachten ist ganz interessant.
Alles Gute,

tionov

Poly
Foriker
Beiträge: 82
Registriert: Fr 17. Apr 2020, 12:46
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Poly » Di 28. Jan 2025, 00:14

tionov hat geschrieben:
Mo 27. Jan 2025, 11:08
Gerne, wir wollen ja alle, dass Gambas besser wird.
Schön, dass Du es genauso siehst. Besser und vor allem bekannter/beliebter ;)
Ceterum censeo Goo..... esse delendam

Crabman
Foriker
Beiträge: 226
Registriert: So 6. Jan 2019, 13:31
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Crabman » Fr 28. Feb 2025, 22:08

Ich habe das Problem nicht ganz verstanden und mir einfach mal das Programm angeschaut.
Da ich auch das nicht verstand, habe ich es einfach mal so umgeschrieben, wie es meiner
Meinung nach aussehen müsste und so funktionierte es dann auch wie erwartet.
Anbei das umgeschriebene Programm mit der neuen Komponente, das in der Tat genau so
mit der alten Komponente funktioniert.

Viele Grüße
Crabman
Dateianhänge
Datenbank_mit_IDE_0.0.2.tar.gz
(9 KiB) 24-mal heruntergeladen

Poly
Foriker
Beiträge: 82
Registriert: Fr 17. Apr 2020, 12:46
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Poly » Sa 1. Mär 2025, 00:20

Ganz lieben Dank, dass Du Dir das mal angesehen hast.

Ich habe irgendwie schon gemerkt, dass ich das Problem wohl irgendwie nicht richtig beschrieben habe.
Sorry, ich bin kein ITler.
Mir geht es auch nicht darum, dass ich mit etwas Probleme habe, sondern ich versuche einfach bestimmte Sachen nachzuvollziehen und ich bin natürlich auch auf der Suche nach bugs, um Gambas besser zu machen, aber bislang bin ich da wohl erfolglos. :wink:

Der Bug ist auch abgelehnt worden

https://lists.gambas-basic.org/archive/ ... 00056.html

https://lists.gambas-basic.org/archive/ ... 00004.html

Das Programm welches Du geschrieben hast, hat eben auch per Code die Connection erstellt.

Aber das Programm von Martin Fischer: DatabaseEditorDesignTimeConnection 1.0.0

macht das anders.

Da wird die Datenbank wirklich nur über die IDE aufgerufen. Also keine extra Connection mit DIM erstellt.
gb.db
Dieses Programm verwendet aber gb.db.form , gd.db.sqlite3 welche ja veraltet sind.

Ich dachte, also dass es an dieser Komponente liegt, aber jetzt habe ich das noch mal genau angeschaut.
Wenn ich in diesem Programm die alten Komponenten abschalte und die neuen einschalte, wird die Datenbank dennoch gefunden.

Bei meinen kleinen Beispielprogramm wird die Datenbank jedoch nicht gefunden. Es sei den ich geben den Pfad in einer extra Datei an.
Komischerweise gibt es in den Programm von Martin Fischer keine solche Datei und dennoch wird die Datenbank gefunden.

Ich verstehe das Problem nicht, aber ich würde die Datenbank ohnehin lieber per Code erstellen.

also mit

.Host = Application.path

sowie Du das auch gemacht hast.

Das ist besser als den Pfad ständig in der Datei zu ändern.

Komischerweise gibt es eben eine solche Anweisung bei dem Programm von Martin Fischer nicht und auch keine Datei wo der Pfad abgelegt wird.

Also halten wir feste, es ist kein Bug, obwohl ich die Antwort vom Bugtracker gar nicht verstanden habe.

Wenn ich das irgendwann noch mal verstehe, werde ich es hier bekannt geben. :lol:
Ceterum censeo Goo..... esse delendam

Poly
Foriker
Beiträge: 82
Registriert: Fr 17. Apr 2020, 12:46
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Poly » Sa 1. Mär 2025, 00:41

Wow jetzt muss ich wirklich lachen, ich habe wirklich die Lösung für mein eigenes Problem gefunden. :D :D

Es ist ein simpler Punkt.

In meinen Beispiel oben, muss einfach nur bei der Verbindungseinstellung wie folgt lauten:

/home/user/Gambas/Datenbank_mit_IDE/.

Also noch ein Punkt hinter dem Pfad.

D.h. wenn der Pfad ausgewählt wird, muss noch selbständig ein /. angefügt werden, um auf das aktuelle Verzeichnis zu verweisen.

Sorry, dass ich Euch und mich so verwirrt habe. :)

Ich denke der Thread kann als gelöst angesehen werden. :wink:
Ceterum censeo Goo..... esse delendam

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste