在远程服务器上,我将文本(967 537个字符)从textarea保存到MySQL数据库,类型为TEXT的列。
只保存了大约63个748个字符。
另外,在phpMyAdmin中,我在执行UPDATE时遇到以下错误:
Warning: #1265 Data truncated for column 'content' at row 1
由于我自己无权更改配置文件,因此在我请求之前知道应该更改什么来解决此问题会很好。
版本:
PHP 5.2.14
MySQL 5.0.96
Apache 2.2.12
MySQL配置:
max_allowed_packet = 52428800
net_buffer_length = 8192
PHP ini:
post_max_size = 32M
的Apache:
suhosin.post.max_value_length = 1000000
在localhost上,一切正常。
答案 0 :(得分:3)
使用正常MEDIUMTEXT
的{{1}}或LONGTEXT
内容。 TEXT
可以包含16,777,215个字节,大约16MB,MEDIUMTEXT
可以包含4,294,967,295个字节,因此大约4GB。
LONGTEXT
可能有点大,所以我猜LONGTEXT
就足够了。
修改强>
这只是我想到的:如果你有多个页面需要一直显示,那么比数据库有更好(和更快)的东西。您可以将其生成为纯文本HTML文件(即使只是TXT文件),并将其包含在您需要的时间和地点。这样你就不会有一个占用大量空间的数据库。
答案 1 :(得分:2)
您应该检查类型字段限制:
http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
TEXT类型具有maxlength< 2 ^ 16(65536)
答案 2 :(得分:2)
类型TEXT
太小(如您所发现的,它最多只能容纳64K)。您可以使用MEDIUMTEXT
达到16M,或LONGTEXT
以获得更多。鉴于存储要求(每行一个额外字节),如果有最轻微的风险超过16M,请使用LONGTEXT
。
但我认为您应该质疑为什么要在数据库中存储数据。除非它是平台的间接要求(例如,它更容易使用ORM,而文件存储需要临时列数据驱动程序),或者您想要使用全文索引功能,存储可能更方便数据作为单独的文件,仅将文件名存储在数据库中(或者您可以使用tablename_primarykeyvalue.html
作为文件名,从而节省文件名存储要求。)
“单独存储”方法使数据检索和备份复杂化。另一方面,备份将更小更快,磁盘使用率更低,如果您的安全模型允许,您可以允许直接访问绕过数据库的文件:例如,如果您要存储博客帖子,可以通过AJAX检索它们,减少数据库负载并利用浏览器缓存策略(在某些平台上,您可以直接提供压缩文件,从而提高速度并节省CPU)。
这篇文章Do very large fields have a negative effect on MySQL databases?提倡MySQL TEXT存储,但也提出了一些你可能不想要的注意事项。
在localhost上,一切正常。
Danger,Will Robinson!除非您的开发和生产数据库未同步,否则它无法在localhost
上运行。即,您在localhost上有MEDIUMTEXT
,在远程上有TEXT
。所以问题是,两个数据库之间还有什么不同?虽然与您的问题无关,但您肯定想要查看的内容!