Windows下使用记事本编辑MySQL db.sql报中文错误

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

即便已经设置了utf-8字符集

DROP DATABASE IF EXISTS `db_lab2`;
CREATE DATABASE `db_lab2` DEFAULT CHARACTER SET utf8;
USE `db_lab2`;

CREATE TABLE `tb_student`(
	`pk_sno` INT(10) UNSIGNED AUTO_INCREMENT COMMENT '学号',
	`sname` VARCHAR(20) NOT NULL COMMENT '姓名',
	`ssex` VARCHAR(4) COMMENT '性别',
	`sage` SMALLINT UNSIGNED COMMENT '年龄',
	`sdept` VARCHAR(10) NOT NULL COMMENT '系别',
	PRIMARY KEY (`pk_sno`),
	CONSTRAINT chk_sex CHECK (`ssex` = '男' OR `ssex` = '女')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tb_course`(
	`pk_cno` SMALLINT UNSIGNED AUTO_INCREMENT COMMENT '课程号',
	`cname` VARCHAR(20) UNIQUE COMMENT '课程名',
	`cpno` SMALLINT UNSIGNED COMMENT '先行课',
	PRIMARY KEY (`pk_cno`)
)  ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tb_sc`(
	`pk_sno` INT(10) UNSIGNED AUTO_INCREMENT COMMENT '学号',
	`cno` SMALLINT UNSIGNED COMMENT '课程号',
	`grade` SMALLINT UNSIGNED COMMENT '成绩',
	PRIMARY KEY (`pk_sno`),
	FOREIGN KEY (`pk_sno`) REFERENCES `tb_student`(`pk_sno`),
	FOREIGN KEY (`cno`) REFERENCES `tb_course`(`pk_cno`)
)  ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `tb_student` VALUES(1, "小米", "男", 20, "计算机系");

而且MySQL的默认编码也是utf-8 (可以如下命令查看字符集)

SHOW VARIABLES LIKE '%char%';

在这里插入图片描述
即便所有都设置好了,但是source lab2.sql (上面的sql代码),依旧显示下面这句中文错误。

INSERT INTO `tb_student` VALUES(1, "小米", "男", 20, "计算机系");

但是复制这句到mysql>下运行是不会报错的
这也说明了字符集没有错,是记事本的错
把这些代码换个编辑器也不会报错,比如Visual Code

附:关于Windows记事本编码的那些事

猜你喜欢

转载自blog.csdn.net/chenbetter1996/article/details/83271238