Einzelnen Beitrag anzeigen

Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#1

Zugriffsverletzung dbxmys30.dll

  Alt 17. Apr 2009, 11:43
Datenbank: MySQL • Version: 5.1 • Zugriff über: dbExpress
Beim Öffnen der SQLQuery knallt es im dbExpress Treiber, ich hab mal ein bischen nachgeforscht und es scheint wohl so zu sein, dass die Delphi Versionen vor 2007 keie LIBMYSQL.dll > 4.0 unterstürtzen. Der Fehler liest sich so:

Code:
---------------------------
Fehler
---------------------------
Zugriffsverletzung bei Adresse 0D04B960 in Modul 'dbxmys30.dll'. Lesen von Adresse 00000002.
---------------------------
OK  Details <<  
---------------------------
Callstack (wenn man die SQLQuery zur Designzeit auf Active setzt):

Code:
+ $1907C[0D04B960]{dbxmys30.dll} getSQLDriverMYSQL + $1907C
 + $0[51F26B4B]{rtl100.bpl } System.System.@HandleAnyException (Line 9980, "system.pas" + 13) + $0
 + $81[77779B66]{ntdll.dll  } RtlRaiseStatus + $81
 + $A[777799F2]{ntdll.dll  } KiUserExceptionDispatcher + $A
 + $1AE8[0D0343CC]{dbxmys30.dll} getSQLDriverMYSQL + $1AE8
 + $33C9[0D035CAD]{dbxmys30.dll} getSQLDriverMYSQL + $33C9
 + $A[52BE86E1]{dbexpress100.bpl} SqlExpr.SqlExpr.TISQLCommand30.execute (Line 2287, "SqlExpr.pas" + 1) + $A
 + $14[52BF3F23]{dbexpress100.bpl} SqlExpr.SqlExpr.TCustomSQLDataSet.ExecuteStatement (Line 6750, "SqlExpr.pas" + 38) + $14
 + $2[52BF0FFA]{dbexpress100.bpl} SqlExpr.SqlExpr.TCustomSQLDataSet.InternalOpen (Line 5590, "SqlExpr.pas" + 1) + $2
 + $4[036DF069]{dbrtl100.bpl} DB.DB.TDataSet.DoInternalOpen (Line 9259, "DB.pas" + 2) + $4
 + $7[036DEFDD]{dbrtl100.bpl} DB.DB.TDataSet.SetActive (Line 9241, "DB.pas" + 12) + $7
 + $0[51F4AC2E]{rtl100.bpl } TypInfo.TypInfo.SetOrdProp (Line 1318, "TypInfo.pas" + 27) + $0
 + $6[20EFD30A]{designide100.bpl} DesignEditors.DesignEditors.TEnumProperty.SetValue (Line 1402, "DesignEditors.pas" + 5) + $6
 + $16[20EFB99C]{designide100.bpl} DesignEditors.DesignEditors.TPropertyEditor.Edit (Line 671, "DesignEditors.pas" + 11) + $16
 + $5[20C9697E]{coreide100.bpl} PropInsp.PropInsp.TPropertyInspector.PropListEditDblClick (Line 837, "PropInsp.pas" + 20) + $5
 + $A[20FDD681]{vclide100.bpl} IDEInspListBox.IDEInspListBox.TInspListBox.DoEditDblClick (Line 981, "ideinsplistbox.pas" + 2) + $A
 + $6[5205CA19]{vcl100.bpl } Controls.Controls.TWinControl.WndProc (Line 7246, "Controls.pas" + 105) + $6
...
so zu reproduzieren:
  • TSQLConnection aufs Form, korrekte Eigenschaften eingeben.
  • TSQLQuery aufs Form, Verbinden und SQL, das eine Ergebnismenge liefert, zuweisen
  • TSQLQuery ausführen (z.B. über Komponenten, Active:= true oder .Open)

Befehle ohne Ergebnisse (Create Table) gehen intressanterweise über .ExecSQL .

Konkret angewendeter Code, der den Fehler auch produziert:

select * from firsttable;
Delphi-Quellcode:
procedure TMainForm.Button1Click(Sender: TObject);
var
  Str: string;
begin
  SQLQuery1.Open; //Fehler
  SQLQuery1.First;
  while not SQLQuery1.EOf do begin
     Str:= SQLQuery1.FieldByName('Name').AsString;
     ShowMessage(Str);
     SQLQuery1.Next;
  end;
end;
Weiß jemand, ob (und wenn ja wo) es einen funktionierenden dbExpress Treiber für MySQL 5.1 gibt? Man müsste diesen ja dann nur noch der dbxdrivers.ini hinzufügen.

[Edit]Aus der TQuery die TSQLQuery gemacht.
Man kann einen Barbier definieren als einen, der alle diejenigen rasiert, und nur diejenigen, die sich nicht selbst rasieren.
Rasiert sich der Barbier?
  Mit Zitat antworten Zitat