mysql出现ERROR 1366 (HY000):的解决办法

本文介绍了解决在向MySQL数据库插入数据时遇到的1366错误的方法。错误原因是数据库字段的字符集与插入数据的字符集不匹配。通过调整数据库字段的字符集为utf8并重新插入数据,问题得以解决。

今天向新建的表中添加内容,出现以下错误:

mysql> INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('R510VC 15.6英寸笔记本','笔记本','华硕','3399',DEFAULT,DEFAULT);
ERROR 1366 (HY000): Incorrect string value: '\xE8\x8B\xB1\xE5\xAF\xB8...' for column 'goods_name' at row 1

在网上找到了解决方法,亲测有效。

出错原因:检查数据库此字段的字符集与整理字符集是否与SQL语句传递数据的字符集相同;不相同则会引发MySQL1366错误。

解决方法:

#1.检查数据表所有字段的状态

mysql> SHOW FULL COLUMNS FROM tdb_goods;

#2.发现collatioin项非utf8,需要进行修改,使用如下的语句 mysql> alter table tdb_goods change goods_name name varchar(100) character set utf8 collate utf8_unicode_ci not null default ''; mysql> alter table tdb_goods change goods_cate cate varchar(40) character set utf8 collate utf8_unicode_ci not null default ''; mysql> alter table tdb_goods change brand_name bname varchar(40) character set utf8 collate utf8_unicode_ci not null default '';

 #3.检查数据表所有字段的状态

mysql> SHOW FULL COLUMNS FROM tdb_goods;


将想要插入的内容插入以后,得到想要的表:

 

 

 

在麒麟 V10 系统下登录 MySQL 时,如果提示 `ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'`,这通常表示客户端尝试通过指定的 Unix 套接字文件连接到本地 MySQL 服务器失败。可能的原因包括 MySQL 服务未运行、套接字路径配置不一致或套接字文件缺失等。 以下是解决该问题的步骤和方法: ### 检查 MySQL 服务是否正在运行 首先确认 MySQL 服务是否已经启动。可以使用以下命令检查服务状态: ```bash systemctl status mysqld ``` 如果服务未运行,可以尝试启动它: ```bash systemctl start mysqld ``` 如果服务无法正常启动,需查看错误日志以确定原因,通常位于 `/var/log/mysqld.log` 中。 ### 验证套接字路径一致性 确保客户端和服务器端配置中使用的 `socket` 路径一致。编辑 MySQL 的主配置文件(通常是 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`),检查 `[mysqld]` 和 `[client]` 部分的 `socket` 设置: ```ini [mysqld] datadir=/usr/local/mysql/data basedir=/usr/local/mysql socket=/var/lib/mysql/mysql.sock [client] socket=/var/lib/mysql/mysql.sock ``` 如果实际运行环境中使用的是 `/tmp/mysql.sock`,则需要调整上述配置为: ```ini socket=/tmp/mysql.sock ``` 保存更改后重启 MySQL 服务: ```bash systemctl restart mysqld ``` ### 创建客户端配置文件避免本地连接报错 如果用户仅希望避免本地连接时报错,可以在用户的家目录下创建 `.my.cnf` 文件,并指定正确的 `socket` 路径: ```bash vi ~/.my.cnf ``` 添加如下内容: ```ini [client] socket=/var/lib/mysql/mysql.sock ``` 保存并退出编辑器,这样本地客户端将使用指定的套接字进行连接。 ### 检查是否存在套接字文件 执行以下命令检查 `/tmp/mysql.sock` 是否存在: ```bash ls -l /tmp/mysql.sock ``` 如果文件不存在,可能是由于 MySQL 服务没有正确创建该文件,或者服务根本未启动。此时应先解决服务启动问题。 ### 使用 TCP/IP 连接作为替代方案 如果不想依赖 Unix 套接字,可以通过 TCP/IP 协议连接 MySQL。在客户端连接时显式指定主机名 `127.0.0.1` 而不是 `localhost`: ```bash mysql -u root -p -h 127.0.0.1 ``` 这种方式会强制使用网络连接而不是 Unix 套接字。 ### 总结 - 确保 MySQL 服务已启动。 - 核对 `socket` 路径在 `[mysqld]` 和 `[client]` 配置段中的一致性。 - 创建用户级配置文件 `.my.cnf` 来指定正确的 `socket`。 - 检查套接字文件是否存在,若不存在则排查服务启动问题。 - 可选地,使用 TCP/IP 方式连接 MySQL。 完成以上步骤后,应能解决麒麟 V10 系统下登录 MySQL 提示 `ERROR 2002 (HY000)` 的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值