在学习廖雪峰的使用Sequelize时,遇到了一个问题,搞了好久,问题如下:

failed: SequelizeAccessDeniedError: ER_ACCESS_DENIED_ERROR: Access denied for user 'www'@'localhost' (using password: YES)
(node:7512) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): SequelizeAccessDeniedError: ER_ACCESS_DENIED_ERROR: Access denied for user 'www'@'localhost' (using password: YES)
(node:7512) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): SequelizeAccessDeniedError: ER_ACCESS_DENIED_ERROR: Access denied for user 'www'@'localhost' (using password: YES)

最后发现是写mysql的时候 授权后没有flush privileges;的原因。刚开始只写了第一句,没有写第二句。就出现了上面的错误。

解决方法:用root登陆mysql之后,输入如下语句再运行就可以了。

grant all privileges on test.* to 'www'@'%' identified by 'www';
flush privileges;

其中第一句的意思:允许用户www从任何主机连到test数据库,并使用www作为密码。

第二句的意思:刷新MySQL的系统权限相关表,否则会出现拒绝访问。当然,还有一种方法,就是重新启动mysql服务器,来使新设置生效。­

执行第一次结果如下,由于异步执行的,因此刚开始的结果是find 0 pets,又由于await写法更胜一筹,速度更快,因此结果先出来。

init sequelize...
Executing (default): SELECT `id`, `name`, `gender`, `birth`, `createdAt`, `updatedAt`, `version` FROM `pets` AS `pet` WHERE `pet`.`name` = 'Gaffey';
Executing (default): INSERT INTO `pets` (`id`,`name`,`gender`,`birth`,`createdAt`,`updatedAt`,`version`) VALUES ('g-1482410594167','Gaffey',false,'2007-07-07',1482410594167,1482410594167,0);
Executing (default): INSERT INTO `pets` (`id`,`name`,`gender`,`birth`,`createdAt`,`updatedAt`,`version`) VALUES ('d-1482410594167','Odie',false,'2008-08-08',1482410594167,1482410594167,0);
find 0 pets:
created: {"id":"d-1482410594167","name":"Odie","gender":false,"birth":"2008-08-08","createdAt":1482410594167,"updatedAt":1482410594167,"version":0}
created.{"id":"g-1482410594167","name":"Gaffey","gender":false,"birth":"2007-07-07","createdAt":1482410594167,"updatedAt":1482410594167,"version":0}

执行第二次结果,find 1 pets的意思是通过条件查找,找到名字为Gaffey的记录有一条,然后对其进行了更新。

init sequelize...
Executing (default): SELECT `id`, `name`, `gender`, `birth`, `createdAt`, `updatedAt`, `version` FROM `pets` AS `pet` WHERE `pet`.`name` = 'Gaffey';
Executing (default): INSERT INTO `pets` (`id`,`name`,`gender`,`birth`,`createdAt`,`updatedAt`,`version`) VALUES ('g-1482410605916','Gaffey',false,'2007-07-07',1482410605916,1482410605916,0);
Executing (default): INSERT INTO `pets` (`id`,`name`,`gender`,`birth`,`createdAt`,`updatedAt`,`version`) VALUES ('d-1482410605916','Odie',false,'2008-08-08',1482410605916,1482410605916,0);
find 1 pets:
{"id":"g-1482410594167","name":"Gaffey","gender":false,"birth":"2007-07-07","createdAt":1482410594167,"updatedAt":1482410594167,"version":0}
update pet...
Executing (default): UPDATE `pets` SET `gender`=true,`updatedAt`=1482410606256,`version`=1 WHERE `id` = 'g-1482410594167'
created.{"id":"g-1482410605916","name":"Gaffey","gender":false,"birth":"2007-07-07","createdAt":1482410605916,"updatedAt":1482410605916,"version":0}
created: {"id":"d-1482410605916","name":"Odie","gender":false,"birth":"2008-08-08","createdAt":1482410605916,"updatedAt":1482410605916,"version":0}

主程序app.js的代码如下:

const Sequelize =require('sequelize');
const config=require('./config');
console.log('init sequelize...');
var sequelize = new Sequelize(config.database,config.username,config.password,{host:config.host,dialect:'mysql',pool:{max:5,min:0,idle:30000}
});
var Pet=sequelize.define('pet',{id:{type:Sequelize.STRING(50),primaryKey: true,},name: Sequelize.STRING(100),gender: Sequelize.BOOLEAN,birth: Sequelize.STRING(10),createdAt: Sequelize.BIGINT,updatedAt: Sequelize.BIGINT,version: Sequelize.BIGINT
},{timestamps:false
});var now =Date.now();
Pet.create({id: 'g-' + now,name: 'Gaffey',gender: false,birth: '2007-07-07',createdAt: now,updatedAt: now,version: 0
}).then(function (p) {console.log('created.' + JSON.stringify(p));
}).catch(function (err) {console.log('failed: ' + err);
});(async () => {var dog = await Pet.create({id: 'd-' + now,name: 'Odie',gender: false,birth: '2008-08-08',createdAt: now,updatedAt: now,version: 0});console.log('created: ' + JSON.stringify(dog));
})();(async () => {var pets = await Pet.findAll({where: {name: 'Gaffey'}});console.log(`find ${pets.length} pets:`);for (let p of pets) {console.log(JSON.stringify(p));console.log('update pet...');p.gender = true;p.updatedAt = Date.now();p.version ++;await p.save();if (p.version === 3) {await p.destroy();console.log(`${p.name} was destroyed.`);}}
})();

