JAVA写入MySQL数据提示[ERROR 1366 (HY000):错误异常解决方案

JAVA写入MySQL数据提示[ERROR 1366 (HY000):错误异常解决方案


今天搭建一套开发环境测试时,写入MySQL数据库的中文数据就出现异常,MySQL是5.5,java版本是1.6,调试几次写入数据库的都是乱码。

先查看了字符集:

/**查看字符集 **/
--查看MySQL数据库服务器和数据库字符集 
show variables like '%char%';
--查看表的字符集 
show table status from mysql_db like '%tb_name%'
--查看表中所有列的字符集 
show full columns from tb_name;
--查看mysql所支持的字符集 
show charset;



1. 改数据库的编码,无效,最后还导致1366的异常

<pre name="code" class="sql" style="color: rgb(69, 69, 69); line-height: 21px;">/**<span style="color: rgb(51, 51, 51); font-family: Arial; line-height: 26px;">修改字符集</span><span style="font-family: Arial;"> **/</span>
set character_set_connection=utf8;set character_set_database=utf8;set character_set_results=utf8;set character_set_server=utf8;set character_set_system=utf8;set collation_connection=utf8;set collation_database=utf8;set collation_server=utf8; --修改表的字符集 

 
 
ALTER TABLE tb_name CONVERT TO CHARACTER SET utf8;

2. 修改MySQL启动文件my.ini,设置编码,重启数据库,无效

<span style="font-size:18px;">[mysql]
default-character-set=utf8
# ... ... 省略
[mysqld]
character-set-server=utf8</span>


3. 重装本机数据库,无效


郁闷了半天,想起了对比法,将测试环境的数据库、表、字段信息与自己电脑中的进行对比,通过查看所有表中列的字符集发现Collation项,测试库所有varchar字段都是utf8_general_ci,而本地机器上的,都是空。修改字段字符集后,搞定!

另外我还做了测试,如果改一次以后,再将字段字符集改为gbk后,还是不会出现乱码,不知道是不是mysql5.5的bug。

<span style="font-size:18px;">--修改字段字符集 </span>
<span style="font-size:18px;">alter table tb_name modify column tb_column varchar(30) character set utf8 not null;</span>





你可能感兴趣的:(mysql,异常,乱码,解决方案,1366)