SQLite "Vacuum"

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

SQLite "Vacuum"

Beitrag von Aliobaba »

Hallo,

nachdem ich ja feststellen musste, dass das Programmverhalten durchaus verschieden sein kann, je nachdem ob man einen Quellcode mit Linux oder mit Windows kompiliert, ( viewtopic.php?f=55&t=13719 ) muss ich wohl in Zukunft (leider) mehr mit dem Windows-Betriebssystem programmieren.

Und jetzt ist mir wieder ein Punkt aufgefallen, der "seltsam" ist:

Unter Linux mit "Zeos" hatte ich nie Probleme mit dem Code:

Code: Alles auswählen

Form_Start.ZConneu.ExecuteDirect('VACUUM');   
Unter Windows gelingt es mir nicht, diesen Befehl an die Datenbank zu schicken. (SQL logic error)

Code: Alles auswählen

Query.SQL.Text := "Vacuum";
Query.ExecSQL;
funktioniert auch nicht. Also über den "Umweg einer "Query", wie hier beschrieben:
search.php?keywords=Zeos+vacuum

Mein Editor für SQLite-Datenbanken ( DB Browser for SQLite ) akzeptiert den "nackten" Befehl "Vacuum" problemlos.
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Soner
Beiträge: 623
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: SQLite "Vacuum"

Beitrag von Soner »

Aliobaba hat geschrieben:
So 20. Jun 2021, 15:17

Code: Alles auswählen

Form_Start.ZConneu.ExecuteDirect('VACUUM');   
Das funktioniert bei mir ohne Fehler unter Windows.
Ich habe ZEOS Version "7.2.8-release" und neuste Sqlite-DLL .

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: SQLite "Vacuum"

Beitrag von gladio »

über SQL funktioniert das ohne Probleme (Win10/64 , Zeos 7x)

Code: Alles auswählen

      ZQuery2.SQL.Text:=('Vacuum ');
      ZQuery2.ExecSQL;

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: SQLite "Vacuum"

Beitrag von Aliobaba »

Ist schon seltsam! Ich habe die "sqlite3.dll" mit obigem Link vorsichtshalber nochmal herunter geladen.
Der Fehler bleibt der Gleiche.

Es funktioniert bei mir aber nur die 32-Bit Variante dieser DLL (ausgenommen nur dieser "Vacuum"-Befehl).
Betriebssystem ist ein Windows 10 Pro 64Bit.
Lazarus-Version: v2.0.12 (Ganz frisch installiert)
sqlite3.dll (Größe: 1.079.909 Bytes)

:?:
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: SQLite "Vacuum"

Beitrag von gladio »

Die jeweilige DLL (32 oder 64 Bit) die zu verwenden ist, hängt von den erzeugten EXE ab, nicht von der Bitrate des Betriebssystems.
Win 10/64 ---> EXE 32 Bit ---> sqlite3.dll 32 Bit ansprechen.
Die aktuellsten DLL findest du auf der SQLite-Seite.

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: SQLite "Vacuum"

Beitrag von Aliobaba »

... ja, Danke.
Es funktioniert ja auch die gesamte Datenbank prima mit der 32-Bit DLL; nur eben nicht dieser eine "Vacuum"-Befehl.
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Soner
Beiträge: 623
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: SQLite "Vacuum"

Beitrag von Soner »

Vielleicht hast du "falschen" ZEOS-Version und es kann mit "VACUUM" und erwartet am Anfang einer SQL-Anweisung immer select, update, insert o.ä. installiere einfach die neuste Version.
Es kann kann sein, dass irgendetwas mit dein Programm nicht stimmt, teste doch einfach mit neuem einfachen Bespiel.

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: SQLite "Vacuum"

Beitrag von Aliobaba »

... ich habe die ZEOS Version 7.2.10 stable und habe diese erst am 19.6., also vor 2 Tagen heruntergeladen und installiert. Zusammen mit der ebenfalls ganz frisch installierten Lazarus-Version 2.0.12 ( vom 21.2.21 )

Ich denke, ich lasse das jetzt lieber; sonst funktioniert ja alles.
Und bei meinem "Glück" muss ich befürchten, dass nach einem Versionstausch dann dafür wieder 3 andere Dinge nicht funktionieren.

Danke!
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Antworten