我有一个我一直支持的程序,最近安装在 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/