我有两个mysql.sock
文件。
一个是/opt/lampp/var/mysql/mysql.sock
。
另一个是/var/run/mysqld/mysqld.sock
。
我想使用第一个mysql.sock文件创建连接。
我还在php.ini
中设置了default_socket。
但它总是连接到第二个。
即使我使用错误的mysql.sock
路径,该程序也不会出错。
这是我的代码:
<?php
$servername = "127.0.0.1";
$username = "my_username";
$password = "my_password";
$database = "";
$port = "3306";
$socket = "/opt/lampp/var/mysql/mysql.sock";
// Create connection
$conn = new mysqli($servername, $username, $password, $database, $port, $socket);
//Check the host info
echo $conn->host_info."\n";
// Check connection
if ($conn->connect_errno) {
printf("Connect failed: %s\n", $conn->connect_error);
exit();
}
$conn->query("set character set utf8");
//Which socket did I connect?
$result = $conn->query("SHOW VARIABLES WHERE Variable_name = 'socket';");
$row = mysqli_fetch_assoc($result);
echo $row['Value']."\n";
//Check the default_socket in php.ini file
echo ini_get("mysqli.default_socket");
?>
输出结果为:
127.0.0.1通过TCP / IP
/var/run/mysqld/mysqld.sock
/opt/lampp/var/mysql/mysql.sock
如何解决这个问题?
更新
ls -l /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock
输出
srwxrwxrwx 1 mysql mysql 0 7月13 18:10 /opt/lampp/var/mysql/mysql.sock
srwxrwxrwx 1 mysql mysql 0 7月6日21:06 /var/run/mysqld/mysqld.sock
答案 0 :(得分:1)
通过将class mycl{
constructor(){
this.myarr=[];
}
build(d){
const self = this; //keep a reference to the class here and use it to access class attributes.
$.each(d,function(d,i){
let myd = ..... // Do some stuff with the data
self.myarr.push(myd);
});
}
}
作为第一个参数传递给"127.0.0.1"
构造函数,可以强制mysqli通过TCP连接到MySQL服务器。这会导致套接字参数被忽略。
要强制通过UNIX套接字建立连接,请将mysqli
或NULL
作为第一个参数传递。