Re: ERROR: row is too big: size 8176, maximum size 8160
От | Albe Laurenz |
---|---|
Тема | Re: ERROR: row is too big: size 8176, maximum size 8160 |
Дата | |
Msg-id | D960CB61B694CF459DCFB4B0128514C2039381D8@exadv11.host.magwien.gv.at обсуждение исходный текст |
Ответ на | Re: ERROR: row is too big: size 8176, maximum size 8160 (Scott Marlowe <scott.marlowe@gmail.com>) |
Список | pgsql-general |
Scott Marlowe wrote: >>>> I am using postgresql-8.3.7 and have recently got this error: >>>> >>>> org.postgresql.util.PSQLException: ERROR: row is too big: size 8168, >>>> maximum size 8160 >>> >>> Please show us your table definition. >>> >>> Wild guess: you have many, many columns, non-text (INT or something >>> else), and such a row is bigger than 8 KByte, PG can't use TOAST. >>> >>> I think, you should re-design your table, read about normalisation. >> >> Or maybe a large column has been modified by >> ALTER TABLE ... ALTER COLUMN ... SET STORAGE PLAIN >> >> In any case, if you cannot figure out what causes your row to be >> so big, tell us the statements used to create the table and give us >> an idea of what you insert (the whole row is probably too > much spam). > > I thought even then if the backend can't fit it all in 8k it puts text > out of line. > test=> CREATE TABLE test (id integer PRIMARY KEY, val text); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "test_pkey" for table "test" CREATE TABLE test=> ALTER TABLE test ALTER val SET STORAGE PLAIN; ALTER TABLE test=> INSERT INTO test VALUES (1, '0123456789'); INSERT 0 1 test=> UPDATE test SET val = val || val WHERE id = 1; UPDATE 1 test=> UPDATE test SET val = val || val WHERE id = 1; UPDATE 1 test=> UPDATE test SET val = val || val WHERE id = 1; UPDATE 1 test=> UPDATE test SET val = val || val WHERE id = 1; UPDATE 1 test=> UPDATE test SET val = val || val WHERE id = 1; UPDATE 1 test=> UPDATE test SET val = val || val WHERE id = 1; UPDATE 1 test=> UPDATE test SET val = val || val WHERE id = 1; UPDATE 1 test=> UPDATE test SET val = val || val WHERE id = 1; UPDATE 1 test=> UPDATE test SET val = val || val WHERE id = 1; UPDATE 1 test=> UPDATE test SET val = val || val WHERE id = 1; ERROR: row is too big: size 10272, maximum size 8164 Yours, Laurenz Albe
В списке pgsql-general по дате отправления: