2

リモートサーバーで、テキストエリアからMySQLデータベースにテキスト(967 537文字)を保存しています.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

アパッチ:

suhosin.post.max_value_length = 1000000

ローカルホストでは、すべて正常に動作します。

4

3 に答える 3

3

通常の使用MEDIUMTEXTまたは代わりに。16,777,215 バイト、約 16MB、4,294,967,295 バイト、つまり約 4GB を含めることができます。LONGTEXTTEXTMEDIUMTEXTLONGTEXT

LONGTEXTMEDIUMTEXT少し大きいかもしれないので、十分だと思います。

編集:

これが私の頭に浮かびました。常に表示する必要がある複数のページがある場合、データベースよりも優れた (そして高速な) ものがあります。それをプレーンな HTML ファイル (それだけの場合は TXT でも) に生成し、必要なときに必要な場所に含めることができます。このようにして、データベースが大量のスペースを占有することはありません。

于 2012-10-19T09:16:49.763 に答える
2

次の型フィールドの制限を確認する必要があります。

http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

TEXT タイプの最大長が 2^16 未満 (65536)

于 2012-10-19T09:17:05.737 に答える
2

タイプTEXTが小さすぎます (お気づきのように、最大​​ 64K までしか保持できません)。を使用MEDIUMTEXTして 16M に到達することも、LONGTEXTそれ以上を取得することもできます。ストレージ要件 (行ごとに 1 バイト余分に必要) を考えると、16M を超える可能性が少しでもある場合は、LONGTEXT.

しかし、なぜDBにデータを保存しているのか疑問に思うべきだと思います。プラットフォームの間接的な要件でない限り (たとえば、ORM を使用する方が簡単ですが、ファイル ストレージにはアドホックな列データ ドライバーが必要です)、または全文インデックス作成機能を利用したい場合を除き、保存する方が便利な場合があります。データを個別のファイルとして保存し、ファイル名のみをデータベースに保存します (または、tablename_primarykeyvalue.htmlファイル名として使用することで、ファイル名の保存要件も節約できます)。

「セパレート ストレージ」方式では、データの取得とバックアップが複雑になります。一方、バックアップはより小さく高速になり、ディスク使用量が少なくなり、セキュリティ モデルで許可されている場合は、データベースを完全にバイパスしてファイルへの直接アクセスを許可できます。たとえば、ブログ投稿を保存している場合は、 AJAX を介してそれらを取得し、データベースの負荷を軽減し、ブラウザーのキャッシュ戦略を活用できます (また、一部のプラットフォームでは、圧縮ファイルを直接提供できるため、速度が向上し、CPU が節約されます)。

この投稿非常に大きなフィールドは MySQL データベースに悪影響を及ぼしますか? は、MySQL TEXT ストレージを提唱していますが、それを望まない理由についてもいくつかの考慮事項を示しています。

アップデート

ローカルホストでは、すべて正常に動作します。

危険だ、ウィル・ロビンソン!開発データベースと実稼働データベースが同期されていlocalhostない限り、それが機能する方法はありません。つまり、ローカルホストとリモートにあります。質問は、2 つのデータベース間で他に何が異なる可能性があるかということです。ご質問とは関係ありませんが、ぜひチェックしていただきたい内容です!MEDIUMTEXTTEXT

于 2012-10-19T09:32:05.257 に答える