postgresqlのさまざまなデータタイプのサイズ制限は何ですか?私はどこかで、1から10485760の間character varying(n)
でvarchar(n)
n
なければならないことを見ました。それは本当ですか?
何のために有効なサイズですcharacter(n)
、char(n)
とtext
?
postgresqlのさまざまなデータタイプのサイズ制限は何ですか?私はどこかで、1から10485760の間character varying(n)
でvarchar(n)
n
なければならないことを見ました。それは本当ですか?
何のために有効なサイズですcharacter(n)
、char(n)
とtext
?
回答:
Postgresの制限された文字タイプ(例:varchar(n))の最大サイズは10485760です。これは次の方法で確認できます。
create table test(id serial primary key, str varchar(10485761));
ERROR: length for type varchar cannot exceed 10485760
この制限は、次のソースコードのフラグメント(htup_details.h)で定義されていますが、公式のドキュメントでは明示的に言及されていません。
/*
* MaxAttrSize is a somewhat arbitrary upper limit on the declared size of
* data fields of char(n) and similar types. It need not have anything
* directly to do with the *actual* upper limit of varlena values, which
* is currently 1Gb (see TOAST structures in postgres.h). I've set it
* at 10Mb which seems like a reasonable number --- tgl 8/6/00.
*/
#define MaxAttrSize (10 * 1024 * 1024)
可変長無制限タイプ(テキスト、varchar)の最大文字数は未定義です。すべての文字列タイプには、バイト単位のサイズ制限があります。
いずれの場合も、保存できる最長の文字列は約1 GBです。