web-dev-qa-db-ja.com

VARCHAR(20000)はMySQLで有効ですか?

MySQLのvarcharフィールドの最大長を明確にする必要があります。

私はいつも最大長が255だと思っていました(255文字?私が推測したキャラクターですが、これは私の混乱の原因かもしれません)。作業している外部企業によってセットアップされたデータベースのテーブルを見ると、255文字より長いxmlのチャンクを保持するvarchar(20000)としてのフィールドセットアップがあります。なぜこれが機能するのですか? 20000は有効な値ですか?

少しグーグルで、mysqlのvarcharには65,535バイトの制限があり、varchar(65535) in use が表示されていることがわかりました。

60
Zoe

MySQLバージョンに注意してください。

http://dev.mysql.com/doc/refman/5.0/en/char.html

VARCHAR列の値は可変長文字列です。長さは、MySQL 5.0.3より前の0〜255、および5.0.3以降のバージョンでは0〜65,535の値として指定できます。 MySQL 5.0.3以降のVARCHARの有効な最大長は、最大行サイズ(65,535バイト、すべての列で共有)および使用される文字セットに依存します。

MySQLのバージョンは何ですか?

次のクエリを実行します...

select version() as myVersion
72
Sampson

最大長を255から65535に変更したバージョン5.0.3以降で有効です。

CHARは常に最大255です。

http://dev.mysql.com/doc/refman/5.0/en/char.html

12

入力が大きすぎると予想される場合は、代わりにTEXT、MEDIUMTEXTまたはLONG​​TEXTを使用することをお勧めします。

8
Havenard

Varchar(2000)でインデックスを構築することはできませんが

3
shantanuo

この質問には MySQL VARCHAR最大サイズとは何ですか?

MySQLには最大行サイズ制限があることに注意してください

MySQLテーブルの内部表現には、65,535バイトの最大行サイズ制限があり、BLOBおよびTEXTタイプはカウントしません。 BLOB列とTEXT列は、内容が残りの行とは別に格納されるため、行サイズの制限に対して9〜12バイトのみを提供します。 テーブルの列数と行サイズの制限についての詳細をご覧ください。

1つの列が占有できる最大サイズは、MySQL 5.0.3の前後で異なります

VARCHAR列の値は可変長文字列です。長さは、MySQL 5.0.3より前の0〜255の値、および5.0.3以降のバージョンでは0〜65,535の値として指定できます。 MySQL 5.0.3以降のVARCHARの有効な最大長は、最大行サイズ(65,535バイト、すべての列で共有)および使用される文字セットに依存します。

ただし、utf8やutf8mb4などのマルチバイト文字セットを使用する場合、制限は低くなります。

行サイズの制限を克服するには、TEXT型を使用します。

4つのTEXTタイプは、TINYTEXT、TEXT、MEDIUMTEXT、およびLONGTEXTです。これらは4つのBLOBタイプに対応し、最大長とストレージ要件は同じです。

2
rajukoyilandy

MySQLマニュアルの状態

VARCHAR列の値は可変長文字列です。長さは、MySQL 5.0.3より前の0〜255、および5.0.3以降のバージョンでは0〜65,535の値として指定できます。

そのため、使用しているバージョンによって異なります。

1
pavium