AGB  ·  Datenschutz  ·  Impressum  







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

No Such Table

Ein Thema von Delbor · begonnen am 28. Sep 2017 · letzter Beitrag vom 29. Sep 2017
Antwort Antwort
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.192 Beiträge
 
Delphi 11 Alexandria
 
#1

No Such Table

  Alt 28. Sep 2017, 20:51
Datenbank: SQLite • Version: 3 • Zugriff über: FireDac
Hi zusammen

Damit versuche ich, die Tabellen der DB abzrufen:
Delphi-Quellcode:
procedure TDMLSQLite.DataModuleCreate(Sender: TObject);
begin
  FSeitenlaenge := 200;
  TPicture.RegisterFileFormat('NEF','NEF Format',TWICImage);
  Self.FDMoniFlatFileClientLink1.Tracing := False;
  Self.FDMoniFlatFileClientLink1.FileName := ExtractFilePath(Application.ExeName) + 'trace.txt';;
  Self.FDMoniFlatFileClientLink1.Tracing := true;
  Self.FDSQLiteConnection.Connected := False;
  Self.FDSQLiteConnection.Params.Clear;
  Self.FDSQLiteConnection.Params.Add('DriverID=SQLite');
  Self.FDSQLiteConnection.Params.Add('Database=M:\SQLite-DB Corner\ContentMasterData\ContentmasterData.sqlite');
  Self.FDSQLiteConnection.Connected := true;
  if Self.FDSQLiteConnection.Connected then
  begin
    Self.FDSQLiteConnection.GetTableNames('ContentmasterData','','', SQLiteTestMain.Memo2.Lines);
  end;
