Mein Ziel ist es eine Klasse zu erstellen, die eine Datenbank mit ihren Tabellen komplett anlegen kann.
Problem dabei ist nur, dass ich irgendein Fehler mache und ich weiß nicht warum.
Es kommt folgende Fehlermeldung:
Ist auch klar, ich habe auch keine DB ausgewählt, sondern möchte eine NEUE erstellen, die ich dann auswählen möchte.Failed to select database: No database selected
Bei meiner Suche im Code von mySQl bin ich auf sqSupportEmptyDatabaseName gestoßen. Die ist aber nur ReadOnly was ich schade finde. Darum habe ich eine neue Klasse von TMySQL57Connection abgeleitet und dort im Create:
Code: Alles auswählen
FConnOptions:=FConnOptions+[sqSupportEmptyDatabaseName];
Der Fehler kommt aber weiterhin. In der Fehlermeldung wird sogar meine eigene Klasse genannt.
Code: Alles auswählen
procedure TPLForumV1.CreateDB;
var
str:string;
begin
writeln(sqSupportEmptyDatabaseName in MariaDB.AConnection.ConnOptions );
MariaDB.AConnection.DatabaseName:='';
{ MariaDB.AConnection.Open;
str:='CREATE DATABASE IF NOT EXISTS '+DBName;
MariaDB.AConnection.ExecuteDirect(str);
writeln('TEST01');}
// MariaDB.Query.SQL.Text:=str;
// MariaDB.Query.ExecSQL;
// MariaDB.ATransaction.Commit;
//MariaDB.AConnection.DatabaseName:=DBName;
// MariaDB.Query.SQL.Text:='USE ' + DBName;
// MariaDB.Query.ExecSQL;
// MariaDB.AConnection.DatabaseName:=DBName;
str:='SHOW DATABASES LIKE '''+DBName+''';';
MariaDB.Query.SQL.Text:=str;
MariaDB.Query.ExecSQL;
MariaDB.Query.Open;
Belege ich DatabaseName mit einer vorhanden DB geht es, aber dann wird komischerweise nur dort die Tabellen hinzugefügt und nicht in der "neuen" db die aber angelegt wird.
Kann mir jemand sagen, was ich Falsch mache? ich nutzte eine MariaDB(TMySQL57Connection). Das ganze soll später eine Konsolen Anwendung werden und in einem WebServer oder WebSocketServer laufen.