Thema: Delphi Fehler in SQL-Syntax

Einzelnen Beitrag anzeigen

Delbor

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

Fehler in SQL-Syntax

  Alt 19. Sep 2017, 12:33
Datenbank: SQLite • Version: 3 • Zugriff über: FireDac
Hi zusammen
Die Fehlermeldung:
Zitat:
---------------------------
Im Projekt SQLiteTestProject.exe ist eine Exception der Klasse ESQLiteNativeException mit der Meldung '[FireDAC][Phys][SQLite] ERROR: near "KEY": syntax error' aufgetreten.
---------------------------
Und die auslösende Methode:
Delphi-Quellcode:
function TDMLSQLite.CreateTblHtml :String; // "ContentMasterData". ContentMasterData.
 var SQLString: String;
begin
 SQLString := 'CREATE TABLE tbl_Html('+
                  'idHtml INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,'+
                  'MenueCSS INTEGER NOT NULL CHECK(MenueCSS>=0),'+
                  'PageCSS INTEGER NOT NULL CHECK(PageCSS>=0),'+
                  'MenueID INTEGER NOT NULL CHECK(MenueID>=0),'+
                  'HTMLPage LONGTEXT NOT NULL,'+
                  'URL VARCHAR(45) NOT NULL,'+
                  'tbl_Javascript_idJavascript INTEGER NOT NULL,'+
                  'tbl_CSS_idCSS INTEGER NOT NULL CHECK(tbl_CSS_idCSS>=0),'+
                  'tblgalerie_Gallery_ID INTEGER NOT NULL CHECK(tblgalerie_Gallery_ID>=0),'+
                  'CONSTRAINT fk_tbl_Html_tbl_Javascript1'+
                    'FOREIGN KEY(tbl_Javascript_idJavascript)'+
                    'REFERENCES tbl_Javascript(idJavascript),'+
                  'CONSTRAINT fk_tbl_Html_tbl_CSS1'+
                    'FOREIGN KEY(tbl_CSS_idCSS)'+
                    'REFERENCES tbl_CSS(idCSS),'+
                  'CONSTRAINT fk_tbl_Html_tblgalerie1'+
                    'FOREIGN KEY(tblgalerie_Gallery_ID)'+
                    'REFERENCES tblgalerie(Gallery_ID))';
 Result := SQLString;
end;
Das ist die Fortsetzung aus diesem Thread. Der Aufruf der obigen function geschieht, wie mir da vorgeschlagen wurde:
Delphi-Quellcode:
  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 //<<===
....
    end;
  end;
"Corpus Delicti" ist der 7. Aufruf. Ich hatte da auch schon eine fehlende abschliessende Klammer bemerkt, aber bei diesem Fehler bin ich nun echt ratlos.
Im folgenden noch die Funktion, wie sie von MySQL-Workbench exportiert wurde:
Delphi-Quellcode:
CREATE TABLE "ContentMasterData"."tbl_Html"(
  "idHtml" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
  "MenueCSS" INTEGER NOT NULL CHECK("MenueCSS">=0),
  "PageCSS" INTEGER NOT NULL CHECK("PageCSS">=0),
  "MenueID" INTEGER NOT NULL CHECK("MenueID">=0),
  "HTMLPage" LONGTEXT NOT NULL,
  "URL" VARCHAR(45) NOT NULL,
  "tbl_Javascript_idJavascript" INTEGER NOT NULL,
  "tbl_CSS_idCSS" INTEGER NOT NULL CHECK("tbl_CSS_idCSS">=0),
  "tblgalerie_Gallery_ID" INTEGER NOT NULL CHECK("tblgalerie_Gallery_ID">=0),
  CONSTRAINT "fk_tbl_Html_tbl_Javascript1"
    FOREIGN KEY("tbl_Javascript_idJavascript")
    REFERENCES "tbl_Javascript"("idJavascript"),
  CONSTRAINT "fk_tbl_Html_tbl_CSS1"
    FOREIGN KEY("tbl_CSS_idCSS")
    REFERENCES "tbl_CSS"("idCSS"),
  CONSTRAINT "fk_tbl_Html_tblgalerie1"
    FOREIGN KEY("tblgalerie_Gallery_ID")
    REFERENCES "tblgalerie"("Gallery_ID")
);
Was habe ich übersehen?

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