我有一个用ASP写的网站,有一个mySQL数据库。ASP使用ODBC 5.1驱动程序连接到数据库。在数据库中有一个varchar(8000)列(最初的长度很小,但应用程序自构思以来已经发展了很多)。不管怎样,最近有一件事变得很明显,那就是varchar列应该改为MEDIUMTEXT列。我做了更改,一切看起来都很好。但是,每当我执行UPDATE语句时,该列中特定行的数据就会损坏。对于网站的性质,我无法提供数据或示例查询,但查询不使用任何函数或任何东西;只是直接更新。
使用varchar一切正常,但是当我将字段设置为MEDIUMTEXT时,它就崩溃了。我所说的腐败如下所示:
ٔڹ���������������ߘ����ߘ��������
有什么想法吗?
发布于 2009-06-18 01:18:53
你检查过编码(ASP+HTML+DB)了吗?使用UTF8?
没有使用UTF8,文本也不是英文的,对吧?
发布于 2009-11-10 15:09:20
您可能有一个特定于版本的bug。我搜索了"mysql alter table mediumtext corruption“,发现有一些bug特别与代码页和非latin1字符集有关。
最好的办法是对表进行一次调查,并将其与备份进行比较。如果这是一个MyISAM表,您可能需要使用CHECKSUM option enabled重新创建该表。检查表会告诉你什么?如果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,并查看它是否正确无误。
https://stackoverflow.com/questions/971913
复制相似问题