Rust MAMP PRO mysql 连接

问题描述 投票:0回答:1

我正在尝试连接到我的 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"

这里还有一些附加图片:

MySQL 顶栏

端口设置

我已经尝试过 8889 端口和 localhost,而不是 127.0.0.1。 使用数据库重新管理用户。 不知道如何通过套接字。 希望有任何建议,提前致谢。

mysql rust mamp-pro
1个回答
0
投票

好吧,我终于解决了这个问题。首先,我要感谢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"

© www.soinside.com 2019 - 2024. All rights reserved.