c+上第64位之后的随机字符+;mysql 当我通过C++应用程序与mysql数据库交互时,我面临着一个非常奇怪的问题。

c+上第64位之后的随机字符+;mysql 当我通过C++应用程序与mysql数据库交互时,我面临着一个非常奇怪的问题。,c++,mysql,docker,docker-compose,C++,Mysql,Docker,Docker Compose,环境: docker-compose.yml version: '3.1' services: db: image: mysql:8.0.21 #libmysqlcppconn8-2_8.0.21-1ubuntu18.04_amd64.deb connector command: --default-authentication-plugin=mysql_native_password restart: always en

环境:

docker-compose.yml

version: '3.1'
services: 
    db:
        image: mysql:8.0.21 #libmysqlcppconn8-2_8.0.21-1ubuntu18.04_amd64.deb connector
        command: --default-authentication-plugin=mysql_native_password
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: example
        security_opt:
            - seccomp:unconfined
    client:
        build: .
        ports: 
            - "2890:2890"
客户端容器是ubuntu18.04,这里是测试连接的简单代码和最小结果:

#include <cstdio>
#include <iostream>
#include <stdlib.h>
#include <unistd.h> 
#include "mysql_connection.h"
#include <array>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/prepared_statement.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>

int main() {
  sql::Driver *driver = get_driver_instance();
  sql::Connection *con =
      driver->connect("tcp://remote_backup_db_1", "root", "example");
  con->setSchema("db_test");
  sql::PreparedStatement *stmt;
  sql::ResultSet *res;
  stmt = con->prepareStatement("SELECT test from t;");
  res = stmt->executeQuery();
  if (res->rowsCount() > 0) {
    if (res->next()) {
      std::string text = res->getString("test");
      std::clog << "text: " << text << "\n";
    }
  }
  return 0;
}
问题:当我尝试检索小于64字节的文本时,一切正常,但当我尝试执行文本大于64字节的相同代码时,它会检索开头的64字节,后跟随机字符。这个问题似乎与列类型无关(例如,blob也有同样的问题)。它似乎与编码有关,因为当我尝试获取结果长度时,它被正确设置(例如,对于70个字符的文本长度,它给了我70个字符)


我已经尝试更改表编码,但我不知道如何解决这个问题。(PS,我基本上不使用奇怪的字符,只是ASCII)。< /P>你如何把文本放在表中?@ USE25751在MySQL控制台(手写)中提供的例子中,通过C++代码在应用程序中使用。两个程序相同的问题,你是否使用了一个不同的工具来检查数据库的内容,并确定数据库中的数据是否正确存储?@ USER881301是的,我在MySQL控制台上手工编写了一个简单的选择,在插入和C++插入之后,在这两种情况下,存储在DB中的内容与我插入的内容相同。
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| test  | varchar(128) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+