【发布时间】:2018-02-17 16:59:11
【问题描述】:
问题
我正在关注 dev.mysql 提供的关于 Connect/C++ 的教程。复制示例并成功编译和链接后,我遇到了以下问题:
在抛出 'sql::SQLException' 实例后调用终止
what(): 无法连接到 '127.0.0.1' (111) 上的 MySQL 服务器
据我所知,111 代表 Permission Denied。
设置
这是取自here并稍作修改的示例代码:
#include <mysql_driver.h>
int main()
{
auto driver = sql::mysql::get_mysql_driver_instance();
auto con = driver->connect("tcp://127.0.0.1:0", "root", "123");
delete con;
}
尝试使用tcp://127.0.0.1:3306 得到相同的结果。
这里是 CMakeLists.txt:
cmake_minimum_required(VERSION 3.9)
project(mysql_try)
set(CMAKE_CXX_STANDARD 14)
set(SOURCE_FILES main.cpp)
add_executable(mysql_try ${SOURCE_FILES})
target_include_directories(mysql_try PUBLIC /usr/local/include/mysql++)
target_link_libraries(mysql_try mysqlclient /usr/local/lib/libmysqlcppconn-static.a pthread dl)
我可以使用代码中的凭据轻松运行mysql。我禁用了网络,因此它只会在localhost 上收听。跑步
mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
给了我 0,所以我猜是端口 0。
C 连接器和命令行界面工作正常。
我的操作系统是 ubuntu 16.04。
【问题讨论】:
-
mysql服务器在运行吗?
-
@Galik,是的。正如我所提到的,我可以轻松运行
mysql并执行查询。 -
端口
0?你确定这是正确的吗? -
@Galik,查询给了我,所以我猜它是正确的。它在查询给我的 ASCII 艺术表中进行了描述。 0 写在
port的右侧。 -
我会检查您的服务器配置以查看 mysql 在哪个端口上运行。但如果命令行有效,它可能是默认的
标签: c++ mysql database-connection