环境:
A机:MYQL5.0.83,默认配置;
B机:MYQL5.0.83,配置:“服务器”,“最佳字符集支持”;创表脚本如下:use test;
DROP TABLE IF EXISTS tb1;
CREATE TABLE tb1( 
FID bigint NOT NULL AUTO_INCREMENT, 
DailyDate datetime NOT NULL, 
MAXT numeric(18, 1) NULL, 
MINT numeric(18, 1) NULL, 
DayR numeric(18, 1) NULL, 
DayS numeric(18, 1) NULL, 
DailyC1 VARCHAR(8192) NULL, 
DailyC2 VARCHAR(8192) NULL, 
DailyC3 VARCHAR(8192) NULL, 
InDateTime datetime NOT NULL,
Opid int NOT NULL,
UpdateDateTime datetime NOT NULL,
Upid int NOT NULL,
AutoFlag int NULL DEFAULT 1,
PRIMARY KEY(FID,DailyDate) );
 在我自己的开发环境下(A机),运行没有任何错误提示!但该脚本放一台测试机(B机)上执行时,就出错了,
提示如下:
“SQL ERROR(1118):ROW SIZE TOO LARGE.THE maximum row size for the used table type not counting blobs .in 65535. You have to change some columns to TEXT or Blobs”按提示的说明是,我的理解是字段类型总长度超界了,把VARCHAR(8192)修改成VARCHAR(4096)就通过了,
这是怎么回事?MYSQL配置影响的?

解决方案 »

  1.   

    检查你的字符集设置。 不同字符集下VARCHAR(100)所需要字节是不同的。
      

  2.   

    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
    varchar加起来的字节不能超过65535
      

  3.   


    恩,我是这样理解的。另外我发现,之前创建存储过程把含中文的字串作为OUT输出老不成功,干脆直接写到会话变量@a中,在
    select @a,就OK了。