3

不久前,在一个快乐的程序员的和平世界里,ASP 经典和 MySQL (5.0) 曾经相处得很好。ODBC (3.51) 是他们的朋友,数据会毫无问题地从天堂流出(阅读:数据库)。

然后,有一天,发生了一件黑暗而神秘的事件。现在 MySQL Clan 中的某些 DataTypes 拒绝表现。

突然之间,TEXT 在 ASP 对象中不再可用。因此,任何NOT NULL的预测试都成为对象中数据的结尾。

... 严重地。什么的。您可以在此处查看表示:http ://bugs.mysql.com/bug.php?id=44831 和此处: http: //forums.mysql.com/read.php?132,220948,220948

我的问题是:有没有人知道为什么会发生这种情况。我有零愿望回去编辑 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

这导致:
输出: 乱码 乱码 乱码
输出:
输出:
输出:

(我会在这里要求一些自由度:上面的文本字符串 -> 请记住,为了这个练习,它以 TEXT 或 MEDIUMTEXT 的形式出现。)

编辑 2:( 如以下评论中所述) 我们拥有的工作解决方案是:

  1. 将真正不需要 ***TEXT 的内容更改为 VARCHAR(BigEnough)。
  2. 并为需要 ***TEXT 的内容编辑 ASP 以将值直接放入变量中。

这远不是一个很好的解决方案,但它确实迫使您更准确地考虑您的数据 - 这只能是一件好事......对吗?

4

1 回答 1

0

马克,我在这里远射。就我对经典 ASP 的了解(包括多年的咒骂和喜爱),来自 MySQL 数据库的 NULL 答案导致......实际上什么也没有。除非您将记录集结果定义为字符串,否则它将无法与"". 所以,要么你这样做:

var recordsetVal = oRs("textthing")&""

...或者你可以简单地这样做:

if oRs("textthing")&"" <> "" then 

while ... wend另外,请使用do while...loop花边代替。它可能会起作用。同样,这是一个长镜头。这个问题可能涉及许多因素,但 MySQL 驱动程序和 ODBC 兼容性问题只是其中之一,幸运的是,可能性最小。随时通知我们。

于 2013-08-26T08:00:20.273 回答