![]() |
Datenbank: SQLite • Version: 3.41.1 • Zugriff über: ZeosDB
SQLite, ZeosDB - drop table - Database is locked
Hallo,
um den Typ eines Feldes zu ändern, hab ich folgendes Skript, das ich via TZSQLProcessor ablaufen lassen möchte:
Code:
Beim drop table kommt die Meldung "Database locked". Nun findet man dazu viele Hilferufe im Netz, ich hab bis dato keinen gefunden, der eine Lösung zeigt. Es scheint, als wäre das INSERT noch nicht abgeschlossen.
CREATE TABLE "FCustomer_new" (
"MeasurementID" VARCHAR(255) NOT NULL, "AccountName" VARCHAR(255), "City" VARCHAR(55), "Country" VARCHAR(55), "Site" VARCHAR(55), "Units" VARCHAR(55), PRIMARY KEY("MeasurementID") ); INSERT INTO FCustomer_new (MeasurementID, AccountName, City, Country, Site, Units) SELECT MeasurementID, AccountName, City, Country, Site, Units FROM FCustomer; DROP TABLE FCustomer; ALTER TABLE FCustomer_new RENAME TO FCustomer; Danke für Hinweise! |
AW: SQLite, ZeosDB - drop table - Database is locked
Hinter das Insert mal ein Commit gemacht?
|
AW: SQLite, ZeosDB - drop table - Database is locked
Zitat:
So sieht der Teil aus, mit dem ich das Skript übergebe:
Delphi-Quellcode:
var
procedure TDatabaseExchange.ExecuteSQLFromFile(SQLFileName: string); zpr : TZSQLProcessor; begin zpr := TZSQLProcessor.Create(nil); zpr.Connection := zco_db; zpr.Script.Clear; zpr.LoadFromFile(SQLFileName); zco_db.StartTransaction; try zpr.Execute; except zco_db.Rollback; end; zco_db.Commit; end; |
AW: SQLite, ZeosDB - drop table - Database is locked
Als Ergänzung/sanfter push: das gleiche Skript läuft problemlos im DBBrowser durch. Es scheint also irgendwas mit der ZeosDB-Anbindung zu haben?
|
AW: SQLite, ZeosDB - drop table - Database is locked
Kannst du nicht die Reihenfolge umkehren:
Rename F_Customer zu F_Customer_Old Erzeuge die neue leere F_Customer Tabelle Kopiere die Daten von F_Customer_Old nach F_Customer (neu) Lösche F_Customer_Old Wenn das auch meckert muss man das letzt löschen ggf. in eine eigene Funktion/Script dass dann in einer neuen Transaktion läuft packen. |
AW: SQLite, ZeosDB - drop table - Database is locked
Zitat:
![]() Zwei Skripts hintereinander kann ich versuchen. Also das löschen als eigenes Skript nachschalten. Wollte nur verstehen, warum das so nicht geht. |
AW: SQLite, ZeosDB - drop table - Database is locked
hmm, selbst wenn ich das ganze Skript aufteile auf zwei Skripts und das umbenennen und löschen aufteile, kommt die Meldung. Muss man die Connection nach dem ersten Skript schließen und eine zweite wieder aufmachen für das rename und drop table?
|
AW: SQLite, ZeosDB - drop table - Database is locked
Kann man mit ZeosDB Locktype und Isolation-level einstellen?
|
AW: SQLite, ZeosDB - drop table - Database is locked
Zitat:
|
AW: SQLite, ZeosDB - drop table - Database is locked
Als Auflösung: hab nun zwei Skripts gemacht und mache die ZConnection vor jedem Skript auf und wieder zu. So klappt es.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz