今天毕设的微信小程序代码告一段落,想着做一下真机调试,但是手机调试时一直获取不到mysql数据库中的数据。
做项目时用的是localhost
,真机调试时要用本地的IP地址(我电脑的ip地址是192.168.0.103),但是我简单的把localhost
改为http:192.168.0.103
后发现还是没用,然后我网上找一些方法,一顿骚操作后就可以了:
首先,win键+X键
,选择Windows PowerShell(管理员)(A)
,然后执行以下代码
net start mysql8.0 (注意:mysql8.0是我在安装mysql8.0版本时,修改services的名称,默认是mysql80好像)
mysql -uroot -p
输入数据库密码后回车
use mysql;
select user, host from user; (结果如图1)
update user set host = '%' where host = 'localhost';
select user, host from user; (结果如图2)
quit; (退出数据库)
net stop mysql8.0 (关闭数据库服务)
net start mysql8.0 (开启数据库服务)
以上操作完成后,可以使得任意IP地址都可以访问这个数据库;
然后查看电脑的ip地址,win键+R键
,输入cmd
,在命令行窗口输入ipconfig
,查看ipv4
的地址;
接下来就是修改项目中的地址:
首先,我后端使用koa框架,配合mysql插件操作数据库:
// 我创建了一个文件db.js,封装对数据库的基本操作的方法
// 引入数据库
var mysql = require("mysql")
// 创建数据库连接池
var pool = mysql.createPool({
host: '192.168.0.103', // 连接的服务器
port: 3306, // mysql服务运行端口
database: 'project', // 选择的数据库
user: 'root', // 用户名
dateStrings: true,
password: 'password' // 用户密码
})
// 对数据库进行增删改查的基本操作
function query(sql, callback) {
pool.getConnection(function (err, connection) {
connection.query(sql, function (err, rows) {
callback(err, rows)
connection.release() // 中断连接
})
})
}
exports.query = query
创建数据库连接池时要注意:本地调试时可以使用ip地址,也可以使用localhost
,但是真机调试就要用ip地址,不能使用localhost
;
然后微信小程序代码中,向后端发起请求的地址都要修改,如:
wx.login({
success: res => {
wx.request({
url: 'http://192.168.0.103:5000/login/wxlogin',
method: "POST",
data: {
js_code: res.code
},
header: {
'content-type': 'application/json'
},
success: function (res) {
console,log('登录成功')
},
fail: function () {
console.log("index.js wx.request CheckCallUser fail");
},
})
}
})
这样就可以了,真机调试也不会有问题了!
不过需要注意的一点是,一个项目往往需要特别多的接口,就像我这个项目,虽然只是自己做的一个小项目,但是接口多达20个,在小程序中,一个接口可能在不同的页面中有调用,所以要是修改了ip地址,那小程序中所有调用的接口都要跟着改,项目一旦复杂可能改漏了,就会出现奇奇怪怪的错误,就像我这个项目,把localhost
改为192.168.0.103
后,小程序中所有的localhost都要跟着改,特别麻烦,所以建议建立一个管理地址的文件,要是ip地址发生改变,改变文件中的地址就好。