其他
MySQL 的这个 BUG,坑了多少人?
▌问题描述
▌内核问题排查
背景知识2
handler::update_auto_increment: 调用Innodb接口获取一个自增值,并根据当前的auto_increment相关变量的值调整获取的自增值;同时设置当前handler要处理的下一个自增列的值。
ha_innobase::get_auto_increment:获取dict_tabel中的当前auto increment值,并根据全局参数更新下一个auto increment的值到数据字典中
ha_innobase::dict_table_autoinc_initialize:更新auto increment的值,如果指定的值比当前的值大,则更新。
handler::set_next_insert_id:设置当前事务中下一个要处理的行的自增列的值。
&& table->next_number_field
&& new_row == table->record[0]
&& thd_sql_command(m_user_thd) == SQLCOM_INSERT
&& trx->duplicates) {
ulonglong auto_inc;
……
auto_inc = table->next_number_field->val_int();
auto_inc = innobase_next_autoinc(auto_inc, 1, increment, offset, col_max_value);
error = innobase_set_max_autoinc(auto_inc);
……
}
▍现场分析及复现验证
▍解决方案
▍心得
Matlab 被禁只是冰山一角!一个海外资深程序员聊被卡脖子……
你「在看」吗?