我正在尝试连接到我的 MAMP PRO 数据库,但我得到
Connection refused (os error 61)
一直以来。
这是我的代码和我的环境文件:
生锈
use mysql::*;
use mysql::prelude::*;
pub struct DB {
connection: PooledConn
}
struct Test {
name: String,
last_name: String
}
#[allow(dead_code)]
impl DB {
pub fn new<'a>(host: &'a str, user: &'a str, name: &'a str, pass: &'a str) -> Self {
let url = format!("mysql://{}:{}@{}/{}?prefer_socket=false", user, pass, host, name);
println!("{}", url);
let pool = Pool::new(url.as_str()).unwrap();
Self {
connection: pool.get_conn().unwrap()
}
}
pub fn test(&mut self) -> std::result::Result<(), Box<dyn std::error::Error>> {
let tests = vec![
Test {name: String::from("test1"), last_name: String::from("test2")}
];
self.connection.exec_batch(
r"INSERT INTO test (name, last_name)
VALUES ( :name, :last_name)",
tests.iter().map(|test| params! {
"name" => &test.name,
"last_name" => &test.last_name,
})
)?;
Ok(())
}
}
环境
SERVER_IP="127.0.0.1:1337"
DB_HOST="127.0.0.1:3306"
DB_USER="api_host"
DB_NAME="api_host"
DB_PASSWORD="12345678admin"
这里还有一些附加图片:
我已经尝试过 8889 端口和 localhost,而不是 127.0.0.1。 使用数据库重新管理用户。 不知道如何通过套接字。 希望有任何建议,提前致谢。
好吧,我终于解决了这个问题。首先,我要感谢kmdreko的帮助。他们的问题有助于澄清问题 - 套接字。
所以,如果其他人遇到这个问题,我是这样解决的:
这是我的数据库构造函数
pub fn new<'a>(host: &'a str, user: &'a str, name: &'a str, pass: &'a str, socket: Option<&str>) -> Self {
let builder = (|| -> OptsBuilder {
let this = OptsBuilder::new()
.ip_or_hostname(Some(host)) // Specify the socket path here
.user(Some(user))
.pass(Some(pass))
.db_name(Some(name));
match socket {
Some(socket) => this.socket(Some(socket)),
_ => this
}
})();
let opts = Opts::from(builder);
let pool = Pool::new(opts).unwrap();
Self {
connection: pool.get_conn().unwrap()
}
}
这是我的.env
SERVER_IP="127.0.0.1:1337"
DB_HOST="127.0.0.1:3306"
DB_USER="api"
DB_NAME="api"
DB_PASSWORD="api"
DB_SOCKET="/Applications/MAMP/tmp/mysql/mysql.sock"