Einzelnen Beitrag anzeigen

Delbor

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

Not-Abfragewird 2mal ausgeführt

  Alt 14. Mär 2017, 14:43
Delphi-Version: XE8
Hi zusammen

Eben hab ich ein seltsames Problem etdeckt; zumindest hab ich keine Erklärung dafür und weiss deshalb auch nicht, wo ich den Fehler suchen könnte.

Beim Aufstarten wird erstmal die Createmethode des Datenmoduls aus dem OnCreateEvent des Hauptformulars aufgerufen:

Delphi-Quellcode:
procedure TFDMySQLDml.DataModuleCreate(Sender: TObject);
  var LIndent : String;
begin
  LIndent := ' - ';
  CM_First.ProcedureReport.Add('PROCEDURE TFDMySQLDml.DataModuleCreate');
  CM_First.ProcedureReport.Add('--------------------------------------');
  FQueryResultList := TObjectList.Create;
  TPicture.RegisterFileFormat('NEF','NEF Format',TWICImage);
  FReportlist := TStringlist.Create;
  FSessionVarList := TStringlist.Create;
  FCategoryBildList := TDataObjectList<TQueryResultClass>.Create();
  FCategoryList := TDataObjectList<TQueryResultClass>.Create();
  FPathList := TStringList.Create;
  FMySQLCorrespondent := TMySQLCorrespondent.Create(Self); // TFDMySQLDml
  FHost := 'localhost';
  FDataBase := 'contentmasterdata';
  FServerDB := 'performance_schema';
  FPort := '3306';
  if not DefineContentmasterConnection then //<==
  begin;
    ShowMessage(' Die Verbindung konnte nicht hergestellt werden');
    // An dieser Stellle muss geeignet reagiert werden können
  end;
  FPerformanceSchemaTables := TStringList.Create;
  ShowCharactersets; //TFDMySQLDml Muss nach TMysqlkorrespondent verlagert werden
  GetMaxAllowedPacket;
end;
An der bezeichneten Stelle wird die Booleanfunktion aufgerufen:
Delphi-Quellcode:
 function TFDMySQLDml.DefineContentmasterConnection: Boolean;
  var LIndent : String;
begin
  if (FHost <> 'localhost') or (FDataBase <> 'contentmasterdata') then
    Exit;
  LIndent := ' - ';
  FDConnectionMySQL.Close;
  FDConnectionMySQL.Params.Clear;
  FDConnectionMySQL.Params.Add('DriverID=MySQL');
  FDConnectionMySQL.Params.Add('Server=' + FHost);
  FDConnectionMySQL.Params.Add('Port=' + FPort);
  FDConnectionMySQL.Params.Add('Database=contentmasterdata');
  FDConnectionMySQL.Params.Add('User_Name=root');
  FDConnectionMySQL.Open;
  Result := True;
end;
Anschliessend kehrt die Programmfunktion zurück und überspringt korrekterweise die Showmessage-Anweisung - die Verbindung ist also hergestellt.
Im weiteren Verlauf wird ShowCharactersets und MaxallowedPacket aufgerufen.
Das Problem ist: DefineContentmasterConnection liefert False zurück!

Inzwischen vermute ich meine Verbindungsdefinitionen als Ursache. Im Anhang ein Jpeg der OI-Einstellungen der Connection-Komponente:
Ansonsten: Was mache ich falsch?

Gruss
Delbor
Miniaturansicht angehängter Grafiken
fdconnectionmysql-2.jpg  
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