运行环境: redhat: 4
           gcc:    3.4
           mysql:  5.1#include <stdio.h>
#include "/usr/include/mysql/mysql.h"MYSQL_RES*  res_ptr;
MYSQL_ROW   sqlrow;
   
unsigned int num_rows = 0;
char ch_sql[200];
MYSQL       my_conn;  
    
 int main(){
 
       mysql_init(&my_conn);     if (!mysql_real_connect(&my_conn, "localhost", "root", "123456","test",0,NULL,CLIENT_FOUND_ROWS)) {
    
        printf( "ERROR: connect database error\n" );
        return 0;
    }
    
    printf( "Successful!\n\n" );
    return 0;
 }编译:gcc sqltest.c $(mysql_config --cflags) $(mysql_config --libs) -o sqltest
运行:./sqltest错误:can't connect to localmysql server through socket '/tmp/mysql.sock'另: 1./tmp/mysql.sock确实存在,而且mysql运行正常
     2.同一用户下,通过命令行:mysql -u root -p123456; 可以正常进入
     3.在本地机器Ubuntu下,编译运行正常;唯一不同的就是gcc版本急!请高手指教!

解决方案 »

  1.   

    检查一下 /tmp/mysql.sock 的权限设置。
      

  2.   

    /tmp/mysql.sock 权限用chmod 777 设置过了,还是那个问题
      

  3.   

    有无防火墙、权限如何
    ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock 试试
      

  4.   

    谢谢wwwwb;这两个位置的sock都是存在的;而且用命令行可以登录:mysql -u root -p123456
      

  5.   

    现在有点怀疑是gcc版本的问题,不过不大可能啊;
      

  6.   

    问题解决了! 多谢大家的回答解决:命令行链接 Mysql server时,通过/tmp/mysql.sock;
          程序连接Mysql 时,通过 /var/lib/mysql/mysql.sock      因为/var/lib/mysql/mysql.sock无效,导致了程序连接失败!      ln -s /var/lib/mysql/mysql.sock  /tmp/mysql.sock