10bet网址
MySQL连接器/ c++发布说明
相关文件10bet官方网站 下载这些发行说明
PDF (Ltr)- 301.5KB.
PDF(A4)- 302.1KB.
HTML下载(TGZ)- 65.7KB.
HTML下载(邮政编码)- 118.7KB.


MySQL连接器/ c++发布说明/MySQL Connector / C ++ 8.0的更改/ MySQL连接器/ C ++ 8.0.19(2020-01-13,普通可用性)更改

MySQL连接器/ C ++ 8.0.19(2020-01-13,常规可用性)的更改

错误处理

  • 如果应用程序试图从不产生结果集的语句中获取结果集,则会发生异常。对于没有捕捉到此类异常的应用程序,Connector/ c++现在会生成一个更有信息性的错误消息来指示异常发生的原因。(Bug #28591814, Bug #92263)

遗留(JDBC API)注释

  • 对于使用遗留JDBC API(即,不是X DevAPI或C的X DevAPI)的应用程序,现在可以在创建新会话时指定要尝试的多个主机,直到建立成功的连接。可以在会话创建选项中给出主机列表。

    新的OPT_MULTI_HOST选项默认为向后兼容禁用,但如果在connectionOptionsmap.参数传递给connect ()调用,允许其他地图参数指定多个主机。例子:

    sql: ConnectOptionsMap选择;选择[“hostname”] =“host1,host2:13001,localhost:13000”;选择[“架构”] =“test”;选择[“OPT_MULTI_HOST”]= true;选择“用户名”=”用户”;选择“密码”=”密码“;司机 - >连接(选择);
    sql: ConnectOptionsMap选择;选择[“hostName”]= " tcp: / / host1 host2:13001, localhost: 13000 /测试”;选择[“OPT_MULTI_HOST”]= true;选择“用户名”=”用户”;选择“密码”=”密码“;司机 - >连接(选择);
    sql: ConnectOptionsMap选择;选择[“hostName”]= " mysql: / / host1 host2:13001, localhost: 13000 /测试”;选择[“OPT_MULTI_HOST”]= true;选择“用户名”=”用户”;选择“密码”=”密码“;司机 - >连接(选择);

    端口值是特定于主机。如果在没有端口号的情况下指定了主机,则使用默认端口。

    这些规则适用:

    • 如果OPT_MULTI_HOST已禁用,并指定多个主机,发生错误。

    • 如果OPT_MULTI_HOST禁用且指定了解析为多个主机的单个主机,则第一个主机用于向后兼容。

    • 如果OPT_MULTI_HOST已启用且指定多个主机,其中一个是随机选择的作为连接目标。如果目标失败,则将另一个主机从保留的那些中选中。如果所有目标失败,则会发生错误。

    • 主机名参数可以接受包含逗号分隔主机列表的URI。URI方案可以是mysql://,它的工作TCP://。也可以省略URI方案,因此参数可以是逗号分隔的主机列表。

    • connect ()采用URI,USER和PASSWORD参数的语法不允许多个主机,因为在这种情况下OPT_MULTI_HOST被禁用。

包装笔记

  • 连接器/ C ++现在与MSVC 2019兼容,同时保留与MSVC 2017的兼容性:

    • 以前,Connector/ c++二进制发行版与使用MSVC 2017或2015构建的项目是兼容的。二进制发行版现在与使用MSVC 2019(使用动态或静态连接器库)或MSVC 2017(使用动态连接器库)构建的项目兼容。构建使用MSVC 2015可能工作,但不支持。

    • 以前,可以使用MSVC 2017或2015构建连接器/ C ++源分布。现在可以使用MSVC 2019或2017建立源分发。使用MSVC 2015的建筑可能会工作,但不支持。

    • 以前,MSI安装程序接受Visual C ++可再分发用于Visual Studio 2017或2015. MSI安装程序现在接受可视化C ++可再分发的Visual Studio 2019或2017。

x devapi笔记

  • 对于C应用程序的X Devapi或X Devapi,Connector / C ++现在提供了为TLS连接协商指定允许的TLS协议和CIPhersuites的选项:

    • TLS协议必须从此列表中选择:TLSv1,TLSv1.1,TLSv1.2,TLSv1.3。(TLSv1.3要求使用OpenSSL 1.1.1或更高版本编译服务器和连接器/ C ++。)

    • CIPHERSUITE值必须是IANA CIPHERSUITE名称。

    TLS协议和密码套件现在可以在以下上下文中指定:

    • 连接字符串许可证tls-versionstls-ciphersuites.选项。的tls-versions值是一个或多个逗号分隔的TLS协议版本的列表。的tls-ciphersuites.Value是一个或多个以逗号分隔的密文套件名称的列表。例子:

      …? (TLSv1.3 tls-versions = ]&... ...? tls-versions = [TLSv1.2 TLSv1.3 ]&... ...?tls-ciphersuites.=[ TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, TLS_CHACHA20_POLY1305_SHA256 ]&...
    • SessionSettings对象许可tls_versions.TLS_CIPHERSUITES选项。每个值都是包含一个或多个逗号分隔的项目或具有字符串的容器的字符串(即,可以使用产生字符串值的循环迭代的任何类型)。

      单个字符串值的示例:

      会话年代(…, TLS_VERSIONS, "TLSv1.2,TLSv1.3", TLS_CIPHERSUITES, "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,TLS_CHACHA20_POLY1305_SHA256",…);

      字符串容器值示例:

      std ::列表 tls_versions = {tlsv1.2“,”tlsv1.3“};std ::列表 ciphers = {“tls_dhe_psk_with_aes_128_gcm_sha256”,“tls_chacha20_poly1305_sha256”};session s(...,tls_versions,tls_versions tls_ciphersuites,ciphers,...);session s(...,tls_versions,std :: Vector {“tlsv1.2”,“tlsv1.3”},tls_ciphersuites,std :: vector {“tls_dhe_psk_with_aes_128_gcm_sha256”,“tls_chacha20_poly1305_sha256”},...);
    • mysqlx_session_option_set ()和朋友许可MYSQLX_OPT_TLS_VERSIONSMYSQLX_OPT_TLS_CIPHERSUITES会话选项常量,以及相应的常量opt_tls_versions()opt_tls_ciphersuites()宏。MYSQLX_OPT_TLS_VERSIONSMYSQLX_OPT_TLS_CIPHERSUITES接受包含一个或多个逗号分隔项目的字符串。例子:

      mysqlx_session_option_set(选择……, OPT_TLS_VERSIONS("TLSv1.2,TLSv1.3"), OPT_TLS_CIPHERSUITES("TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,TLS_CHACHA20_POLY1305_SHA256"),…)

    有关有关TLS协议和CIPhersuites的更多信息,请参阅加密连接TLS协议和密码。(Bug #28964583, Bug #93299)

  • 对于C应用程序的x devapi或x devapi,在创建新连接时(由连接字符串或其他方式给出),如果连接数据包含未分配的显式优先级的多个目标主机,则现在的故障转移逻辑的行为是与所有这些目标主机都具有相同的优先级相同。也就是说,从剩余的可用主机随机选择下一个要进行连接的候选者。

    这与以前的行为不同,在以前的行为中,没有显式优先级的主机被隐式地分配递减优先级,并按照连接数据中列出的相同顺序进行尝试。

添加或更改的功能

  • 连接器/ C ++现在支持使用DNS SRV记录来指定多个主机:

    • 会话和会话池创建接受URI方案mysqlx + srv://在连接字符串中启用DNS SRV特性。例子:

      mysqlx + srv://_mysql._tcp.host1.example.com/db?选项
    • 对于x devapi,mysqlx:会话对象允许A.SessionOption: DNS_SRV进入以使使用DNS SRV记录来指定可用服务。例子:

      mysqlx::Session sess(SessionOption::HOST, "_mysql._tcp.host1.example.com", SessionOption::DNS_SRV, true, SessionOption::USER, "用户”,SessionOption: PWD。”密码“);

      类似地,对于C语言的X DevAPImysqlx_session_option_set ()功能允许A.opt_dns_srv()选项。例子:

      mysqlx_session_option_set(opt,opt_host(“_ mysql._tcp.host1.example.com”),opt_dns_srv(true)opt_user(“用户“),Opt_pwd(”密码“),param_end));
    • 对于使用遗留JDBC API的应用程序(也就是说,不是X DevAPI或C的X DevAPI),连接映射允许OPT_DNS_SRV元素。地图应将SRV查找的主机指定为完整查找名称,没有端口。例子:

      sql: ConnectOptionsMap选择;选择[“hostname”] =“_mysql._tcp.host1.example.com”;选择[“opt_dns_srv”] = true;选择[“用户名”] =“用户”;选择“密码”=”密码“;司机 - >连接(选择);

      在遗留应用程序中,不能在URI连接字符串中启用DNS SRV解析,因为在这些字符串中不支持参数。

错误固定

  • 连接器/ C ++无法在Linux上使用Clang编译。(bug#30450484)

  • Connector/ c++将事务隔离级别设置为可重复阅读在连接时,无论当前服务器设置如何。(bug#22038313,bug#78852,bug#30294415)