少し前まで、幸せなプログラマーの平和な世界では、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:( 以下のコメントに記載されているように) 私たちが持っている実用的な解決策はこれです:
- ***TEXT にする必要のないものを VARCHAR(BigEnough) に変更します。
- ***TEXT にする必要があるものについては ASP を編集して、値を直接変数に入れます。
これは優れたソリューションとは言えませんが、データをより正確に検討する必要があります。これは良いことです...そうですか?