2012-02-21 249 views
0

我正在尝试使用OSX上的MySQL Connector C API连接到由XAMPP设置的MySQL数据库。使用此代码:MySQL连接器C API无法连接到MySQL服务器

MYSQL mysql; 
mysql_init(&mysql); 
if(!mysql_real_connect(&mysql,"localhost","root","",NULL,0,NULL,0)) 
{ 
    printf("Failed to connect to database: Error (%d): %s",mysql_errno(&mysql),mysql_error(&mysql)); 
} 
else printf("Connection success!"); 

我得到以下结果:

Failed to connect to database: Error (2002): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 

我可以确认数据库操作,因为phpMyAdmin的连接到它精细,这里是config.inc.php文件:

/* Server parameters */ 
$cfg['Servers'][$i]['host'] = 'localhost'; 
$cfg['Servers'][$i]['user'] = 'root'; 
$cfg['Servers'][$i]['password'] = ''; 
$cfg['Servers'][$i]['connect_type'] = 'socket'; 
$cfg['Servers'][$i]['compress'] = false; 
$cfg['Servers'][$i]['AllowNoPassword'] = true; 

有谁知道为什么phpMyAdmin可以连接,但我的C程序不能?我试图强制TCP/IP连接无济于事。

回答

1

您可以将默认端口3306 mysql_real_connect(& MySQL的, “本地主机”, “根”, “”,NULL,3306,NULL,0)

或重新配置my.cnf中(假设您使用linux)并重新启动mysql。

[mysqld] 
socket=/tmp/mysql.sock 

[client] 
socket=/tmp/mysql.sock 
+0

谢谢,事实证明,XAMPP更改了MySQL监听的套接字,找到my.cnf后,它指出套接字的路径。 – user293895 2012-02-21 05:12:46

+0

按照您的建议尝试使用端口3306。不工作。 – user124384 2015-06-21 23:44:37