On Wed, 19 Dec 2007 11:27:32 +0100, slambert
<slambertNOSPAMPLEASE@vediovis.net> wrote:
> Hi
>
> Some sql queries are refused in our production server, for example :
>
> update institution SET Gal_Nom = REPLACE(Gal_Nom ,'É','É')
>
> Server version :Server version: 5.0.24-Max-log
>
> the colunm is a varchar(250), the table use INNODB
>
> error message:
>
> #1030 - Got error 139 from storage engine
>
> Please somebody can help? The engine refuses 45 queries at this stage...
Google whispered to me ('mysql error 1030 39'):
http://bugs.mysql.com/bug.php?id=3442 (<= het is geen bug overigens..)
Quote:
error 139 means "too big row"
InnoDB manual specifies that max. row length is slightly more than 8000
bytes.
Though blobs are excluded, still first 512 bytes of each blob are not.
|
Or another usefull link:
http://dev.mysql.com/doc/mysql/en/in...trictions.html Quote:
The maximum row length, except for VARBINARY, VARCHAR, BLOB and TEXT
columns, is slightly less than half of a database page. That is, the
maximum row length is about 8000 bytes. LONGBLOB and LONGTEXT columns must
be less than 4GB, and the total row length, including also BLOB and TEXT
columns, must be less than 4GB. InnoDB stores the first 768 bytes of a
VARBINARY, VARCHAR, BLOB, or TEXT column in the row, and the rest into
separate pages.
Although InnoDB supports row sizes larger than 65535 internally, you
cannot define a row containing VARBINARY or VARCHAR columns with a
combined size larger than 65535:
mysql> CREATE TABLE t (a VARCHAR(8000), b VARCHAR(10000),
-> c VARCHAR(10000), d VARCHAR(10000), e VARCHAR(10000),
-> f VARCHAR(10000), g VARCHAR(10000)) ENGINE=InnoDB;
ERROR 1118 (42000): Row size too large. The maximum row size for the
used table type, not counting BLOBs, is 65535. You have to change some
columns to TEXT or BLOBs
|
... so the rowlength seems to get to big.
Then again, I can't think of a logical reason why you'd want to change the
real data into a representational format.
--
Rik Wasmus