如何使用TCP连接QSQL数据库?(Qt的MySQL驱动程序)

如何使用TCP连接QSQL数据库?(Qt的MySQL驱动程序),qt,Qt,我正在尝试连接到本地MySQL服务器,但无法找到如何选择QSqlDatabase是否应通过套接字或端口连接。Qt是4.6.3版。我的简单测试代码如下: QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setPort(3306); db.setDatabaseName("rem"); db.setUserName("test"); db.setPassword("test"

我正在尝试连接到本地MySQL服务器,但无法找到如何选择QSqlDatabase是否应通过套接字或端口连接。Qt是4.6.3版。我的简单测试代码如下:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("rem");
db.setUserName("test");
db.setPassword("test");

if (!db.open()) {
    qDebug() << db.lastError();
}
如您所见,它希望使用默认套接字进行连接,我不希望使用默认套接字


我找到了db.setconnectoptions unix_SOCKET=blabla,您可以使用它设置套接字。不幸的是,我不知道如何取消设置它。

使用db.setHostName127.0.0.1;相反。

这不一定是社区维基,至少我认为是这样。谢谢。这很有效。你能解释一下为什么会发生这种情况吗?我正在考虑如何让用户输入服务器地址。从MySql手册:在Unix上,MySql程序特别处理主机名localhost,与其他基于网络的程序相比,这种方式可能与您所期望的不同。对于到本地主机的连接,MySQL程序尝试使用Unix套接字文件连接到本地服务器。即使提供了-port或-P选项来指定端口号,也会发生这种情况。要确保客户端与本地服务器建立TCP/IP连接,请使用-host或-h指定主机名值127.0.0.1,或指定本地服务器的IP地址或名称。您还可以指定连接协议
QSqlError(2002, "QMYSQL: Unable to connect",
    "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)")