不久前,在一个快乐程序员的和平世界中,ASP经典和MySQL(5.0)过去相处得很好。 ODBC(3.51)是他们的朋友,数据将从天堂(读取:数据库)流出,没有任何问题。
然后,有一天,发生了一个黑暗而神秘的事件。现在MySQL Clan中的某些DataType拒绝表现。
突然间,TEXT停止在ASP对象中可用,而不是ONCE。因此, NOT NULL 的任何预测试都成为对象中数据的结尾。
......说真的。什么的您可以在此处查看表示:http://bugs.mysql.com/bug.php?id=44831和此处:http://forums.mysql.com/read.php?132,220948,220948
我的问题是:有没有人发现为什么会这样。我有 ZERO欲望返回并编辑100个站点,以便在记录集填满后立即将值放入var中。
哄我超人!
我们已尝试升级到MySQL 5.6和ODBC 5.1.sumthin& 5.2.5 ......但没有任何帮助。 (我们确定ODBC版本对该问题没有影响)
当前的生产服务器保留在ODBC 3.51 + MySQL 5.0
当前测试服务器包含ODBC 5.2.5 + MySQL 5.6
编辑:使用ADODB连接
即:
dim oC, oRs
set oC = Server.createObject("ADODB.Connection")
oC.Open database
set oRs = oC.execute("SELECT 'garble garble garble garble' as `textthing`;")
if not oRs.eof then
for x = 0 to 3
response.write "Output: "
response.write oRs("textthing") &"<br />"
next
end if
oRs.close
set oRs = nothing
oC.close
set oC = nothing
这导致:
输出:乱码乱码
输出:
输出:
输出:
(我在这里要求一些自由:上面的文字字符串 - &gt;记住它是为了这个练习而作为TEXT或MEDIUMTEXT出现。)
编辑2: (如下面的评论中所述) 我们的工作解决方案是:
这远非一个很好的解决方案,但它确实会迫使您更准确地考虑您的数据 - 这只能是一件好事......对吗?
答案 0 :(得分:0)
""
进行比较。所以,要么你这样做:
var recordsetVal = oRs("textthing")&""
......或者您可以这样做:
if oRs("textthing")&"" <> "" then
此外,使用while ... wend
花边代替do while...loop
。它可能会奏效。
再次,这是一个很长的镜头。这个问题可能涉及很多因素,但MySQL驱动程序和ODBC兼容性问题只是其中之一,幸运的是,可能性最小。让我们发布。