FireDAC의 TFDTable 클래스의 CreateTable() 메소드를 사용하여 MySQL 서버에 테이블을 생성하려고합니다. 즉시 나는 그것이 테이블 xxxx.Setting이 존재하지 않는 오류 던지는 CreateTable에서 메서드를 호출로FireDAC TFDTable CreateTable
void __fastcall TFormMain::ButtonCreateTableClick(TObject *Sender)
{
TFDTable *Table = new TFDTable(this);
try
{
Table->Connection = FDConnection;
Table->TableName = "Setting";
Table->Exclusive = true;
//Table->FieldDefs->Add("SettingCode", ftString, 99);
//Table->FieldDefs->Add("SettingValue", ftString, 255);
TField *Field;
Field = new TStringField(this);
Field->Name = "FieldSettingCode";
Field->FieldName = "SettingCode";
Field->Size = 100;
Field->DataSet = Table;
Field = new TStringField(this);
Field->Name = "FieldSettingValue";
Field->FieldName = "SettingValue";
Field->Size = 255;
Field->DataSet = Table;
// Fires "Table 'Setting' doesn't exist" error
Table->CreateTable(false, TFDPhysCreateTableParts() << tpTable << tpPrimaryKey << tpIndexes);
Table->Open();
Table->Insert();
Table->FieldByName("SettingCode")->Value = "test2";
Table->FieldByName("SettingValue")->Value = "testValue2";
Table->Post();
// Table->CreateDataSet();
}
__finally
{
Table->Free();
}
}
:
Im Projekt DBCreator.exe ist eine Exception der Klasse EMySQLNativeException mit der Meldung '[FireDAC][Phys][MySQL] Table 'setting' already exists' aufgetreten.
를 지금까지 너무 좋아 :이 오류 메시지가 정확한지 -하지만 실제 재미있는 사실은 테이블이 성공적으로 생성되었고 코드가 삽입되었다는 것입니다.
이것은 MySQL 대신 SQLite를 사용하는 경우에도 발생합니다.
저는 Embarcadero C++ Builder XE10 Seattle을 사용하고 있습니다.
어떻게해야합니까? 이 쓸데없는 오류 메시지를 억제하는 방법이 있습니까?
편집 : 디버거가 실행 중일 때만 EMySQLNativeException이 발생합니다. 그래서 방금 이러한 예외를 무시하는 확인란을 클릭하고 모든 것이 좋습니다.
TFDTable 및 CreateTable()을 사용하여 데이터베이스를 만드는 작업은 charm과 유사합니다. 불행히도 이것은 단지 문서화되지 않은 것입니다. (거의 모든것이 @Boldland/CodeGear/Embarcadero와 같습니다) ...