解决向表中添加中文数据报错的问题

可能有人在往表中添加数据时会遇到这类报错

django.db.utils.InternalError: (1366, "Incorrect string value: ‘\\xE9\\x9A\\..................

以下是亲测比较有效的解决方案

mysql版本:5.6

网传向DATABASES中添加

实际上效果并不明显,当然我也在此之后删表重建过了。

然后就只能另辟蹊径了

在这里看出character_set_database默认编码方式是拉丁文而不是utf8

所以接下来需要配置my.ini配置文件,这个配置文件默认路径应该是在c盘下的ProgramData文件夹下

当然接下来的方法我是引用了一个大神的思路

查看设置:show global variables like ‘character_set_server‘; 和 show global variables like ‘collation_server‘;

修改设置:  [mysqld]

character_set_server=utf8

collation_server=utf8_general_ci

(后来我发现配置文件里的内容可加可不加,当然加了好像也没什么影响,只要是适合自己电脑的方法就是好方法)

我这边陆续操作下来发现基本上都是服务器配置

后面的操作应该基本上不要修改

接下来我就直接保存了

然后我是在命令行界面进入指定的数据库里更改该表的字符编码

----------------------------------------------------------------------------------------------------------------------------------------------------

以下是一些引用的参考资料,供日后借鉴学习

a)查看数据库的编码:show create database databaseName;
 b)修改数据库编码: alter database databaseName default character set utf8 collate utf8_general_ci;
 a)查看建表的编码:show create table tableName;

下面附上mysql的一些相关命令:

通过MySQL命令行修改:
  set character_set_client=utf8;
  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 DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];
     如:
     ALTER TABLE test CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
     修改表的默认字符集:
     ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...];
     如:ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
     修改字段的字符集:
     ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE ...];
     如:ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;

原文链接:https://blog.csdn.net/oopsangle/article/details/24873419

原文地址:https://www.cnblogs.com/cxydnxs/p/12551416.html

时间: 2025-01-12 18:29:01

解决向表中添加中文数据报错的问题的相关文章

向SQL Server 现有表中添加新列并添加描述.

注: sql server 2005 及以上支持. 版本估计是不支持(工作环境2005,2008). 工作需要, 需要向SQL Server 现有表中添加新列并添加描述. 从而有个如下存储过程. (先附上存储过程然后解释) 代码 /********调用方法********** 作用: 添加列并添加列描述信息 调用: exec [SetColumnInfo] '表名', '列名', N'列说明,描述','列类型{默认:NVARCHAR(50)}','列默认值{默认:NULL}' *********

在MySQL向表中插入中文时,出现:incorrect string value 错误

在MySQL向表中插入中文时,出现:incorrect string value 错误,是由于字符集不支持中文.解决办法是将字符集改为GBK,或UTF-8.      一.修改数据库的默认字符集        ALTER DATABASE db_name DEFAULT CHARCTER SET character_name [COLLATE... ] 例子:ALTER TABLE db_mysql DEFAULT CHARCTER SET gbk          注释: (COLLATE是字

使用MySQL Workbench建立数据库,建立新的表,向表中添加数据

初学数据库,记录一下所学的知识.我用的MySQL数据库,使用MySQL Workbench管理.下面简单介绍一下如何使用MySQL Workbench建立数据库,建立新的表,为表添加数据. 点击上图中的“加号”图标,新建一个连接, 如上图,先输入数据库的账号密码,帐号默认为root,填好密码后 点击“OK”,连接就建立好了,建立完成后,会出现一个长方形的框框,双击它,出现下图所示页面 点击图中的红圈里的按钮,新建一个Schema,即数据库(个人理解..),修改一下Name 的值,如  mydat

treeview自动从表中添加标题和列值做目录的方法2

treeview自动从表中添加标题和列值做目录的方法2,该方法是借鉴万一老师的 http://www.cnblogs.com/del/archive/2008/05/15/1114450.html 首先界面上添加treeview组件,然后在treeview的onchange事件里这样写: 因为要用到定义个过程,需要在接口声明里引用 private { Private declarations } /// <summary> /// 刷新左侧treeView /// </summary&g

在数据表中添加一个字段的SQL语句怎么写

如果要在数据表中添加一个字段,应该如何表示呢?下面就为您介绍表添加字段的SQL语句的写法,希望可以让您对SQL语句有更深的认识. 通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数 增加字段: alter table [表名] add 字段名 smallint default 0 增加数字字段,整型,缺省值为0 alter table [表名] add 字段名 int default 0 增加数字字段,长整型,缺省值为0

解决android4.4 中添加Menu的icon时,没有显示的问题

我的Activity是继承了ActionBarActivity,你可以重写你的ActionBarActivity,然后每一个Activity都继承你的BaseActionBarActivity 只需要在Activity里面重写下面的方法即可 @Override public boolean onMenuOpened(int featureId, Menu menu) { if (featureId == Window.FEATURE_ACTION_BAR && menu != null)

02-SQLlite3之alter:在已有的表中添加、修改或删除列

alter table语句 用于在已有的表中添加.修改或删除列 原始表: 一.alter在表中添加新的列 语法:alter table table_name add column_name datatype 注意:sqlite3中alter不支持删除列的操作 注意:sqlite3中alter 不能更改一个已经存在的字段的名称.数据类型.限定符等等 二.alter修改表名 语法:alter table 表名 rename to 新表名;

python爬虫:解决请求路径中含义中文或特殊字符

一.解决请求路径中含义中文或特殊字符(/n,/t等): 1 httpurl=urllib.parse.quote(new_url, safe=string.printable)  注意:new_url必须是只有一个单引号或者双引号,如果是下面这个既有单引号,也有双引号,就会出现urlerror: new_url='"http://news.sina.com.cn/o/2017-06-08/doc-ifyfzaaq5698972.shtml"'

向Oracle数据库中CLOB插入数据报错问题

今天在项目中向数据库的CLOB属性插入一段篇文章(1000~2000)字就会报一个字符串过长的错误. 网上说用流来处理,没有这么做.这像是一个Bug,只要把插入的数据,默认扩充到2000以上就ok了. 下面是这段代码: if((temp.length()>=1000)&&(temp.length()<=2000)){ temp=StringUtils.rightPad(temp, 2008); } 使用StringUtils的rightPad方法使没超过2000的部分,在右边自