以上就是给各位分享MySQL数据库插入中文时出现Incorrectstringvalue:''\xE6\x97\xB7\xE5\x85\xA8''forcolumn''sz_name...,同时本文还
以上就是给各位分享MySQL 数据库插入中文时出现 Incorrect string value: ''\xE6\x97\xB7\xE5\x85\xA8'' for column''sz_name...,同时本文还将给你拓展(1366, "Incorrect string value: ''\\xE5\\x93\\x88\\xE5\\x93\\x88'' for column ''body'' at row 1")、(1366, "Incorrect string value: ''\\xE6\\xB7\\xB1\\xE5\\x85\\xA5...'' for column ''、Caused by: java.sql.SQLException: Incorrect string value: ''\xF0\x9F\x91\x91\xE5\xB0...'' for column、django 保存中文到mysql 报错django.db.utils.DatabaseError: Incorrect string value: ''\xE5\xBE\x88\xE7\...等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:- MySQL 数据库插入中文时出现 Incorrect string value: ''\xE6\x97\xB7\xE5\x85\xA8'' for column''sz_name...
- (1366, "Incorrect string value: ''\\xE5\\x93\\x88\\xE5\\x93\\x88'' for column ''body'' at row 1")
- (1366, "Incorrect string value: ''\\xE6\\xB7\\xB1\\xE5\\x85\\xA5...'' for column ''
- Caused by: java.sql.SQLException: Incorrect string value: ''\xF0\x9F\x91\x91\xE5\xB0...'' for column
- django 保存中文到mysql 报错django.db.utils.DatabaseError: Incorrect string value: ''\xE5\xBE\x88\xE7\...
MySQL 数据库插入中文时出现 Incorrect string value: ''\xE6\x97\xB7\xE5\x85\xA8'' for column''sz_name...
今天在开发时候出现了这个问题
Incorrect string value: ''\xE6\x97\xB7\xE5\x85\xA8'' for column ''sz_name'' at row 1
场景,往 MySQL 数据库的表中插入中文参数,抛出了这个异常
我用 sqlyog 执行该段代码时候发现只是出现警告,并没有出现 error,但是在代码里面执行抛出了异常,说明管理工具 sqlyog 对有些约定不是那么严格,而代码中就会报错。提醒自己,以后写 sql 时候不能忽略管理工具中出现的警告。
解决方案:
在用 sql 语句建表的时候加入 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 即可
下面是我的建表语句:
CREATE TABLE `stat_day_exception_201807` (
`ng_id` bigint(20) NOT NULL AUTO_INCREMENT,
`ng_report_id` bigint(20) DEFAULT NULL,
`nt_type` int(11) NOT NULL,
`sz_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`sz_reason` text COLLATE utf8_unicode_ci,
`bt_charge` int(11) DEFAULT ''0'',
`ts_begin` datetime DEFAULT NULL,
`ts_end` datetime DEFAULT NULL,
`bt_attendance` int(11) DEFAULT ''0'',
`nt_count` decimal(10,4) NOT NULL DEFAULT ''0.0000'',
`nt_minutes` int(11) DEFAULT ''0'',
`sz_code` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`ng_user_id` bigint(20) DEFAULT NULL,
`dt_date` datetime DEFAULT NULL,
PRIMARY KEY (`ng_id`),
KEY `I_stat_day_exception_sys_user` (`ng_user_id`),
KEY `I_stat_day_exception_day` (`dt_date`)
) ENGINE=InnoDB AUTO_INCREMENT=1701 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
(1366, "Incorrect string value: ''\\xE5\\x93\\x88\\xE5\\x93\\x88'' for column ''body'' at row 1")
产生原因:mysql插入数据中有中文
解决方案:
https://stackoverflow.com/questions/1168036/how-to-fix-incorrect-string-value-errors
ALTER TABLE logtest CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
(1366, "Incorrect string value: ''\\xE6\\xB7\\xB1\\xE5\\x85\\xA5...'' for column ''
Sql代码 收藏代码 mysql> use varchar_vs_char;
Database changed
mysql> desc user;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | 0 | |
| username | varchar(10) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
可以插入的数据:
Sql代码 收藏代码 mysql> use varchar_vs_char;
Database changed
mysql> select * from user;
+----+----------------------+
| id | username |
+----+----------------------+
| 1 | adminadmin |
| 2 | 我是中国人我是中国人 |
+----+----------------------+
2 rows in set (0.01 sec)
也就是说对于unicode来说一个英文字符和一个中文字符是一样大小的,而且varchar(10)中的10就是表示10个unicode码!
因为是处理中文的,所以把D:\Program Files\MySQL\MySQL Server 5.1\my.ini编码设置成如下gbk:
Sql代码 收藏代码 [client]
port=3306
[mysql]
default-character-set=gbk
SERVER SECTION
----------------------------------------------------------------------
The following options will be read by the MySQL Server. Make sure that
you have installed the server correctly (see above) so it reads this
file.
[mysqld]
The TCP/IP Port the MySQL Server will listen on
port=3306
#Path to installation directory. All paths are usually resolved relative to this.
basedir="D:/Program Files/MySQL/MySQL Server 5.1/"
#Path to the database root
datadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.1/Data/"
The default character set that will be used when a new schema or table is
created and no character set is defined
default-character-set=gbk
The default storage engine that will be used when create new tables when
default-storage-engine=INNODB
附注:
更新的数据中有中文,出现如下错误: OperationalError at /admin/blog/post/add/
(1366, "Incorrect string value: ''\xE6\xB7\xB1\xE5\x85\xA5...'' for column ''title'' at row 1")
Request Method: POST Request URL: http://localhost:8000/admin/blog/post/add/ Exception Type: OperationalError Exception Value:
(1366, "Incorrect string value: ''\xE6\xB7\xB1\xE5\x85\xA5...'' for column ''title'' at row 1")
Exception Location: C:\Python25\Lib\site-packages\MySQLdb\connections.py in defaulterrorhandler, line 35
类似这样的错误,应该是数据库表的charset和collation问题。尝试把所有表的charset改为utf-8, collation改为utf8-unicode-ci。如果还是不能解决,最好是重建数据库,然后修改数据库的属性,选择charset为utf-8,collation为utf8-unicode-ci。命令行:create database cc default charset utf8 collate utf8_unicode_ci; PS:我就是要重建数据库才解决。
Caused by: java.sql.SQLException: Incorrect string value: ''\xF0\x9F\x91\x91\xE5\xB0...'' for column
Caused by: java.sql.SQLException: Incorrect string value: ''\xF0\x9F\x91\x91\xE5\xB0...'' for column NICK_NAME
发现日志里有挺多这种错误,是什么原因造成的,是写入名称的时候会报这个错,而且''\xF0\x9F\x91\x91\xE5\xB0...''这个错误都是一样
django 保存中文到mysql 报错django.db.utils.DatabaseError: Incorrect string value: ''\xE5\xBE\x88\xE7\...
分析:
1.尝试在Python中对数据转码成utf8,''中文''.encode("utf-8"),还是报错
2.观察堆栈发现应该是操作mysql数据库的时候,将数据插入表里出错
所以第一种方式排除;集中从第二种原因找突破:
在mysql中查看字符相关的变量:
发现character_set_database 编码是latin1不是utf8,问题应该就在这里。
那我们现在就要把这个字符改过来。
这里注意:你们其他变量名的值也不是utf8,这里是你们my.ini配置文件里没有设置,mysql就用的是默认值
[client]
default-character-set =utf8
[mysql]
default-character-set =utf8
[mysqld]
collation-server = utf8_unicode_ci
init_connect =''SET NAMES utf8''
character_set_server=utf8
其中:
init_connect =''SET NAMES utf8'' 相当于把charact_set_client ,character_set_server,character_set_connection都设置成utf8了,我怕到时又出啥问题就没去掉了。
我也尝试了在[mysqld]下
添加:character_set_database =utf8 可是启动mysql服务的时候报错。查找资料跟mysql的版本有问题,我mysql的版本是5.6.*
那就只有通过mysql的命令去修改编码了:
set character_set_database=utf8;
在查看的时候编码就修改了
再次测试代码后发现还是有问题。
然后查看了下django连接的数据库,以及生成的表的编码发现编码不是utf8,所以这里还要修改数据库,表的编码
修改后查看编码都已经是utf8了应该不会有错了。果然测试可以了。
下面附上mysql的一些相关命令:
我们今天的关于MySQL 数据库插入中文时出现 Incorrect string value: ''\xE6\x97\xB7\xE5\x85\xA8'' for column''sz_name...的分享已经告一段落,感谢您的关注,如果您想了解更多关于(1366, "Incorrect string value: ''\\xE5\\x93\\x88\\xE5\\x93\\x88'' for column ''body'' at row 1")、(1366, "Incorrect string value: ''\\xE6\\xB7\\xB1\\xE5\\x85\\xA5...'' for column ''、Caused by: java.sql.SQLException: Incorrect string value: ''\xF0\x9F\x91\x91\xE5\xB0...'' for column、django 保存中文到mysql 报错django.db.utils.DatabaseError: Incorrect string value: ''\xE5\xBE\x88\xE7\...的相关信息,请在本站查询。
本文标签: