本周MySQL官方verified/open的bug列表(11月8日至11月14日)

本文概述了MySQL在11月8日至11月14日期间的验证bug列表,包括错误信息解释、修复建议及影响范围。主要内容涵盖CMake问题、在线DDL问题、授权处理逻辑、启动错误报告、复制隔离数据库、MIN/MAX优化器问题、世界可写文件权限问题、数据文件路径限制等。此外,还分析了不同版本间的兼容性问题、更新语句执行错误、hash索引引用计数错误导致的MySQL冻结情况,以及在特定版本中出现的简单UPDATE语句执行失败的bug。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本周MySQL verified的bug列表(11月8日至11月14日)
1. Bug #70859-DWITH_EXAMPLE_STORAGE_ENGINE=1 is ignored
    备注:CMake的问题,导致无法把Example_storage_engine编译进binary,此bug可忽略;
 
2.Bug #70863Wrong error message on a failed ALTER .. LOCK=NONE attempt
   备注:online ddl的问题,适用版本5.6.14。MyISAM存储引擎在指定Lock=none时无法执行DDL语句,此时提示的错误信息为“ ERROR 1845 (0A000): LOCK=NONE/SHARED is not supported for this operation. Try LOCK=EXCLUSIVE.”,但实际上指定Lock=shared是可以执行的。指定Lock=shared时适用的算法是COPY,而不是更高效的INPLACE。指定Lock=EXCLUSIVE时使用的是INPLACE,因此此error信息可能会造成使用者的误解。
 
3.Bug #70865COM_CHANGE_USER redundant packet
   备注:MySQL的鉴权处理逻辑是(1.server端向client端发送随机的scramble; 2.client使用这个scramble生成加密的密码发送回server;3.server检查发回的代码);当client在一开始就使用适当的plugin时,无需此次交互过程。
 
4.Bug #70867Wrong OS error number reported in error log during failure at startup
   备注:InnoDB启动时,如果由于权限问题无法启动,有一条报错语句是“ InnoDB: File operation call: 'create' returned OS error 113.”,而实际正确的错误码应该是13“OS error code  13:  Permission denied”;
 
5.Bug #70877DCL statement is failing on slave with replicate-ignore-db=mysql
   备注: 理论上,如果指定“ replicate-ignore-db=mysql”,在master上执行的DCL语句不应该复制到slave。但实际上,如果在非mysql的schema上执行DCL语句,是会被复制到slave的(因为binlog在DCL语句前会附加一个use db;)。同时,如果在master上试着update/delete一个不存在的用户,replication将会报错。
 
6.Bug #70886MIN/MAX optimizer doesn't take into account type conversions
   备注:5.5和5.6都可以重现。优化器相关的bug,“ MIN/MAX optimizer doesn't take into account type conversions. This means that queries may return different values depending on whether the table has an index.”
   具体重现看下边的示例:
    create table t2 ( a char(10) not null, key(a)) engine=innodb;
insert into t2 values ('foo-123');
insert into t2 values ('-1234');
insert into t2 values ('-99');
insert into t2 values ('-99999');

MySQL [test]> select max(a) from t2 where a < 432;
+--------+
| max(a) |
+--------+
| -99999 |
+--------+
1 row in set (0.00 sec)

MySQL [test]> select max(a) from t2 ignore index(a) where a < 432;
+---------+
| max(a)  |
+---------+
| foo-123 |
+---------+
1 row in set, 4 warnings (0.00 sec)
 
7.Bug #70891Server writes into world-writable file even after warning about it
   备注:文件权限问题。MySQL对一个具有world writable的符号链接的写入,可能绕过Linux本身的文件权限管理。(比如一个/etc/NOT_PASSWD是只限root读写的,但在data目录下创建一个world writable可读写的符号链接链向这个文件,这样MySQL就有可能通过写入这个符号链接修改原始文件内容。bug描述中提到的uuid是5.6开始有的一个特性,用于构成gtid)。
 
8.Bug #70898Manual declares size in KB valid for innodb_data_file_path, but it does not work
   备注: --innodb-data-file-path字段不能指定xxxKB。如“ --innodb-data-file-path="ibdata1:20480K:autoextend"”会导致server启动报错。
 
本周MySQL Open的bug列表(11月8日至11月14日)
1.Bug #70901ORDER BY of a TEXT column doesn't use the same ordering as the < > = operators
   备注:在5.5和5.6版本上均可重现。是TEXT类型的字段,直接比较和使用order by排序,产生的结果不一致。具体可看下边的重现步骤:
