在windows的DOS窗口下运行mysql命令,insert语句中只要含有汉字数据就出现“data too long for column”错误 。 ...
Console下调用程序发出的指令是通过一种编码格式编码之后发送出去的字符串,接收程序返回的信息同样也使用编码过的字符流。
例如我们要调用:
rename 1.txt 测试.txt
dos下把这行命令用某种编码方式编码成字符串,如果renmae命令接收到这个命令字符串,但错误的理解了这个命令参数的编码,或者console发送这个命令时使用了utf8编码,而renmae认为是gbk编码,则该命令会把文件重命名成乱码的名字。(因为中文windows下编码默认都是gbk,所以我们从来没遇到过这样的乱码问题。在dos窗口左上角右键-->属性,当前代码页: 936 (ANSI/OEM - 简体中文 GBK )验证DOS窗口是GBK编码发送字符)
但是,进入mysql命令之后,mysql命令可并不一定知道你发送的指令是GBK编码的,它可能认为你发送的指令是utf8编码,或者跟数据库编码一致的编码,或者跟某个全局变量一致的编码的指令字符串( mysql默认用什么编码接收指令,我没有研究清楚,请看官补充 )。所以这时候为了避免mysql误解你的指令编码,需要在调用mysql的时候加上--default-character-set=gbk 的参数。即 使用 mysql -uroot -p --default-character-set=gbk 登录即可。 注意,不要因为你的数据库是utf8编码就使用mysql -uroot -p --default-character-set=utf8去登录。我们这里说的是dos中发出的指令字符串的编码,dos窗口是不会用utf8编码去发送指令的。
当然,假设某个console发出的指令是通过utf8字符编码的,是不是应该用
mysql -uroot -p --default-character-set=utf8 ?没有试过,但分析应如此。
为什么用MYSQL-Front/SQLyog这样的GUI程序执行同样的sql就没有问题呢?在mysql-front/SQLyog登录时,就可以指定连接字符集,我猜想,登录进去之后在SQL编辑框中发送的SQL指令也许就是通过这个字符集编码的,如果跟数据库一致的话,当然没有问题了。
- MySQL插入中文时出现ERROR 1406 (22001): Data too long for column 'name' at row 1
- mysql 数据库 错误 Data truncation: Data too long for column 'name' at row 1
- MYSQL---Data too long for column 'sex' at row 1”错误处理办法
- jdbc 连mysql 时报 Data too long for column 'name' at row 1 错误
- MYSQL中出现data too long for column的解决方案
- MYSQL写入中文错误 —— Data too long for column 'xxx' at row 1
- PHP执行insert语句报错“Data too long for column”解决办法
- mysql 当插入中文字段时发生“data too long for column”错误
- 在程序中写了一段代码向数据库中插入数据,出现了data too long for column 'name' at row 1的问题。
- mysql 当插入中文字段时发生“data too long for column”错误
- sql点滴37—mysql中的错误Data too long for column '' at row 1
- (汉字问题1)mysql中data too long for column问题的解决方法
- mysql中存中文时出现“Data too long for column”
- 读取MYSQL中文数据乱码,解决data too long for column 'title' at row 1
- mysql错误:data too long for column
- MySql中插入中文数据提示Data too long for column X at row n的解决
- ssh框架中的错误:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'user_name'
- phpMyAdmin执行成功,但是mysql命令source导入失败: Data too long for column
- sql点滴37—mysql中的错误Data too long for column '' at row 1
- jdbc 连mysql 时报 Data too long for column 'name' at row 1 错误