mysql - 使用 mysql C 连接器连接到 memsql 时出错

标签 mysql mysql-connector singlestore

我正在尝试通过 mysql C 连接器连接到 memsql:

MYSQL *connection = mysql_init(NULL);
mysql_real_connect(connection, HOST, USER, NULL, DBNAME, 0, NULL, 0);

但我收到“服务器握手错误”

从终端连接(mysql -u root -h 127.0.0.1 -P 3306)工作正常。我尝试设置 root 密码,但没有任何变化。

我还在 mysql_options() 中添加了 SSL_MODE_DISABLED 并确保为 memsql 禁用了 SSL。

可能是什么问题?

最佳答案

您使用的是哪个版本的 MySQL C 连接器? MySql 更改了 MySQL 8 中的默认身份验证协议(protocol),因此我建议使用较旧的 C 连接器(任何早于 8 的版本)。如果您想使用 MySQL 8 连接器,那么您需要以某种方式传递 default-auth=mysql_native_password。

使用 MySQL 8 C 连接器并连接到旧版本的 MySQL 时也存在同样的问题(请参阅 https://bugs.mysql.com/bug.php?id=90994)。

关于mysql - 使用 mysql C 连接器连接到 memsql 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51737964/

相关文章:

php - 从具有相同 id 的同一列中选择一个值

javascript - 为什么 mysql 数据库信息不会传递给 express.js 函数?

mysql - 为什么这个 CASE 运算符不工作?

mysql - MySQL Connector/J 读取 ~/.my.cnf 吗?

union - 多边形的 MemSQL 地理空间联合

mysql - 哪个数据库引擎最适合处理数组值?

java - 如何在 Eclipse 中使用 MySql 数据库

mysql - 如何避免对每个查询重复使用 mysql_real_connect()?

cluster-computing - memSQL 如何将分区添加到现有的分片表/数据库?

mysql - 如何使用原子操作交换 MESQL 表