AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQLite, ZeosDB - drop table - Database is locked
Thema durchsuchen
Ansicht
Themen-Optionen

SQLite, ZeosDB - drop table - Database is locked

Ein Thema von cltom · begonnen am 20. Mär 2023 · letzter Beitrag vom 9. Jun 2023
Antwort Antwort
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#1

SQLite, ZeosDB - drop table - Database is locked

  Alt 20. Mär 2023, 17:38
Datenbank: SQLite • Version: 3.41.1 • Zugriff über: ZeosDB
Hallo,
um den Typ eines Feldes zu ändern, hab ich folgendes Skript, das ich via TZSQLProcessor ablaufen lassen möchte:

Code:
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;
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.

Danke für Hinweise!
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#2

AW: SQLite, ZeosDB - drop table - Database is locked

  Alt 20. Mär 2023, 17:41
Hinter das Insert mal ein Commit gemacht?
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#3

AW: SQLite, ZeosDB - drop table - Database is locked

  Alt 20. Mär 2023, 17:45
Hinter das Insert mal ein Commit gemacht?
ja, hatte ich probiert, da kommt die Meldung ebenso. Der Unterschied nur, dass die neue Tabelle bereits angelegt wird. Ohne das Commit wird die Änderung noch nicht geschrieben.

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;
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#4

AW: SQLite, ZeosDB - drop table - Database is locked

  Alt 31. Mär 2023, 09:06
Als Ergänzung/sanfter push: das gleiche Skript läuft problemlos im DBBrowser durch. Es scheint also irgendwas mit der ZeosDB-Anbindung zu haben?
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: SQLite, ZeosDB - drop table - Database is locked

  Alt 31. Mär 2023, 09:59
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.
Ralph
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#6

AW: SQLite, ZeosDB - drop table - Database is locked

  Alt 1. Apr 2023, 07:14
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.
Bei der Reihenfolge hab ich mich an das hier gehalten: https://www.sqlite.org/lang_altertable.html. Da ist die obige Reihenfolge explizit als nicht korrekt angegeben.

Zwei Skripts hintereinander kann ich versuchen. Also das löschen als eigenes Skript nachschalten. Wollte nur verstehen, warum das so nicht geht.
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#7

AW: SQLite, ZeosDB - drop table - Database is locked

  Alt 3. Apr 2023, 15:34
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?
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#8

AW: SQLite, ZeosDB - drop table - Database is locked

  Alt 4. Apr 2023, 16:37
Kann man mit ZeosDB Locktype und Isolation-level einstellen?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#9

AW: SQLite, ZeosDB - drop table - Database is locked

  Alt 9. Jun 2023, 15:53
Kann man mit ZeosDB Locktype und Isolation-level einstellen?
Isolation-Level kann man offenbar einstellen ja!
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#10

AW: SQLite, ZeosDB - drop table - Database is locked

  Alt 9. Jun 2023, 15:54
Als Auflösung: hab nun zwei Skripts gemacht und mache die ZConnection vor jedem Skript auf und wieder zu. So klappt es.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz