mysql - addnew 之后记录集更新时出错,表示即使默认设置为空字符串,列也不能为空

标签 mysql vb6 odbc ado

我有一个我一直支持的程序,最近安装在 Windows 7 计算机上。一切都正常,但是最近这台机器开始收到以下错误,在修改字段后使用 recordset.update 方法时,我收到了以下错误。

-2147467259 ([MySQL][ODBC 3.51 Driver][mysqld-4.0.18-nt]Column 'fd_number' cannot be null)

表“fd_number”看起来像这样:

CREATE TABLE `bookguide` (
`author` varchar(100) NOT NULL default '',
`title` varchar(100) NOT NULL default '',
`isbn` varchar(13) NOT NULL default '',
`whls` decimal(10,2) NOT NULL default '0.0000',
`oldwhls` decimal(10,2) NOT NULL default '0.0000',
`fd_number` varchar(100) NOT NULL default '',
KEY `isbn` (`isbn`)
) TYPE=MyISAM; 

修改此表的代码如下所示:

780     Do While Not txtstream.AtEndOfStream
790         Line = txtstream.ReadLine

800         rs.addNew
            'tempwhole = Mid$(line, 2, 9) + Mid$(line, 119, 1)
810         author = Mid$(Line, 10, 15)
820         author = Replace(author, "'", "")
830         author = Replace(author, ",", "")
840         title = Mid$(Line, 25, 70)
850         title = Replace(title, "'", "")
860         title = Replace(title, ",", "")
            'tempisbn = Mid$(tempwhole, 2, 8)
870         rs.fields("isbn").Value = Replace(Trim$(Mid$(Line, 95, 13)), "-", "")
880         rs.fields("author").Value = author
890        rs.fields("title").Value = title
900        rs.fields("whls").Value = Val(Mid$(Line, 139, 5))    
910        rs.Update
920    Loop

这只是失败的一个例子,整个程序中很可能有数千次更新/插入都是通过这种方式完成的。

我曾多次尝试重新安装 MySQL ODBC 3.51 驱动程序 (3.51.27),包括使用旧版本 (3.51.06),这消除了 ADO 问题,但引入了一个错误,该错误表明以下内容ODBC 驱动程序不支持在上述循环之后的这部分代码中所请求的属性

940    rs.Open "UPDATE bookguide SET oldwhls = whls, whls = 0",conn

最佳答案

问题似乎是 ODBC 驱动程序的多个版本,新版本/旧版本的卸载似乎仍然将 dll 和 lib 文件留在 sysWOW64 中,一旦我卸载了两个版本的 myODBC 并删除从 sysWOW64 目录中删除文件并重新安装 3.51.27 驱动程序,错误已消失。

关于mysql - addnew 之后记录集更新时出错,表示即使默认设置为空字符串,列也不能为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3712537/

相关文章:

php - 将 xml 提要导入 MySQL 数据库时替换特殊字符

vb6 - vb6 程序终止时卸载模块的内容

c# - VB6 事件传递 bool 参数,在 C# 中始终为 'true'

vb6 - 是否有必要在将 Adodb.recordset 对象设置为空之前关闭它?

mysql - 每个用户在使用单个应用程序时是否应该获得自己的数据库用户/密码?

mysql - 如何根据同一张表中的另一行进行更新?

java - 在 AWS EC2 上部署 Web 应用程序

mysql - 插入俄语字符变成问号(?????????????)

sql-server - 快速更改 SSIS 包数据源参数以方便迁移

sql-server - 从 PostgreSQL 查询 SQL Server