错误描述:
在数据表中插入数据(含有中文字符),结果提示“(1406, "Data too long for column 'name' at row 1")”??
解决方法:
这个问题是编码造成的问题,
use guest //切换到该数据库
show variables like 'charater_set_database' //查看该数据库编码
原来是安装mysql时没有把字符编码设为utf8和gb2312,而且在建立数据库时直接使用create database guest也没有为其设置编码。
alter database guest character set utf8; //修改数据库guest的编码,修改为utf8
show variables like 'character_set_database'; //再次查看修改后的数据编码
建立数据库时最好指定编码方式为utf8:
create database guest default set utf8 collate utf8_general_ci; //创建数据库guest,指定编码是utf8
use guest //切换到guest数据库
create table sign_event(
id int not null,
name varchar(255) not null,
sex varchar(255) not null,
primary key(id)
); //创建sign_event 表
insert into sign_event values(1,'测试','男'); //插入数据成功,不会提示(1406, "Data too long for column 'name' at row 1")了
另一种方法:
安装完mysql之后,到其安装目录,找到my.ini配置文件,从上往下找,将第一个编码(57行)改为gbk,第二个编码改(81行)为utf-8 。
这种方法需要重启mysqld
重启mysqld:
方法1:计算机--》管理(右键)--》服务与应用程序--》服务--》mysql(右键就可以重启、关闭mysqld)
方法2:dos命令行下,先关闭mysqld:net stop mysql
启动mysqld:net start mysql
Windows下不能直接重启mysql服务,只能先关闭后启动!!
启动mysqld提示如下错误:
mysql在mysql启动时要读取mysql的配置文件my.ini,提示1067是因为无法读取配置文件,该文件缺少mysql服务启动exe文件配置,可能上面修改配置文件的编码方式错了。
重新修改该编码方式如:utf-8改为utf8,保存即可。
在centos中:service mysql stop 关闭mysqld;
service mysql start 启动mysqld;
service mysqld restart 直接重启mysqld
====================================================
django 开发中数据库迁移到mysql后出现编码问题??解决方案:
采用django自带的SQLite3数据没问题,当数据迁移到mysql后插入中文字符数据,出现(1406, "Data too long for column 'name' at row 1")这个问题,这个是由于mysql的编码方式引起的,通过上面内容修改mysql的编码方式为utf8后,
- 删除原来出现问题的数据库,drop database guest
- 重新创建数据库:create database guest
- 查看编码方式:show variables like '%character%'; ======》utf8
- 重新迁移数据库到mysql:> python manage.py migrate
- 重新设置django密码: > python manage.py createsurperuser
- 那就可以insert中文字符了
http://blog.csdn.net/ethan706/article/details/40435309