对于经典的ASP脚本,如何在MySQL中强制浮点值?

对于经典的ASP脚本,如何在MySQL中强制浮点值?,第1张

概述我负责维护传统的经典ASP应用程序.该应用程序使用ODBC系统DSN连接到MySQL数据库.我们最近不得不更新服务器以满足某些许可要求.我们在Windows上,使用MySQL 4.x和3.51 ODBC驱动程序.我们转移到运行MySQL 5.1.43的Linux计算机上,并在新的IIS服务器上运行5.1.6 ODBC驱动程序.用户几乎立即开始报告错误,例如:

我负责维护传统的经典ASP应用程序.该应用程序使用ODBC系统DSN连接到MySQL数据库.

我们最近不得不更新服务器以满足某些许可要求.我们在windows上,使用MysqL 4.x和3.51 ODBC驱动程序.我们转移到运行MysqL 5.1.43的linux计算机上,并在新的IIS服务器上运行5.1.6 ODBC驱动程序.

用户几乎立即开始报告错误,例如:

Row cannot be located for updating.
Some values may have been changed
since it was last read.

这是一个虚假错误,同一数据在同一记录上的更改在不同时间并不总是会产生该错误.在不同的记录之间它也是断断续续的,因为有时,无论我插入什么值,我都无法在所有记录上重现缺陷.

它在大约120个脚本中的70个中发生,许多脚本超过1000行.

我能找到的唯一一致性是,在所有失败的脚本上,它们都是向数据库读取/写入浮点数.具有空值的字段似乎不会崩溃,但是如果数据库中存在一个类似于“ 19”的值(请注意不带小数位),则该值似乎会失败,而“ 19.00”则不会.大多数浮点数定义为11,2.

这些脚本正在使用ADODB和记录集.使用以下模式进行更新:

>从ID =的表中选择*
过时的recordID
>从表单更新记录的属性
>调用RecordSet.Update和RecordSet.Close

该错误是从RecordSet.Update命令生成的.

我创建了一个解决方法,而不是选择/复制/更新,而是生成了要执行的SQL语句.这可以完美地工作(显然,带有where子句的UPDATE语句更加集中,并且不考虑未更新的字段),所以我有一种很好的感觉,那就是浮点数的舍入问题导致与重新调用更新调用中的记录.

我确实希望不重写这些实例的100个(源中的grep直接找到280个更新调用).

任何人都可以确认此处的问题与浮动/舍入有关吗?

如果是这样,是否有我可以申请的全球解决方案?

提前致谢,
-jc最佳答案看看MySQL Forums :: ODBC :: Row cannot be located for updating.
他们似乎也找到了一些解决方法和一些解释. 总结

以上是内存溢出为你收集整理的对于经典的ASP脚本,如何在MySQL中强制浮点值? 全部内容,希望文章能够帮你解决对于经典的ASP脚本,如何在MySQL中强制浮点值? 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1165552.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存