AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Database locked

Ein Thema von sko1 · begonnen am 13. Apr 2018 · letzter Beitrag vom 16. Apr 2018
Antwort Antwort
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Database locked

  Alt 13. Apr 2018, 12:48
Datenbank: SQLite • Version: 3 • Zugriff über: TFDConnection
Hallo,

aus Anwendung A auf dem Handy möchte ich aus einer Datenbank, die Anwendung B gehört, Werte auslesen.
Beide Anwendungen laufen, beide greifen beim Start über eine TFDConnection auf ihre Datenbank zu und trennen erst bei Programmende wieder.
Die Datenbankenb liegen für alle erreichbar im Handy unter öffentliche Documents.
Die TFDQueries, die dann in der DB arbeiten, werden bei bedarf erzeugt, verbunden und danach wieder getrennt.

Das ist der Istzustand.

Nun ist Anwendung A bereits gestartet und hat intern die TFDConnection mit ihrer DB verbunden. Anwendung B startet und versucht, Grunddaten, die Anwendung A bereits hat, aus deren Datenbank zu übernehmen (z.B. Mailzugangsdaten um die nicht doppelt eintragen zu müssen).

Hierbei kommt es nun zum Laufzeitfehler "database locked".
Beende ich Anwendung A und starte Anwendung B allein, kann sie in der DB von Anwendung A lesen.

Wo liegt mein Denkfehler im Ablauf und wie kann ich das besser lösen?

Ciao
Stefan
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Database locked

  Alt 13. Apr 2018, 12:49
Sobald eine Anwendung in eine SQlite-Datenbank schreibt wird diese exklusiv gesperrt.
Markus Kinzler
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Database locked

  Alt 13. Apr 2018, 13:04
Seit wann denn das?

Aber egal, Anwendung A ist zwar gestartet und die TFDConnection verbunden, aber sie lungert ohne Benutzeraktivitäten so vor sich her, aber es ist keine TFDQuery vorhanden und damit auch mit Sicherheit keine Schreibzugriffe!

Trotzdem bekomme ich den locked - Fehler!

Ciao
Stefan
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Database locked

  Alt 13. Apr 2018, 20:29
Sind beide Apps mit dem gleichen Zertifikat signiert? ("By signing multiple APKs with the same certificate and using signature-based permissions checks, your apps can share code and data in a secure manner.", https://developer.android.com/studio...considerations)

Ist ein Shared User in den Manifesten eingetragen? (In order to share data between apps (provided they are issued by the same publisher) you will need to specify a shared user id in the AndroidManifest.xml of both apps. - https://stackoverflow.com/a/7935032/80901)
Michael Justin
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Database locked

  Alt 14. Apr 2018, 09:05
Ich muss zugeben, dass ich keine Ahnung habe, was die Zertifikate da beinhalten!

Beide Apps entstehen mit dem gleichen debug.keystore, welches ich auch auf Fest-PC und Notebook verwende für alle Apps.

Muss ich da Änderungen in meiner Vorgehensweise machen?

Ich befürchte, hier fehlen mit noch Grundlagenkenntnisse

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von timog
timog

Registriert seit: 26. Sep 2006
Ort: Landkreis Oldenburg (Oldb)
117 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Database locked

  Alt 15. Apr 2018, 16:27
Hi Stefan,

stellt sich aus Sicht der Sqlite DB als mehrere gleichzeitige Zugriffe dar. Hast Du die Verbindungsparameter vom Wiki verwendet?

Sonst für den Connection Parameter mal folgendes probieren

Delphi-Quellcode:
SharedCache=False
LockingMode=Normal
Synchronous=Normal
und für die FDConnection dann
Delphi-Quellcode:
UpdateOptions.LockWait := True;
TxOptions.Isolation := xiSnapshot; // or xiSerializible.
Lt. Wiki soll man auch den BusyTimeout hochsetzen, falls länger anhaltende Aktionen anstehen.

Nachtrag: Je nach Anforderung kann ggf. auch über eine persistente FDMemTable mit LocalSQL als Alternative zu Sqlite nachgedacht werden oder halt InterBase ToGo.

VG

Timo
Timo
Real Programmers are surprised when the odometers in their cars don't turn from 99999 to 9999A.

Geändert von timog (15. Apr 2018 um 16:34 Uhr) Grund: Nachtrag FDMemTable
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: Database locked

  Alt 16. Apr 2018, 07:07
Hallo Timo,

das sind doch mal prima konkrete Ansätze, vielen Dank dafür!

Mal sehen ob es was bringt...

Ciao
Stefan
  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 04:34 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