MySQL ODBC 5.1 驱动程序向 ADODB 返回错误的数据类型

2024-03-29

情况:使用遗留的经典 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。


好吧,通过排除法我终于发现了问题所在。没有把握why发生这种情况但它一定是 MySQL ODBC 驱动程序中的错误。

具有 UNSIGNED 属性的整数字段会导致错误。删除此属性会导致字段值作为标准整数类型返回。显然,ODBC 驱动程序没有正确处理从 unsigned int 到 vbscript Integer 类型的转换,而是返回一个指向 Long 的指针。

我还注意到我用作布尔值的 tinyint(1) 字段上存在这个问题。将数据类型从 tinyint(1) 更改为 int(11) [默认值] 也消除了此错误。

希望这会对其他人有所帮助。仅供参考,我也在 MySQL ODBC 驱动程序论坛中发布了这个问题,但没有人愿意回应。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL ODBC 5.1 驱动程序向 ADODB 返回错误的数据类型 的相关文章

  • 显示mysql中存储路径的图像

    我已将图像上传到文件夹中并将路径存储到 MySQL 数据库中 路径已存储 图像已成功插入文件夹 但我的问题是当我显示存储在数据库中的路径中的图像时 它没有显示 当我回显图像路径时 它会显示图像路径 我检查了浏览器设置 一切正常 这是我的代码
  • PDO在mysql性能中的作用

    最近我在浏览一篇博客 注意到有关在mysql中使用PDO的一些要点 它改变了我对PDO的看法 要点是 本机准备好的语句无法利用查询缓存 从而导致性能降低 本机准备好的语句无法执行某些类型的查询 例如 SHOW TABLES 本机准备好的语句
  • MySQL 错误:#1142 - SELECT 命令被拒绝给用户

    我在一台服务器上的某个查询时遇到问题 在我测试过的所有其他地方 它工作得很好 但在我想使用它的服务器上 它不起作用 这是关于以下 SQL SELECT facturen id AS fid projecten id AS pid titel
  • URL 重写查询数据库?

    我试图了解 URL 重写的工作原理 我有以下链接 mysite com profile php id 23 我想用用户的名字和姓氏重写上面的网址 mysite com directory liam gallagher 然而 根据我读到的内容
  • 搜索拥有超过十亿条记录的数据库的最有效方法?

    我的客户有一个巨大的数据库 仅包含三个字段 主键 无符号数 姓名 多字文本 描述 最多 1000 个 varchar 该数据库拥有超过数十亿条条目 我以前没有处理如此大量数据的经验 他希望我设计一个使用 AJAX 如 Google 的界面来
  • 将数据导入mysql的最佳方法

    我有一个包含 500 000 行和大约 10 列的表 该表处于访问状态 我如何将其导入到mysql 这是关于该主题的文章 http www kitebird com articles access migrate html http www
  • 每个派生表必须有自己的别名 - 使用多个 SELECT 语句时出错

    我尝试在查询中使用多个 SELECT 语句从数据库获取数据 但出现错误 查询是 SELECT FROM SELECT FROM players WHERE lid 0 WHERE NOT EXISTS SELECT FROM players
  • 选择从查询中检索列名称的列

    我正在寻找一种优雅的方法来从表 A 中选择列 其中列名是从表 B 上的查询中检索的 对表 B 的查询结果 col01 表 A 有几个名为 col01 col02 col03 最终查询应该是为了结果 result from B effecti
  • 在 MySQL 中存储 IPv6 地址

    正如 需要支持 ipv6 的 inet aton 和 inet ntoa 函数 http bugs mysql com bug php id 34037 目前没有用于存储 IPv6 地址的 MySQL 函数 用于存储 插入的推荐数据类型 函
  • 根据当前配置,没有映射 Doctrine ORM 实体

    我有一个可疑的问题 我有一组现有的带注释的 Doctrine 实体 它们已在 Symfony2 Doctrine2 项目中成功使用 然而 我目前正在将该项目的一些核心功能隔离到它自己的 Web 框架独立库中 但我似乎无法让这些实体正常运行
  • MySQL服务器安装配置失败

    我试图使用 Windows x86 32 位 MSI 安装程序在本地计算机 Win7 32 上安装 MySQL 服务器 安装后向导配置服务器时出现错误 配置失败 详细信息 mysql server 5 5 win32 6 Looking f
  • sqlalchemy:每次提交都需要回滚吗?

    我正在为我的网络应用程序使用 SQLAlchemy 我见过很多这样的代码 try session commit except session rollback 我想知道是否每个人都有必要commit 手术 如果是 那么为什么它不属于comm
  • postgresql中插入语句中的加密密码抛出错误(需要添加显式类型转换)

    刚接触 postgresql 这可能很简单 但我不明白 我在 mysql 中有这个 insert into APP USERS VALUES 1 admin adminemailid System Administrator SysAdmi
  • 如何在 C 中将浮点数转换为 4 字节字符?

    我想将浮点数 例如 2 45 转换为 4 字节字符数组 所以 2 45 应该是这样的 FS 这是二进制的 IEEE 表示2 45 01000000 00011100 11001100 11001101 我已经解决了这个问题 但它的复杂性很差
  • 根据自定义数组位置排序帖子

    我想根据自定义字段列出帖子列表 这里我有 9 个帖子 有不同的 3 个位置 中 上 下 Post ID title position 1 Post1 Top 2 Post2 Bottom 3 Post3 Top 4 Post4 Bottom
  • 我们如何在存储过程中使用 mysql_affected_rows()

    我们如何使用mysql affected rows 在存储过程中 Use the ROW COUNT http dev mysql com doc refman 5 1 en information functions html funct
  • 在列名中使用保留字

    这是一些简单的代码 但我只是不知道为什么我不能使用这个词作为表的实体 CREATE TABLE IF NOT EXISTS users key INT PRIMARY KEY NOT NULL AUTO INCREMENT username
  • Openshift MYSQL 环境变量未设置

    我的所有 MySQL 环境变量都会导致空字符串 例如 echo getenv OPENSHIFT MYSQL DB URL echo getenv OPENSHIFT MYSQL DB HOST 然而其他人 例如 回声 getenv OPE
  • 检索多行最后插入的 id

    当将数据插入具有自动递增 PK 的表时 我需要获取该密钥以在另一个语句中使用 正如许多问题所示 这可以在 PHP 中使用mysql insert id 但是 我一直将插入内容分组在一起 因此一次插入不止一行 我这样做是因为我猜测可能会存在一
  • mysql非空字段计数

    我想计算 mysql 中特定字段集有多少字段为空 我找到了一些示例 但它们都遍历整个表 基本上我有8个字段 listing photo 1 到listing photo 8 我想知道其中有多少个被填充 I tried result mysq

随机推荐