2014-09-13 151 views
2

我有一个数据库设置在我的1and1包中,我想在C++应用程序中连接到它。它在PHP中工作得很好。C++/MySQL - 通过主机地址访问数据库时'未知的MySQL服务器主机';没有IP

的问题是,我没有数据库的实际IP,我所有的主机地址和登录信息:

主机名: db12345678.db.1and1.com

用户名: dbo12345678

密码:输入mypassword

我使用MySQL的C++连接器1.1.4。这里是我的代码用于测试目的:

#include <Windows.h> 
#include <cppconn/driver.h> 
#include <cppconn/exception.h> 
#include <cppconn/resultset.h> 
#include <cppconn/statement.h> 

#include <iostream> 

#pragma comment(lib,"mysqlcppconn.lib") 

int main(int argc,char *argv[]) 
{ 
    try { 
     sql::Driver *driver; 
     sql::Connection *con; 
     sql::Statement *stmt; 
     sql::ResultSet *res; 

     driver = get_driver_instance(); 
     con = driver->connect(sql::SQLString("db12345678.db.1and1.com"),sql::SQLString("dbo12345678"),sql::SQLString("mypassword")); 
     con->setSchema("test"); 
    } 
    catch(sql::SQLException &e) 
    { 
     std::cout<<"Exception: "<<e.what()<<std::endl; 
    } 
    while(true); 
    return 0; 
} 

使用的主机地址,我得到了以下的输出:

Exception: Unknown MySQL server host 'db12345678.db.1and1.com' (0) 

我也试过“TCP://db12345678.db.1and1.com” “tcp://db12345678.db.1and1.com:3306”,“db12345678.db.1and1.com:3306”,错误消息不同,但最终结果相同。

我试过ping主机,并通过traceroute来获取IP,但这并不起作用。

我还能试试吗?

+2

是你的数据库的远程访问允许? – VMai 2014-09-13 14:03:39

+0

我可以通过PHP在不同的主机上访问它,所以我假设它是。 – Silverlan 2014-09-13 14:17:37

+1

那么使用你的PHP主机来获取MySQL服务器的IP地址呢? – VMai 2014-09-13 14:27:06

回答

0

今天我跑了与MySQL的C++连接器一个奇怪的问题,即它不会接受我的主机..

这是我得到的东西的工作:

sql::ConnectOptionsMap connection_properties; 

try { 

    sql::Statement *stmt; 

    connection_properties ["hostName"] = std::string("host.com");  
    connection_properties ["userName"] = std::string("dbuser"); 
    connection_properties ["password"] = std::string("dbpass"); 
    connection_properties ["schema"] = std::string("dbname"); 
    connection_properties ["OPT_RECONNECT"] = true; 


    /* Create a connection */ 
    driver = get_driver_instance(); 
    con = driver->connect(connection_properties); 

} catch (sql::SQLException &e) { 
    std::cout << "# ERR: SQLException in " << __FILE__; 
    std::cout << "# ERR: " << e.what(); 
    std::cout << " (MySQL error code: " << e.getErrorCode(); 
    std::cout << ", SQLState: " << e.getSQLState() << ")" << std::endl; 
} 
相关问题