2009-06-09 62 views
1

我有一個使用mySQL數據庫編寫的ASP網站。 ASP使用ODBC 5.1驅動程序連接到數據庫。在數據庫內部有一個varchar(8000)列(長度從小開始,但應用程序自從構思以來已經進化了很多)。無論如何,最近很明顯,varchar列應該更改爲MEDIUMTEXT列。我做了改變,一切都顯得很好。但是,每當我執行UPDATE語句時,該列中的數據就會被損壞。對於網站的性質,我無法提供數據或示例查詢,但查詢不使用任何功能或任何內容;只是一個更新。使用MediumText和ASP/MySQL數據損壞

一切工作正常與varchar,但當我使該字段MEDIUMTEXT炸燬。我所說的腐​​敗如下:

ڹ   ߘ ߘ 

任何想法?

+0

你怎麼得到那個輸出?通過代碼或查詢分析器/企業管理器? – NoCarrier 2009-06-09 20:22:38

+0

ASP和phpMyAdmin都顯示亂碼。我沒有使用分析器或企業管理器.... – SpaDusA 2009-06-10 14:20:44

回答

0

你檢查過編碼(ASP + HTML + DB)嗎?使用UTF8?

不使用UTF8,文本不是英文,對不對?

+0

我沒有檢查,我沒有使用UTF8 – SpaDusA 2009-06-29 14:26:47

0

您可能有版本特定的錯誤。我搜索了「mysql alter table mediumtext corruption」,並且有一些特別與代碼頁和非latin1字符集有關的bug。

最好的辦法是對錶格進行調查,並將其與備份進行比較。如果這是MyISAM表,您可能需要使用CHECKSUM option enabled重新創建表。 CHECK TABLE告訴你什麼?如果ALTER TABLE不爲你工作,你可以考慮分割MEDIUMTEXT場到它自己的表,或複製使用INSERT的變化表內容... SELECT:

CREATE TABLE b LIKE a; 
ALTER TABLE b MODIFIY b.something MEDIUMTEXT; 
INSERT INTO b SELECT * FROM a LIMIT x,1000; 
-- now check those 1000 rows -- 

通過插入幾一次一行,然後檢查它們,你可能會弄清楚什麼樣的輸入不能很好地轉換。

檢查dmesg和syslog輸出以查看是否存在內存或磁盤問題。我看到由於ECC錯誤,壞RAID控制器,壞扇區和網絡傳輸錯誤而導致表損壞。您可以在類似的機器上嘗試ALTER TABLE並查看它是否檢出。