情况:使用遗留的经典 ASP 代码,尝试将代码库从旧服务器移动到新服务器。
该代码尝试使用 MySQL ODBC 5.1 驱动程序和 ADODB.Connection 对象连接到 Windows 服务器上的 MySQL 数据库。
Connection String = "Driver={MySQL ODBC 5.1 Driver};Server=dbserver;Database=dbname;Uid=username;Password=password;Option=3"
查询结果在 ADODB.RecordSet 对象中返回。
当我尝试访问包含标准 MySQL 整数的字段时,出现以下错误:
Microsoft VBScript 运行时错误“800a01ca”
变量使用 VBScript 不支持的自动化类型
如果我使用 cLng() 手动转换字段,则会消除错误并返回正确的值。但是,手动查找每个对整数的引用并手动转换它的代码太多。
VarType() 对这些值返回 19,这似乎是 VB 无法理解的某种 Long 数据类型。 (See here http://www.xtremevbtalk.com/general/21478-vartype-19-a.html)
ODBC 驱动程序不是应该为长整数返回 VarType 3 吗? (see here https://msdn.microsoft.com/en-us/subscriptions/3kfz157h(v=vs.84).aspx)
我尝试在连接字符串的“option=”参数中传递选项 16384 (NO_BIGINT),但没有任何区别。
知道如何纠正这个问题吗?似乎应该有一个选项可以传递给 MySQL ODBC 驱动程序以将 long 作为 Long Integer 数据类型返回,但我找不到它。
在有人提及之前:是的,我们知道经典 ASP 很糟糕。不,我们现在没有资源将此代码移植到其他地方。目前我们只需要它来继续开发经典 ASP。