本文章参考以下文章:文章1,文章2

由于在进行微信小程序云开发时,MySQL数据库里的数据不便转移到云数据库,所以在参考了多篇文章后进行了MySQL数据库的连接。

由于时间有限,我就不将步骤一一写出来了,具体步骤可以参考以上两篇文章,我说一下我遇到的几个问题:

1.
这里的设置本地mysql可以被外界访问我并没有实现,直接采用的腾讯云的MySQL数据库,参考以下的配置:

腾讯云Mysql数据库给出了外网地址和内网地址,和图中不一样的是,我们需采用外网地址,再就是需要注意的是默认port是3036,默认的话就不用写,但是我的端口并不是3036,所以在上图中需要添加:
port:"腾讯云显示的外网端口",

在参考了文章1以后,在进行云端测试时,报错超时:

这里我们首先考虑默认时间3s是否足够,所以先设置超时时间:云函数---->版本与配置----->配置---->高级配置------>超时时间,设置的稍微大一些。如图:

设置了超时时间后,发现就算设置最大时间60s都会超时,这里我们参考文章2发现,文章1的代码没有进行断开数据库连接:

当所有数据库请求结束之后,注意要使用.end断开连接,不然云函数会报超时错误。

使用.end断开连接后,进行云端测试,调用成功,并成功返回mysql版本:

这里贴出我的代码:

const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,//云开发环境的初始化
})
const mysql = require('mysql2/promise');
exports.main = async (event, context) => {
  try {
    const connection = await mysql.createConnection({
      host: "你的外网ip地址", 
      user: "数据库的用户名",  
      password: "你的数据库密码", 
      database: "数据库名称",  
      port:"你的外网端口,默认3036就不用写",
    })
    const [rows, fields] = await connection.query(
      'SELECT version();',//query(sql语句)//这里sql语句是查看mysql版本
      );
    connection.end(function(err) {  //注意要断开连接,不然尽管获取到了数据,云函数还是会报超时错误
      console.log('断开连接')
   });
    console.log(rows)
    console.log(fields)
    return rows
  } catch (err) {
    console.log("连接错误", err)
    return err
  }
}

注:我只是个小白,这里参考了两位大佬的文章,主要参考以上两篇文章,遇到相似问题时可以来查看此文章。

更多推荐

微信小程序云开发连接MySQL数据库