Mysql中文乱码以及创建外键报1215

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dongyuxu342719/article/details/82843015

今天使用Mysql报两个错误,这里记录一下。

1、使用insert语句以及sqlyog插入中文字符显示乱码,核对数据库编码是utf8,

建表语句也设置了引擎和默认字符集:

CREATE TABLE `department` (                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
              `id` VARCHAR(32) NOT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
              `created_date` DATE DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
              `updated_date` DATE DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
              `dept_name` VARCHAR(100) DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
              `dept_code` VARCHAR(300) DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
              `parent_dept_id` VARCHAR(32) DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
              `sort` INT(2) DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
              `del_flag` INT(1) DEFAULT '0',                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
              `creator_id` VARCHAR(32) DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
              `updater_id` VARCHAR(32) DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
              `content` VARCHAR(255) DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
              `enable` INT(1) NOT NULL DEFAULT '1',                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
              `has_child` INT(11) DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
              PRIMARY KEY  (`id`),                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
              KEY `FKfah4pv78w9qc8lmb9pwhg8iel` (`parent_dept_id`)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
            ) ENGINE=INNODB DEFAULT CHARSET=utf8 

始终没找到原因,后来检查建表语句发现字段也要加上字符集类型才行。。如下所示字段设置为CHARACTER SET utf8字符集

CREATE TABLE `department` (                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
              `id` VARCHAR(32) CHARACTER SET utf8 NOT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
              `created_date` DATE DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
              `updated_date` DATE DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
              `dept_name` VARCHAR(100) CHARACTER SET utf8 DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
              `dept_code` VARCHAR(300) CHARACTER SET utf8 DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
              `parent_dept_id` VARCHAR(32) CHARACTER SET utf8 DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
              `sort` INT(2) DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
              `del_flag` INT(1) DEFAULT '0',                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
              `creator_id` VARCHAR(32) CHARACTER SET utf8 DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
              `updater_id` VARCHAR(32) CHARACTER SET utf8 DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
              `content` VARCHAR(255) CHARACTER SET utf8 DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
              `enable` INT(1) NOT NULL DEFAULT '1',                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
              `has_child` INT(11) DEFAULT NULL,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
              PRIMARY KEY  (`id`),                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
              KEY `FKfah4pv78w9qc8lmb9pwhg8iel` (`parent_dept_id`)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
            ) ENGINE=INNODB DEFAULT CHARSET=utf8 

2、表创建外键报1215错误

一张表比如department_in_role,包含两个外键dept_id和role_id分别引用department表的主键id和role表的主键id,在创建外键引用role表和department表时,对role表的外键创建成功但是对department表的外键始终不成功,百思不得其解,没办法只能一个个排除,检查字段类型、长度是否一致,还真发现了问题,同样是看建表语句,其中department的dept_id字段包含COLLATE utf8_bin 设置,但是department表的主键id建表语句中id字段不包含COLLATE utf8_bin。。而role表引用成功的原因就是role表的id字段包含COLLATE utf8_bin。

这里也长了个教训,建表时风格要统一,否则会出现各种意想不到的问题。。

猜你喜欢

转载自blog.csdn.net/dongyuxu342719/article/details/82843015
今日推荐