比如如下mysql操作插入数据:

const mysql = require('mysql');
/*
createConnection方法创建一个表示与Mysql数据库服务器之间连接的 Connection对象
*/
const connection = mysql.createConnection({
host: 'localhost',
port: 3306,
database: 'my_db',
user: 'root',
password: '123456'
}); /*
connection 对象被创建之后,可以使用该对象的 connect方法建立mysql数据库服务器之间的连接
*/
connection.connect((err) => {
if (err) {
console.log('数据库连接失败');
} else {
console.log('数据库连接成功');
// 执行sql新增数据操作
connection.query('INSERT INTO User SET ?', {
UserName: '空智2',
Password: '123456789'
}, (err, res) => {
if (err) {
console.log(err);
console.log('插入数据失败');
} else {
console.log('插入数据成功,我接着再查询一遍');
connection.query('SELECT * FROM ??', ['User'], (err, res) => {
if (err) {
console.log('查询数据失败');
} else {
console.log(res);
}
})
}
})
/*
在不需要使用该数据库的时候,可以使用 Connection对象的end方法或destory方法关闭数据库之间的连接
*/
connection.end((err1) => {
if (err1) {
console.log('关闭数据库操作失败');
} else {
console.log('关闭数据库操作成功');
}
})
}
});

然后在命令行中执行 node app.js 后报错如下信息:

经过百度搜索,这个原因是MySql编码的问题。UTF-8编码有可能是两个、三个、四个字节。而Mysql的utf8编码最多3个字节,所以数据插不进去。

解决方法:

1. 找到 my.cnf, 执行命令如下:

sudo find / -name my.cnf

如下所示:

2. 修改编码方式; 把下面配置放到my.cnf中

[client]
default-character-set = utf8mb4 [mysql]
default-character-set = utf8mb4 [mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_bin #utf8mb4_unicode_ci 会导致部分字符查询出错

如下图所示:

3. 保存,重启Mysql服务

启动MySQL服务
sudo /usr/local/mysql/support-files/mysql.server start

停止MySQL服务
sudo /usr/local/mysql/support-files/mysql.server stop

重启MySQL服务
sudo /usr/local/mysql/support-files/mysql.server restart

mysql 重启完成后,登录mysql,查看配置是否生效了,如下所示:

如上执行命令:SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

可以看到生效了,

4. 重新创建数据库。

create database 我的数据库名称;

如下图所示:

查看所有的数据库,如下图所示

5. 创建表。命令如下:

CREATE TABLE User
(
ID int NOT NULL AUTO_INCREMENT,
UserName varchar(255) NOT NULL,
Password varchar(255) NOT NULL,
PRIMARY KEY (ID)
);

如下所示

6. 查看表的编码,如下命令:show create table user;

如下所示:

7, 我们再执行下代码如下(在命令行中执行 node app.js):

const mysql = require('mysql');
/*
createConnection方法创建一个表示与Mysql数据库服务器之间连接的 Connection对象
*/
const connection = mysql.createConnection({
host: 'localhost',
port: 3306,
database: 'new_my_db',
user: 'root',
password: '123456'
}); /*
connection 对象被创建之后,可以使用该对象的 connect方法建立mysql数据库服务器之间的连接
*/
connection.connect((err) => {
if (err) {
console.log('数据库连接失败');
} else {
console.log('数据库连接成功');
// 执行sql新增数据操作
connection.query('INSERT INTO User SET ?', {
UserName: '我是空智',
Password: '123456789'
}, (err, res) => {
if (err) {
console.log(err);
console.log('插入数据失败');
} else {
console.log('插入数据成功,我接着再查询一遍');
connection.query('SELECT * FROM ??', ['User'], (err1, res) => {
console.log(err1)
if (err1) {
console.log('查询数据失败');
} else {
console.log(res);
}
})
}
})
}
});

报错的信息  如下图所示:

报错的信息提示:Error: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: '\xE6\x88\x91\xE6\x98\xAF...' for column 'UserName' at row 1

上述的问题还是因为编码的问题产生的,因为我们使用了已经创建好的数据库和表,但是编码并没有改成 utf-8;

通过以下命令查看表的编码:

show create table (数据库名.表名);

如下图所示:

修改方法如下:

ALTER TABLE new_my_db.user CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

如下图所示:

我们再来查看下user表的列字段的编码如下:(使用命令:show FULL COLUMNS FROM new_my_db.user;)

改完以后,我们再来执行 我们的上面的代码,在命令行中执行 node app.js 后可以看到,我们也能插入中文汉字了,也能查询出来哦,如下图所示:

最新文章

  1. UVa 7146 Defeat the Enemy(贪心)
  2. spring mvc使用的一些注意事项
  3. mysql颠覆实战笔记(一)--设计一个项目需求,灌入一万数据先
  4. Makefile第四讲:include 引用其它makefile文件
  5. ONE WIRE
  6. js中的this关键字,setTimeout(),setInterval()的执行过程
  7. 自定义SpringBoot启动banner
  8. CentOS 64-bit下安装JDK和Tomcat并设置Tomcat开机启动操作步骤
  9. privoxy自动请求转发到多个网络
  10. BackGround
  11. DataGridView操作小记(1)
  12. Vue+koa2开发一款全栈小程序(4.Koa入门)
  13. 课程四(Convolutional Neural Networks),第四 周(Special applications: Face recognition & Neural style transfer) —— 2.Programming assignments:Art generation with Neural Style Transfer
  14. scokte tcp/ip
  15. Hadoop生态圈-Azkaban实现文件上传到hdfs并执行MR数据清洗
  16. 字符串对象的charAt函数存在的意义
  17. C# 图像自动切换
  18. C/C++ -- Gui编程 -- Qt库的使用 -- Qt5总结
  19. Angular路由与Nodejs路由的区别
  20. 在Terminal中的光标的使用技巧

热门文章

  1. vue开发项目详细教程(第一篇 搭建环境篇)
  2. [Python] Python 学习 - 可视化数据操作(一)
  3. C# 处理PPT水印(一)——添加水印效果(文字水印、图片水印)
  4. Maven(十二)Maven 依赖详解
  5. 用JS编写一个函数,返回数组中重复出现过的元素
  6. js知识点总结
  7. Get-CrmSetting返回Unable to connect to the remote server的解决办法
  8. 解决Centos7 yum 出现could not retrieve mirrorlist 错误
  9. iOS---------显示和隐藏状态栏的网络活动标志
  10. Bitmap上下合成图片