【8003】如何解决mysql中创建表格遇到 Invalid default value for ‘sex‘字段问题?

问题背景:【8003】如何解决mysql中创建表格遇到 Invalid default value for ‘sex‘?


当我在创建表(含有sex char(2) default ‘男’ )时,控制台报错:Invalid default value for ‘sex‘:直接上图:
注意:其实只要语句中含有中文都会出现报错的哦!这是后来我多次运行了解的,被迫走了方法2的路。


在这里插入图片描述

问题解决方案:(原理在后面)


方法1.
取巧直接在创建表格 )后面加上:ENGINE=InnoDB DEFAULT CHARSET=utf8,每创建一次就写一个转码语句 即可:如图:验证成功,但是很麻烦嘞,并且治标不治本,每次创建表格如果含有中文汉字就必须加上那句命令,否则报错。


在这里插入图片描述

方法2(三步骤):

  1. 修改数据库的默认编码(问题本质出错所在–数据库默认编码问题),首先要找到my.ini的配置文件;

在这里插入图片描述


  1. 编辑该文件,并修改这两个值为: utf8mb4(5.1.13版本后支持),并且进行保存,当然你也可以选择改为utf8,我帮别人修改的是utf8也成功了,我是出于以后在java中utf8mb4有更好的兼容性才设置的:如图:

default-character-set=utf8mb4或者default-character-set=utf8
character-set-server=utf8mb4或者character-set-server=utf8


在这里插入图片描述


  1. (推荐)关闭mysql服务,再进行重启(个人比较喜欢从任务管理器直接重新启动,但是身为程序员还要正规点,嘿嘿)。

方法1:启动任务管理器–>点击服务–>找到mysql(我的叫mysql57)右击有个重新启动。点击完成。
(在命令行窗口直接输入services.msc 可直接打开服务 )。


在这里插入图片描述

另一种关闭方式:注意:我的mysql的名字叫mysql57,你数据库名可能叫mysql,底下代码要改一下,我的mysqlpath配置是在系统变量里,用户是没有权利访问的,要以管理员的身份运行,右击命令行即可。


1.先输入关闭mysql服务:
net stop mysql57或者net stop mysql
2.在输入再进行重启mysql:
net start mysql57或者net start mysql


在这里插入图片描述

最后再次运行代码就可以识别字段咯!嘿嘿!当然,你如果还是没成功,去看分析,应该是需要深层处理你的数据库启动问题!!!


在这里插入图片描述


原因分析:


1.大概你也猜到了是编码格式不匹配的原因,数据库的编码不对,数据库默认编码是latin1,我们需要设置为utf8或者utf8mb4;
2.这个是当我们在安装数据库就需要设置的东西,如果你安装数据库配置my.ni看的那篇博主关于配置my.ni没有在意编码问题的话,只是为了让你能运行数据库,就可能出现的错误,这也是有些人成功,有些人却失败的原因,这时候就需要删掉data重新生成data,启动服务咯!
3.这里其实就是另一个问题了,数据库编码其实你已经设置完毕,没有成功的原因是你需要运用现在设置后的配置文件,才需要删掉以前的哦;
4.有一部分人修改my.ni没猜错的话你去命令行连密码都登录错误,会出现Access denied for user ‘root’@‘localhost’(using password:YES)的报错,嘿嘿!这篇写的够长了,如何有效运行解决这个问题直接上网址:
https://blog.csdn.net/Caojian_0/article/details/126185025
5.有问题可以直接问,会及时回复,不出意外问题到这里都能得到解决,加油!


  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值