Mysql常见错误
错误提示
创建表
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for sys_user
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`user_name` varchar(255) NOT NULL,
`id` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `user_name` (`user_name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of sys_user
-- ----------------------------
INSERT INTO `sys_user` VALUES ('slave01', '101');
###### 修改name字段的大小
Column length too big for column ’user_name‘.......
解决方法
第一种方法:
删除索引,修改大小。显然索引没有啦这个方法不可以采用。
第二种方法: row_format=DYNAMIC
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`user_name` varchar(255) NOT NULL,
`id` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `user_name` (`user_name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 row_format=DYNAMIC ;
作用:
MySQL 索引只支持767个字节,utf8mb4 每个字符占用4个字节,所以索引最大长度只能为191个字符,即varchar(191),若想要使用更大的字段,mysql需要设置成支持数据压缩,并且修改表属性 row_format ={DYNAMIC|COMPRESSED}