end;
Die Antwort von Delphi:
Zitat:
---------------------------
Im Projekt SQLiteTestProject.exe ist eine Exception der Klasse ESQLiteNativeException mit der Meldung '[FireDAC][Phys][SQLite] ERROR: no such table: ContentmasterData.sqlite_master' aufgetreten.
---------------------------
Erstellt wurde die Tabelle so:
Delphi-Quellcode:
  function TDMLSQLite.ConnectContentmasterDB : Boolean;
  begin
    try
      FDSQLiteConnection.Connected := false;
      FDSQLiteConnection.Params.Clear;
      FDSQLiteConnection.Params.Add('DriverID=SQLite');
      FDSQLiteConnection.Params.Add('Database=M:\SQLite-DB Corner\ContentmasterData\ContentmasterData.sqlite');
      FDSQLiteConnection.Params.Values['FailIfMissing'] := 'False';
      FDSQLiteConnection.Connected := true;
      Result := FDSQLiteConnection.Connected;
    except
      on E: EDatabaseError do
      begin
        ShowMessage('Fehler beim Aufbau der Datenbankverbindung: ' + #13#13 + E.Message);
        Result := False;
      end;
    end;
  end;

  procedure TDMLSQLite.ContentmasterDBCreate2;
  begin
    if ConnectContentmasterDB then
    begin
      if ExecuteSQL(CreateTbl_Bld) then
      if ExecuteSQL(CreateTbl_Galery) then
      if ExecuteSQL(CreateTbl_Album) then
      if ExecuteSQL(CreateTbl_bildtext) then
      if ExecuteSQL(CreateTblCSS) then
      if ExecuteSQL(CreateTblJavascript) then
      if ExecuteSQL(CreateTblHtml) then
      if ExecuteSQL(CreateIndexTbl_Html_Tbl_CSS1) then
      if ExecuteSQL(CreateIndexTbl_Html_Tblgalerie1) then
      if ExecuteSQL(CreateTableTblMenue) then
      if ExecuteSQL(fk_tblMenue_tbl_Html1) then
      if ExecuteSQL(CreateTableTbl_Album_has_Tbl_bildtext ) then
      if ExecuteSQL(fk_tbl_Album_has_tbl_bildtext_tbl_bildtext1) then
      if ExecuteSQL(fk_tbl_Album_has_tbl_bildtext_tbl_Album1) then
      if ExecuteSQL(CreateTableTbl_Html_has_Tbl_Bildtext ) then
      if ExecuteSQL(fk_tbl_Html_has_tbl_bildtext_tbl_bildtext1) then
          if ExecuteSQL(fk_tbl_Html_has_tbl_bildtext_tbl_Html1) then
      if ExecuteSQL(CreateTableTbl_SubMenue2) then
      if ExecuteSQL(fk_tbl_SubMenue2_tbl_SubMenue11_idx) then
      if ExecuteSQL(CreateTableTbl_SubMenue1) then
      if ExecuteSQL(fk_tbl_SubMenue1_tblMenue1_idx ) then
    end;
  end;
Die Parameter der Executeaufrufe sind jeweils Funktionen, die das gewünschte SQL-Statement zurückliefern. Die vermissste Tabelle ist definitiv nicht dabei.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: No Such Table

  Alt 28. Sep 2017, 22:07
Damit versuche ich, die Tabellen der DB abzrufen:
Delphi-Quellcode:
procedure TDMLSQLite.DataModuleCreate(Sender: TObject);
begin
  FSeitenlaenge := 200;
  TPicture.RegisterFileFormat('NEF','NEF Format',TWICImage);
  Self.FDMoniFlatFileClientLink1.Tracing := False;
  Self.FDMoniFlatFileClientLink1.FileName := ExtractFilePath(Application.ExeName) + 'trace.txt';;
  Self.FDMoniFlatFileClientLink1.Tracing := true;
  Self.FDSQLiteConnection.Connected := False;
  Self.FDSQLiteConnection.Params.Clear;
  Self.FDSQLiteConnection.Params.Add('DriverID=SQLite');
  Self.FDSQLiteConnection.Params.Add('Database=M:\SQLite-DB Corner\ContentMasterData\ContentmasterData.sqlite');
  Self.FDSQLiteConnection.Connected := true;
  if Self.FDSQLiteConnection.Connected then
  begin
    Self.FDSQLiteConnection.GetTableNames('ContentmasterData','','', SQLiteTestMain.Memo2.Lines);
  end;
end;
Die Antwort von Delphi:
Zitat:
---------------------------
Im Projekt SQLiteTestProject.exe ist eine Exception der Klasse ESQLiteNativeException mit der Meldung '[FireDAC][Phys][SQLite] ERROR: no such table: ContentmasterData.sqlite_master' aufgetreten.
---------------------------
Nimm die Meldung wörtlich "Im Schema ContentmasterData gibt es keine Tabelle sqlite_master"


Erstellt wurde die Tabelle so:
  ..... Die Parameter der Executeaufrufe sind jeweils Funktionen, die das gewünschte SQL-Statement zurückliefern. Die vermissste Tabelle ist definitiv nicht dabei.
Wenn die Tabelle nicht dabei ist, wie kann sie dann erstellt werden?

Kannst Du denn mit Hilfe einer DB-Shell auf die Inhalte zugreifen?

Edith:
Wenn ich die Doku richtig verstanden habe, sollte spätestens nach dem Anlegen der ersten Tabelle die Tabelle sqlite_master vorhanden sein.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (28. Sep 2017 um 22:17 Uhr)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.192 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: No Such Table

  Alt 29. Sep 2017, 00:38
Hi p80286

Zitat:
Kannst Du denn mit Hilfe einer DB-Shell auf die Inhalte zugreifen?
Der SQLite Express zeigt mir die DB, die Tabellen und die Feldstrukturen richtig an.
Zitat:
Nimm die Meldung wörtlich "Im Schema ContentmasterData gibt es keine Tabelle sqlite_master"
Das tue ich.
Zitat:
Wenn die Tabelle nicht dabei ist, wie kann sie dann erstellt werden?
Indem sie von SQLite erstellt wird? Zum speichern der Tabellenbeziehungen und Indexe?
Zitat:
Wenn ich die Doku richtig verstanden habe, sollte spätestens nach dem Anlegen der ersten Tabelle die Tabelle sqlite_master vorhanden sein.
Zur Zeit bin ich gerade dabei, mir Dokuteile via Google-Übersetzer in Word zu übertragen(Die virtuelle Datenbank-Engine von SQLite).

Ich nehme mal an, dass Firedac für die Befehlszeilen-Beispiele da auch Unterstützung bietet - wobei ich mir andrerseits eigentlich vorstelle, dass SQLite seine Systemtabellen selbst erstellt/erstellen sollte...

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.192 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: No Such Table

  Alt 29. Sep 2017, 02:39
Hi zusammen

Die von Firedac vermisste Tabelle ist vorhaanden und enthält Daten. Im Anhang ein Screnshot des SQL Experts...
Das Problem liegt also bei Firedac...

Gruss
Delbor

PS: Das Problem hat sich in Luft aufgelöst:
Delphi-Quellcode:
  if Self.FDSQLiteConnection.Connected then
  begin
    Self.FDSQLiteConnection.GetTableNames('ContentmasterData','','', SQLiteTestMain.Memo2.Lines);
  end;
habe ich mal ersetzt durch:

Self.FDSQLiteConnection.GetTableNames('','','', SQLiteTestMain.Memo2.Lines);
Angehängte Grafiken
Dateityp: jpg Anzeige SQLiteExpert-Databases 2.jpg (165,7 KB, 22x aufgerufen)
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor (29. Sep 2017 um 03:33 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: No Such Table

  Alt 29. Sep 2017, 07:53
Ich schätze, da stiftet mal wieder der Schemaname Verwirrung.
Lass "ContentmasterData" weg bei gettablenames
oder definiere ContentmasterData als Schemaname
oder tausche ContentmasterData gegen "main". Das ist der Default.

Schemaname und Dateiname sind 2 unterschiedliche Dinge. Die Datei kann heißen wie sie will. Der Schemaname lautet dann als default "main" und kann sowieso weggelassen werden.
Wenn Du ihn bei der Abfrage verwendest, dann musst Du ihn zuvor mit attach definieren.
Gruß, Jo
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: No Such Table

  Alt 29. Sep 2017, 10:05
Ausgehend von http://docwiki.embarcadero.com/Libra....GetTableNames waren in der Ursprungsversion die Parameter falsch gesetzt.

Wenn Du die Tabellennamen aus dem Schema ContentmasterData abfragen möchtest, dann musst Du ContentmasterData auch als Schemaname angeben, dies ist der zweite Parameter.
  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 18:45 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 by Thomas Breitkreuz