除了 MySQL Connector/C++ 8.0 中引入的新 API(X DevAPI 和 X DevAPI for C)之外,Connector/C++ 现在还支持基于 JDBC4 的遗留 API。针对 Connector/C++ 1.1 基于 JDBC4 的 API 编写的应用程序也可以使用 Connector/C++ 8.0 进行编译,它向后兼容早期版本。此类代码不需要 X 插件,并且可以使用旧协议与旧版本的 MySQL 服务器通信。这与 X DevAPI 和用于 C 应用程序的 X DevAPI 形成对比,后者期望 MySQL Server 8.0。
遗留 API 作为一个单独的库实现,其基本名称为“mysqlcppconn”,而不是实现新 API 的“mysqlcppconn8”库。要构建遗留库,您必须使用
CMake选项配置连接器/C++。有关使用旧版 API 的信息,请参阅
https://mysql.net.cn/doc/connector-cpp/en/connector-cpp-getting-started-examples.html上的文档。
-DWITH_JDBC=ON
-
视图和表 DDL 方法已被删除。最好将 SQL 语句用于此类操作。
删除了 X DevAPI 方法:
Schema.createView() Schema.alterView() Schema.dropView() Schema.dropTable()
删除了 X DevAPI 数据类型:
Algorithm CheckOption SQLSecurity
删除了 C 函数的 X DevAPI:
mysqlx_view_create mysqlx_view_create_new mysqlx_view_modify mysqlx_view_modify_new mysqlx_view_replace mysqlx_view_replace_new mysqlx_view_drop mysqlx_table_drop mysqlx_set_view_algorithm mysqlx_set_view_security mysqlx_set_view_definer mysqlx_set_view_check_option mysqlx_set_view_columns
删除了用于 C 枚举的 X DevAPI:
mysqlx_view_algorithm_t mysqlx_view_security_t mysqlx_view_check_option_t
删除了 C 宏的 X DevAPI:
VIEW_ALGORITHM() VIEW_SECURITY() VIEW_DEFINER() VIEW_CHECK_OPTION() VIEW_COLUMNS() VIEW_OPTION_XXX
-
Connector/C++ 现在支持
caching_sha2_password
MySQL 8.0 中引入的身份验证插件(请参阅 缓存 SHA-2 可插入身份验证),但具有以下限制:对于 X DevAPI 或 X DevAPI for C 应用程序,只能使用加密 (SSL) 连接来连接
cached_sha2_password
帐户。对于非 SSL 连接,无法使用cached_sha2_password
帐户。-
对于使用遗留 JDBC API(即不是 X DevAPI 或 X DevAPI for C)的应用程序,可以
cached_sha2_password
在以下情况下连接到帐户:连接未加密(
OPT_SSL_MODE
设置为SSL_MODE_DISABLED
)。服务器公钥使用“rsaKey”选项给出,不使用 RSA 密钥交换(
OPT_GET_SERVER_PUBLIC_KEY
设置为 false)。
如果启用 RSA 密钥交换,则连接有效。
-
现在可以使用该
Collection
界面在文档集合上创建和删除索引。X DevAPI 示例:
coll.createIndex("idx", R"({ "fields": [ { "field": "$.zip", "type": "TEXT(10)" }, { "field": "$.count", "type": "INT UNSIGNED" } ] })" ); coll.createIndex("loc", R"({ "type": "SPATIAL", "fields": [ { "field": "$.coords", "type": "GEOJSON", "srid": 31287 } ] })" ); coll.dropIndex("idx");
C 示例的 X DevAPI:
ret = mysqlx_collection_create_index(coll, "idx", R"({ "fields": [ { "field": "$.zip", "type": "TEXT(10)" }, { "field": "$.count", "type": "INT UNSIGNED" } ] })" ) ret = mysqlx_collecton_create_index(coll, "loc", R"({ "type": "SPATIAL", "fields": [ { "field": "$.coords", "type": "GEOJSON", "srid": 31287 } ] })" ); mysqlx_collection_drop_index(coll, "idx");
-
现在可以使用该
Session
接口在事务中创建保存点并将事务回滚到给定的保存点。该接口支持SAVEPOINT
,ROLLBACK TO SAVEPOINT
, 和RELEASE SAVEPOINT
语句提供的操作。有关这些语句的更多信息,请参阅SAVEPOINT、ROLLBACK TO SAVEPOINT 和 RELEASE SAVEPOINT 语句。X DevAPI 示例:
sess.startTransaction(); string point1 = sess.setSavepoint(); sess.setSavepoint("point2"); sess.rollbackTo(point1); // this also removes savepoint "point2" string point3 = sess.setSavepoint(); sess.releaseSavepoint(point3); // explicitly remove savepoint sess.commitTransaction();
C 示例的 X DevAPI:
mysqlx_trasaction_begin(sess); const char *point1 = mysqlx_savepoint_set(sess,NULL); mysqlx_savepoint_set(sess,"point2"); mysqlx_rollback_to(sess,point1); const char *point3 = mysqlx_savepoint_set(sess,NULL); mysqlx_sevepoint_release(sess,point3); mysqlx_transaction_commit(sess);
有关详细信息,请参阅 使用保存点。
Connector/C++ 现在使用 OpenSSL 库实现 TLS 连接。可以使用 OpenSSL 或 TLS 的捆绑 yaSSL 实现构建连接器/C++。这是由 CMake 选项控制的,它采用以下值:( 使用捆绑的 yaSSL 代码构建); (使用系统 OpenSSL 库构建,位置由CMake检测); (使用安装在指定位置的 OpenSSL 库构建)。有关详细信息,请参阅Connector/C++ X DevAPI 参考中的 “如何构建使用 Connector/C++的代码” ,网址为https://mysql.net.cn/doc/index-connectors.html
WITH_SSL
bundled
system
path_name
.