SequelizeAccessDeniedError的原因和解决方式相关推荐

  1. dma访问主存时_DMA导致Cache数据一致性问题的原因及其解决方式(理论篇)

    点击上方公众号名称关注,获得更多内容 ✎ 编 者 悟 语 唉!嫉妒之心真的能俘获它所接触到的任何目标啊--"欲加之罪,何患无辞"呢?"觉悟高的"更有" ...

  2. 【翻译自mos文章】使用aum( Automatic Undo Management) 时遇到 ORA-01555错误--- 原因和解决方式。...

    [翻译自mos文章]使用aum( Automatic Undo Management) 时遇到 ORA-01555错误--- 原因和解决方式. 使用aum( Automatic Undo Manage ...

  3. java replace无效_Java String.replace()方法无效的原因及解决方式

    首先我们来看个例子 public class Demo1 { public static void main(String[] args) { String aa="abcd"; ...

  4. 【跑飞、死机】单片机 msp430程序跑飞原因和解决方式积累

    目录 单片机 msp430程序跑飞原因和解决方式积累 MSP430 数组填充越界引起的栈溢出 导致程序跑飞 [单片机重启]MSP430重启/频繁重启/跑飞 原因分析 单片机 msp430程序跑飞原因和 ...

  5. bluestacks模拟器常见四大安装失败原因和解决方式

     注:安装Bluestacks前请先用"靠谱助手"的"安装检测"功能进行检测一下.        靠谱助手下载地址:http://www.kaopu001. ...

  6. Http状态码 错误原因及解决方式(全)

    400 Bad request 问题 JSON parse error: Cannot deserialize instance of java.util.ArrayList out of 原因 Re ...

  7. 外边距塌陷原因和解决方式

    概念 外边距塌陷也称外边距合并,在文档流中相邻(兄弟或父子关系)的块级元素的外边距组合在一起变成单个外边距,只有在上下外边距才会出现塌陷,左右不会出现. 解析:1.两个嵌套块级元素,父元素如果没有上补 ...

  8. mysql备份恢复出错_MySQL:MySQL备份失败,原因和解决方式

    今天和同事一起处理了一个奇怪的MySQL空间异常问题,从这个问题的处理中可以找到一些问题处理的方式. 问题的背景是有一个实例的备份总是失败,在排查了多次之后,在保证Slave可用的情况先搁置了,刚好借 ...

  9. Spark开发-Spark内存溢出原因以及解决方式

    Dpark内存溢出 Spark内存溢出 堆内内存溢出 堆外内存溢出 堆内内存溢出 java.lang.OutOfMemoryError: GC overhead limit execeeded jav ...

  10. VS2010出现重复的代码项原因及解决方式

    Error 243 The item "obj\Debug\******.resources" was specified more than once in the " ...

最新文章

  1. 自旋电子学与量子计算机,基于“分子自旋电子学”的新技术,将给量子计算机带来新希望!...
  2. html5 ar开发,HTML5 WebAR开发
  3. SAP SD-如何控制定价折扣的总额度
  4. 查看linux上redis的运行状态,Redis教程(七)使用info查看服务状态
  5. DPDK rte_mbuf
  6. 医学教育网批量资源下载程序之——完成
  7. Git 忽略提交 .gitignore
  8. ABAP:向自建表写入数据时,需要注意的问题
  9. django 上传文件夹_django上传文件
  10. 洛谷 P1506 拯救oibh总部-dfs染色法
  11. Kube-Proxy IPVS模式源码分析
  12. 小微数字风控必学-冷启动开发风险评分(含实操)
  13. byte[]与Image Image与 byte[] 之间的转换
  14. 远程桌面工具mRemoteNG与Tsmmc
  15. 十四步实现强大的五子棋AI
  16. 大一上学期高数期中复习 高数叔复习笔记
  17. html播放监控视频教程,使用javascript实现监控视频播放并打印日志
  18. CSS学习笔记 | CSS复合选择器
  19. 串之Ukkonen、Rabin_karp算法
  20. 个人永久性免费-Excel催化剂功能第41波-文件文件夹相关函数

热门文章

  1. 怎样将exe打包成服务运行
  2. 南阳理工计算机与信息工程学院,南阳理工学院计算机与信息工程学院
  3. java struts2教程_Struts2教程--第一章 搭建Struts2开发环境
  4. U盘插入电脑有提示声,不识别(不显示大容量存储设备)
  5. mybatis学习(二)
  6. 【文献阅读】深度时空网络风力预测(Jiangyuan Li等人,ArXiv,2021)
  7. 用cube移植PS2手柄--HAL库
  8. 使用srvany.exe把程序安装成windows服务
  9. OA网站不能正常显示(不能看正文)
  10. 学好加工中心UG编程,先弄懂这些问题