root@test 12:40:56>use test;
Database changed
root@test 02:51:29>drop table if exists t;
Query OK, 0 rows affected (0.01 sec)
 
root@test 02:51:30>create table t (v text collate utf8_bin);
Query OK, 0 rows affected (0.01 sec)
 
root@test 02:51:47>insert into t values ('');
Query OK, 1 row affected (0.00 sec)
 
root@test 02:51:59>insert into t values ('\n\n');
Query OK, 1 row affected (0.01 sec)
 
root@test 02:52:05>select hex(t1.v), hex(t2.v), t1.v < t2.v as `<`, t1.v = t2.v as `=`, t1.v > t2.v as `>` from t t1 join t t2 order by t1.v,  t2.v;
+-----------+-----------+------+------+------+
| hex(t1.v) | hex(t2.v) | <    | =    | >    |
+-----------+-----------+------+------+------+
|           |           |    0 |    1 |    0 |
|           | 0A0A      |    0 |    0 |    1 |
| 0A0A      |           |    1 |    0 |    0 |
| 0A0A      | 0A0A      |    0 |    1 |    0 |
+-----------+-----------+------+------+------+
4 rows in set (0.00 sec)
 
2.Bug #70895Replication failure for data from version 5.6 to 5.5
   备注:binlog和relaylog不支持向前兼容。
 
3.Bug #70879Error Code: 1785 when executing simple UPDATE statement
   备注:5.6.14版本上,打开binlog,执行update语句在slave上报错的一个bug。待重现。。
 
4.Bug #70883"hash index ref_count is not zero" MySQL to freeze - impossible to shutdown
   备注:自适应hash索引引用计数相关的一个bug,会导致MySQL hang住。提到的小版本是:“ 5.5.30-mariadb1~squeeze”,待重现
 
5.Bug #70899unnecessary buf_flush_list() during recovery
   备注:buf_flush_list()这个逻辑是否需要以及在何条件下执行,修改后可能极大的提高大buffer pool场景下recover的速度。待确认。

转载于:https://www.cnblogs.com/liuhao/p/3423843.html

### 解决方案 在华为云上使用 MySQL APT 仓库时,如果遇到 GPG 错误 NO_PUBKEY B7B3B788A8D3785C,可以通过以下方法解决。该问题的核心是缺少正确的公钥,导致无法验证仓库的签名。 #### 1. 获取并添加缺失的公钥 首先需要从官方渠道获取对应的公钥,并将其添加到系统的密钥环中。可以使用 `apt-key` 或者 `gpg` 命令完成此操作。 ```bash # 下载并导入公钥 wget https://repo.mysql.com/RPM-GPG-KEY-mysql -O- | sudo apt-key add - ``` 上述命令会下载 MySQL 官方的 GPG 公钥,并将其添加到 APT 的密钥环中[^1]。如果公钥 ID 不匹配,请根据实际提示替换为正确的 URL 和公钥 ID。 #### 2. 更新 APT 配置 确保 APT 配置文件中正确引用了 MySQL 的仓库地址。通常需要编辑 `/etc/apt/sources.list` 或相关 `.list` 文件,添加如下内容: ```plaintext deb [arch=amd64] https://repo.mysql.com/apt/ubuntu focal mysql-5.7 ``` 上述配置适用于 Ubuntu 20.04 (Focal Fossa),请根据实际操作系统版本调整代号。 #### 3. 清理并更新包索引 完成公钥添加和仓库配置后,清理旧的索引文件并重新同步: ```bash sudo apt-get clean sudo rm -rf /var/lib/apt/lists/* sudo apt-get update ``` 清理旧的索引文件有助于避免因缓存导致的校验错误[^5]。 #### 4. 验证问题是否解决 运行以下命令检查是否成功更新 MySQL 仓库: ```bash sudo apt-cache policy mysql-server ``` 如果输出中显示正确的仓库来源且没有 GPG 错误,则问题已解决。 --- ### 注意事项 - 如果仍然出现 GPG 错误,可能需要手动指定公钥 URL 并重复导入步骤。 - 确保使用的公钥与仓库匹配,否则会导致签名验证失败。 - 在华为云环境中,可能需要额外配置代理或网络规则以访问外部资源。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值