1366 Incorrect string value: ‘\xE6\x9C\xB1\xE8\x8C\xB5‘ for column ‘NAME‘ at row 1

1366 Incorrect string value: '\xE6\x9C\xB1\xE8\x8C\xB5' for column 'NAME' at row 1
一、向表中添加数据时报错
1.查看表结构
SHOW CREATE TABLE beauty;
CREATE TABLE `beauty` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `NAME` VARCHAR(15) NOT NULL,
  `phone` VARCHAR(15) DEFAULT NULL,
  `birth` DATE DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `phone` (`phone`)
) ENGINE=INNODB DEFAULT CHARSET=latin1
2.修改表字符编码
ALTER TABLE beauty DEFAULT CHARACTER SET 'utf8';
3.执行,失败——查看表结构
CREATE TABLE `beauty` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `NAME` VARCHAR(15) CHARACTER SET latin1 NOT NULL,
  `phone` VARCHAR(15) CHARACTER SET latin1 DEFAULT NULL,
  `birth` DATE DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `phone` (`phone`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
4.修改列字符编码
ALTER TABLE beauty CHANGE NAME NAME VARCHAR(15) CHARACTER SET 'utf8';
ALTER TABLE beauty CHANGE phone phone VARCHAR(15) CHARACTER SET 'utf8';
5.执行——成功
(没截图)
二、调用存储过程时报错
CALL get_phone(1,@name,@phone);
SELECT @name,@phone;
1.修改my.ini文件配置把默认字符集设置为utf8——没用
 
2.涉及【mysql配置文件设置了utf8但无效】关闭服务-重新安装mysql-暂且不述——没用
3.直接修改server和database的字符集
SET character_set_server = 'utf8';
SET character_set_database = 'utf8';
其中修改database字符集时有警告
Warning Code : 1681
Updating 'character_set_database' is deprecated. It will be made read-only in a future release.
警告代码 : 1681
更新'character_set_database'已被废弃。在未来的版本中,它将成为只读的。
查看字符集
SHOW VARIABLES LIKE '%char%';
修改成功——但没用
4.最后解决方法——在创建存储过程时OUT后面添加字符集设置
DELIMITER //
CREATE PROCEDURE get_phone(IN id INT,OUT NAME VARCHAR(15),OUT phone VARCHAR(15) CHARACTER SET utf8)
BEGIN
    SELECT b.name,b.phone INTO NAME,phone
    FROM beauty b
    WHERE b.id = id ;
END //
DELIMITER;
成功:↓
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值