首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法通过MemSQL连接到SQLApi++

无法通过MemSQL连接到SQLApi++
EN

Stack Overflow用户
提问于 2017-05-23 11:04:45
回答 3查看 366关注 0票数 0

我试图从MemSQL代码连接到c++数据库,并使用SQLApi++库。MySQL客户端与MemSQL兼容,SQLApi++支持MySQL。然而,我无法连接并得到不同的错误。

例如,我使用以下参数调用connect

代码语言:javascript
复制
Connect("tcp://localhost:3307", "root", "", SA_MySQL_Client)

并得到一个错误,说Access denied for user 'root'@'localhost' (using password: NO)

我在互联网上搜索过,尝试过几种指定DB主机名的版本,但是它们都不起作用。我做错了什么?正确的版本是什么?有什么想法吗?

注意:我只需执行MemSQL就可以通过命令行成功地连接到memsql -P 3307

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-31 06:25:26

当我提供本地IP地址和端口时,出于某种原因,SQLApi++忽略了它,总是尝试在默认路径(即/var/lib/mysql/mysql.sock)中连接MySQL的套接字。

但是,在再次阅读文档之后,原来可以将套接字的路径作为主机名传递。所以我通过了MemSQL的套接字路径,它成功了!

票数 0
EN

Stack Overflow用户

发布于 2017-05-23 15:45:47

您是否将MySQL安装在与MemSQL相同的计算机上?本地主机可以在某些客户端重定向到MySQL,但127.0.0.1不能(参见https://docs.memsql.com/v5.7/docs/how-to-connect-to-memsql)

连接(“tcp://127.0.0.1:3307”、“根”、"“、"SA_MySQL_Client")是否有效?

票数 0
EN

Stack Overflow用户

发布于 2018-05-31 16:30:17

我也面临着同样的问题,纳布鲁岩已经提到了一个解决方案。只是提供了一些细节,并添加了另一个可能的解决方案。

似乎当SQLAPI发现服务器在本地主机上运行时,它直接进入套接字文件,不幸的是,它总是转到mysql的套接字文件,即/var/lib/mysql/mysql.sock

现在这里可以有两种可能的解决方案:

1-更新您的MemSQL实例以使用与MySQL相同的套接字文件(只有当您没有在同一个框上运行MySQL时,它才是一个选择)

(还没有亲自测试它,所以这里可能缺少一些步骤)您可能可以通过更新memsql.cnf文件中的“套接字”的值来做到这一点,因此应该如下所示:

socket = /var/lib/mysql/mysql.sock

使用用于计算套接字文件位置的命令可以找到memsql.cnf文件的位置,memsql.cnf文件将位于同一个目录中:

代码语言:javascript
复制
memsql -u root --password=YOUR_PASSWORD_HERE -P 3306 -e "show variables like 'socket'"

一旦完成,您应该重新启动memsql:

代码语言:javascript
复制
memsql-ops memsql-restart

2-或修改连接字符串以提供MemSQL套接字路径.

您可以使用第一个选项下提到的命令来计算memsql套接字文件。

在我的例子中,文件是: /app/memsql/master-3306-NJG846fb0e/data/memsql.sock,所以我修改了连接调用以使用这个文件:

代码语言:javascript
复制
Connect("/app/memsql/master-3306-NJG846fb0e/data/memsql.sock@", "myuser", "mypassword", SA_MySQL_Client);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44133034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档