c++ - 尝试连接到 google-cloud 中的 MariaDB 数据库但无法连接不显示任何错误报告

标签 c++ mysql mariadb google-cloud-platform mysql++

我正在尝试将一个简单的程序连接到在 Google Cloud 的 VM 中创建的 MariaDB 数据库。 VM 已经安装了 MariaDB 和一个小型工作演示数据库。

使用的代码如下:

#include <mysql++/mysql++.h>
#include <iostream>

// Nombres
using namespace std;
using namespace mysqlpp;

// INICIO
int main ()
{

    //Declara variables
    char server[]   = "104.197.112.189:3306";
    char user[]     = "root";
    char pass[]     = "xxxxxxxx";
    char db[]       = "resst";
    unsigned int i;

    //conexión
    Connection con;
    con.connect("", server, user, pass);
    con.select_db(db);

    //pedido SQL
    string consulta = "select * from  productos";

    //realización de pedido
    Query pedido = con.query(consulta);
    StoreQueryResult resp = pedido.store();
    Row fila;
    for (i=0;i<resp.num_rows();i++)
        {
            cout << "res " << i+1 << " " << resp[i]["nombre"] << endl;
        }

    con.disconnect();

    return 0;
}

此代码与在我的本地主机中创建的此数据库的精确拷贝完美配合,并在我本地运行时打印结果。

另一方面,当我连接到在线数据库运行它时,程序完全没有显示任何内容,没有窗口,没有行,没有错误,只有我运行它的终端有一个空行,所以我不知道从哪里开始寻找。错误报告处于事件状态,并显示发生的任何其他错误。

拜托,任何人都可以给我一些提示吗?

最佳答案

好的,对于有类似问题的人来说,Mariadb(可能也适用于 MySQL)和 Google Cloud 默认锁定所有外部连接。可以分两步解决:

在谷歌云中:进入开发者控制台/你的项目/连接/防火墙规则并创建一个允许端口 3306 的新规则,这是 MySQL 和 Mariadb 的默认设置。

在 Mariadb 中:更改 my.conf,遵循 this tutorial 的第一部分. 就是这样,现在它正在工作。感谢@mrunion 的帮助。

关于c++ - 尝试连接到 google-cloud 中的 MariaDB 数据库但无法连接不显示任何错误报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32528655/

相关文章:

c++ - 如何映射 Linux 系统线程 id 和 std::thread::id?

C++ Xcode 架构的 undefined symbol

php - 使用排序函数对数据进行排序还是从数据库中检索排序?

mysql - 共同的 friend -MySQL

mysql - 从 MariaDB 迁移到 MySQL

mysql - MyISAM还是用于大数据的列存储?

mysql - Powershell : Convert MariaDB query to String

c++ - 使用 Winsock2 和 C++ 上传到 FTP 服务器

c++ - 自动生成函数头,可变参数模板

MySQL:将数字替换为零