Situation: Arbeitet mit veraltetem klassischem ASP-Code und versucht, die Codebasis von einem alten auf einen neuen Server zu verschieben.MySQL ODBC 5.1-Treiber gibt falschen Datentyp an ADODB zurück
Der Code versucht, mithilfe des MySQL ODBC 5.1-Treibers und des ADODB.Connection-Objekts eine Verbindung zu einer MySQL-Datenbank auf einem Windows-Server herzustellen.
Connection String = "Driver={MySQL ODBC 5.1 Driver};Server=dbserver;Database=dbname;Uid=username;Password=password;Option=3"
Abfrageergebnisse werden in ADODB.Recordset Objekte zurückgegeben. Wenn ich versuche, ein Feld für den Zugriff auf eine Standard-MySQL Integer enthält, ich diesen Fehler:
Microsoft VBScript runtime error '800a01ca'
Variable uses an Automation type not supported in VBScript
Wenn ich das Feld manuell konvertieren mit CLng(), dann der Fehler beseitigt ist und der richtige Wert zurückgegeben wird. Es gibt jedoch zu viel Code, um manuell nach jedem Verweis auf eine ganze Zahl zu suchen und sie manuell zu konvertieren.
VarType() gibt 19 für diese Werte zurück. Es scheint sich dabei um einen Typ von Long-Datentyp zu handeln, den VB nicht versteht. (See here) Soll der ODBC-Treiber VarType 3 nicht für lange ganze Zahlen zurückgeben? (see here)
Ich versuchte, die Option 16384 (NO_BIGINT) im Parameter "option =" der Verbindungszeichenfolge zu übergeben, aber es machte keinen Unterschied.
Irgendeine Idee, wie man das korrigiert? Es scheint, dass es eine Option geben sollte, die an den MySQL-ODBC-Treiber übergeben wird, um Longs als Long Integer-Datentyp zurückzugeben, aber ich kann es nicht finden.
Bevor jemand es erwähnt: ja wir wissen, dass klassische ASP schlecht ist. Nein, wir haben momentan keine Ressourcen, um diesen Code in etwas anderes zu portieren. Wir brauchen es nur, um für die aktuelle Zeit weiter an klassischem ASP zu arbeiten.
Lassen Sie sich von niemandem sagen, dass der klassische ASP irgendwie intrinsisch schlecht ist. (Ich habe noch nie mit MySQL gearbeitet, kann also nicht mit Ihrer eigentlichen Frage helfen, aber ich wollte das hier heraus bringen.) – Martha
@Martha müssen sie nicht schreiben, Classic ASP ist nicht schlecht, es ist nur alt. Es gibt immer noch viele Projekte, die unterstützt werden müssen, die nicht auf .Net übertragen werden. Oft ist der Kunde glücklich, wie es funktioniert, damit es bleibt. – Lankymart
OK also warum der Downvote? Was habe ich falsch gemacht? –