mysql连接池属性以及遇到的几个问题

在创建连接池的时候需要设置一些属性

实例

var pool = mysql.createPool({  
    host     : 'locahost',  // 主机名  
    port     : 3306, // 数据库连接的端口号 默认是3306  
    database : 'xxx', // 需要查询的数据库  
    user     : 'xxx', // 用户名  
    password : 'xxx', // 密码,我的密码是空。所以是空字符串  
    connectionLimit : 1000,    //连接数
    timezone: '08:00',    //时区配置
    charset:'utf8mb4',  //字符集设置
});
  1. host 连接数据库所在的主机名. (默认: localhost)
  2. port 连接端口. (默认: 3306)
  3. localAddress 用于TCP连接的IP地址. (可选)
  4. socketPath 链接到unix域的路径。在使用host和port时该参数会被忽略.
  5. user MySQL用户的用户名.
  6. password MySQL用户的密码.
  7. database 链接到的数据库名称 (可选).
  8. charset 连接的字符集. (默认: ‘UTF8_GENERAL_CI’.设置该值要使用大写!)
  9. timezone 储存本地时间的时区. (默认: ‘local’)
  10. stringifyObjects 是否序列化对象. See issue #501. (默认: ‘false’)
  11. insecureAuth 是否允许旧的身份验证方法连接到数据库实例. (默认: false)
  12. typeCast 确定是否讲column值转换为本地JavaScript类型列值. (默认: true)
  13. queryFormat 自定义的查询语句格式化函数.
  14. supportBigNumbers 数据库处理大数字(长整型和含小数),时应该启用 (默认: false).
  15. bigNumberStrings 启用 supportBigNumbers和bigNumberStrings 并强制这些数字以字符串的方式返回(默认: false).
  16. dateStrings 强制日期类型(TIMESTAMP, DATETIME, DATE)以字符串返回,而不是一javascript Date对象返回. (默认: false)
  17. debug 是否开启调试. (默认: false)
  18. multipleStatements 是否允许在一个query中传递多个查询语句. (Default: false)
  19. flags 链接标志.

遇到的问题

连接数问题
连接池默认是限制10条连接数,超过不予连接,所以需要做好每一条连接的回收工作;

当你使用getConnection(function(err,connection){})进行获取连接后,在用完连接后需要使用connection.release()进行返还连接,将连接不还给连接池,如果返还连接,最多连接10条就会崩溃。

一般同时请求的用户可能超过10个,不设置连接数使用默认十条就会崩溃,所以需要设置连接数;
设置方法:设置属性时设置connectionLimit :1000就可以了

时区问题
如果出现了存入时间和取出时间不同的可能就是出现了时区问题;
设置属性timezone: '08:00’,用于中国时区

数据库存储emoji表情符号问题

首先设置数据库的字符集为utf8mb4

其次在连接池的属性中设置字符集配置charset:'utf8mb4’

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值