SQL语句执行时中文报错

SQL语句中有中文就报错,用navicat也是一样,请大家帮帮我,还有就是我已经下了mysql5版本,现在要用8版本,我该怎么办,希望大家能远程帮我一下

img

img

在MySQL 5中,CHAR类型的字段不能设置默认值为字符串。

你可以用vachar来代替char字符。

CREATE TABLE tb_user (
    id INT PRIMARY KEY COMMENT 'ID 唯一标识',
    username VARCHAR ( 20 ) NOT NULL UNIQUE COMMENT '用户名',
    NAME VARCHAR ( 10 ) NOT NULL COMMENT '姓名',
    age INT,
    gender VARCHAR ( 2 ) DEFAULT '男' 
) COMMENT '用户表'

中文是两个字符长度

问题1分析:
1、建议用01或者英文代表男女,不要用中文,这样不专业
2、设置字符长度为char1),则数据库会使用固定的1个字节来存储数据,而字符“男”占两个字节,char类型的长度是固定的,而varchar的长度是可变的,可以使用其代替char3Char(n)是长度为n个字节的定长的非unicode的字符数据。N为一个介于18000之间的值。
4、其存储大小为输入数据的实际字节长度,而不是n个字节。如果你输入的实际字节长度少于n,那么其他位置会被空格填充。在数据存储中英文字母和数字占一个字节,汉字占两个字节。
5、那么char(n)最多可以存储n个英文字母或数字,或者n/2个汉字。


6、最后如果还不行,就看看数据库默认字符集,创建表时,也指定表字符集
问题二分析:
1、要使用mysql8的话,可以从mysql5进行版本升级
2、如果新建的项目的话,可以考虑下卸载重装mysql

根据您提供的 SQL 语句,存在以下问题:

默认值错误:在创建表 tb_user 中,gender 字段的默认值为无效值。您可以将 DEFAULT 关键字与有效的默认值一起使用,例如 'M'NULL。下面是修正后的 SQL 语句示例:
Copy Code
CREATE TABLE tb_user (
    id INT PRIMARY KEY COMMENT 'ID编号',
    username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',
    name VARCHAR(10) NOT NULL COMMENT '姓名',
    age INT,
    gender CHAR(1) DEFAULT NULL
) COMMENT '用户表';
中文字符问题:确保您在数据库连接、工具或客户端中正确设置了字符编码,以支持中文字符。常见的字符编码是 UTF-8,应在连接和操作数据库时进行设置。
关于从 MySQL 5 版本升级到 8 版本的问题,涉及到版本升级和数据迁移等复杂操作,建议您查阅官方文档或寻求专业的数据库管理员(DBA)的帮助,以确保顺利完成升级过程,并避免数据丢失。升级过程需要谨慎处理,因为不同版本之间可能存在差异和兼容性问题。

可以远程看下,这样更方便解决问题

两种解决方式,第一种把男和女换成0和1;第二种修改varchar(2)就可以。引起的问题的原因是数据内容的长度的设置问题。

建表语句有问题,gender定义的长度只有1,但是中文的长度在数据库中是占用了两个长度,复杂的中文甚至三个,建议修改为如下:


CREATE TABLE tb_user (
    id INT PRIMARY KEY COMMENT 'ID 唯一标识',
    username VARCHAR ( 20 ) NOT NULL UNIQUE COMMENT '用户名',
    NAME VARCHAR ( 10 ) NOT NULL COMMENT '姓名',
    age INT,
    gender VARCHAR ( 2 ) DEFAULT '男' 
) COMMENT '用户表'

换个版本就行,把5卸载干净,不知道的话找我吧

这行“男””女“改一下,一个汉子是两个字节

    gender VARCHAR ( 2 ) DEFAULT '男'

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

mysql的数据类型与字符串的类型长度不够,英文一个字节,中文两-三个字节(根据数据库版本与编码情况),char(1)代表的是一个字节,如果要使用中文储存,建议确定好字符串的长度

mysql8版本和5版本都已测试,没问题呀

CREATE TABLE tb_user (
  id INT PRIMARY KEY COMMENT 'ID 唯一标识',
  username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',
  name VARCHAR(10) NOT NULL COMMENT '姓名',
  age INT,
  gender CHAR(1) DEFAULT '男' 
) COMMENT '用户表';

img

中文的长度和数字的长度不一样,要么把长度改大点,要么换成数字,类似于枚举、字典值

中文怎么可能报错,我看你是sql写错了

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^