node操作mysql插入数据异常,incorrect string value

时间:2021-02-10 23:18:03

产生的原因

我在创建表的时候,并没有设定字符编码,所以,默认的字符编码是 latin1

在我插入数据的时候,我的一个字段name设定的是varchar(20) 其实,这时的编码就是 latin1 所以,在前端插入数据,在前端和node后端的数据都没问题,能够正常显示,但是插入就报错,异常。

解决办法

修改mysql中的字段的编码,数据库的编码:

1、修改数据库的编码

mysql>alter database "数据库名" character set utf8;

2、查看数据库的编码

mysql> show variables like 'character_set_database';

3、查看数据表的编码格式

mysql> show create table "表名称";

4、修改表的编码格式

mysql> alter table "表名" character set utf8;

tips: 在你创建表的时候,你的编码不是utf8,如果你的字段已经在修改编码之前已经创建,你会发现,字段的编码格式并没有改变,所以需要使用下面的语句,针对字段进行编码格式的修改。 看 第7句

5、创建数据库时指定数据库的字符集

mysql>create database "数据库名" character set utf8;

6、创建数据表时指定数据表的编码格式

create table tb_books (
name varchar(45) not null,
price double not null,
bookCount int not null,
author varchar(45) not null
) default charset = utf8;

7、修改字段的编码方式:

mysql>alter table <表名> change <字段名> <字段名> <类型> character set utf8;

示例:mysql>alter table user change username username varchar(20) character set utf8 not null;

8、 修改一张表所有字段的编码格式

mysql>alter table “表名” convert to character set utf8;

9、添加外键

示例: mysql>\alter table tb_product add constraint fk_1 foreign key(factoryid) references tb_factory(factoryid);

mysql>alter table <表名> add constraint <外键名> foreign key<字段名> REFERENCES <外表表名><字段名>;

10、删除外键

mysql>alter table “表名” drop foreign key “外键名”;

参考链接 : https://www.cnblogs.com/codeplus/archive/2011/08/02/2125546.html