3

少し前まで、幸せなプログラマーの平和な世界では、ASP クラシックと MySQL (5.0) はうまくやっていた。ODBC (3.51) は彼らの友人であり、データは問題なく天国 (データベース) から流れてきました。

そんなある日、暗く不可思議な出来事が起きた。そして現在、MySQL クラン内の特定のデータ型が動作を拒否しています。

突然、TEXT が ASP オブジェクトで一度以上使用できなくなりました。したがって、NOT NULLの事前テストは、オブジェクト内のデータの終わりになりました。

... 真剣に。なんと。ここで表現を見ることができます: http://bugs.mysql.com/bug.php?id=44831 とここ: http://forums.mysql.com/read.php?132,220948,220948

私の質問は次のとおりです。なぜこれが起こり始めたのか誰か知りましたか? レコードセットがいっぱいになった直後に、何百ものサイトに戻って編集して値を 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

出力:
garble garble garble garble
出力:
出力:
出力:

(ここである程度の許容範囲をお願いします: 上記のテキスト文字列 -> この演習のために、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 の互換性の問題はその 1 つにすぎず、幸いなことに、その可能性は最も低いものです。お知らせください。

于 2013-08-26T08:00:20.273 に答える