MySQL的行长度是我预期的两倍多

时间:2011-06-10 21:22:29

标签: mysql myisam

在MySQL中以这种格式表:

CREATE TABLE IF NOT EXISTS `test` (
  `field1` char(32) NOT NULL,
  `field2` smallint(5) unsigned NOT NULL,
  `field3` smallint(5) unsigned NOT NULL,
  `field4` datetime NOT NULL,
  `field5` enum('opt1','opt2','opt3','opt4','opt5') NOT NULL,
  `field6` enum('opt1','opt2','opt3','opt4','opt5','opt6') NOT NULL,
  PRIMARY KEY (`field1`),
  KEY `field5` (`field5`),
  KEY `field2` (`field2`),
  KEY `field4` (`field4`),
  KEY `field6` (`field6`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

我希望行长度为46。

  • 32 for char(32)
  • 2 for smallint(5)
  • 2 for smallint(5)
  • 8 for datetime
  • 1 for enum
  • 1 for enum

但每次尝试时行长度为111。我找不到任何解释为什么会这样。我做错了吗?

3 个答案:

答案 0 :(得分:2)

char(32)的UTF8字段每个字符最多使用3个字节。

答案 1 :(得分:1)

utf8 char的大小在mysql中是3或4个字节

答案 2 :(得分:0)

你没有做错事。这是正常的。