本文引用了以下文章:第1条,第2条
由于在进行微信小程序云开发时,MySQL数据库里的数据不便转移到云数据库,所以在参考了多篇文章后进行了MySQL数据库的连接。
由于时间限制,我不会一一列出这些步骤。有关具体步骤,请参考以上两篇文章。我将谈谈我遇到的一些问题:
1.
外部环境可以在本地访问此处的设置。我没有意识到。对于直接使用的腾讯云数据库,请参考以下配置:
腾讯云数据库提供了外部网络地址和内部网络地址。与图的不同之处在于我们需要使用外部网络地址。需要注意的另一件事是,默认端口为3036,您无需默认编写它。我的端口不是3036,因此需要在上图中添加:
端口:“腾讯云显示的外部网络端口”,
参考第1条后,在执行云测试时,该错误超时:
这里我们首先考虑默认时间3s是否足够,因此首先设置超时时间: ---->版本和配置-----> ---->高级配置- --->超时时间略长。如图所示:
设置超时时间后,发现即使最大时间设置为60s,也会超时。在这里,我们参考第2条,发现第1条中的代码不会断开数据库连接:
所有数据库请求结束后,请小心使用.end断开连接,否则云功能将报告超时错误。
与.end断开连接后,执行云测试,调用成功,并且版本成功返回:
在此处发布我的代码:
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 } }
注意:我只是菜鸟。我在这里指的是两个大人物的文章微信小程序调用云开发数据库,主要是指以上两篇文章。遇到类似问题时,您可以查看这篇文章。