我建表时将id设为了 auto increment , 后来有我使用时发现id应该是从1开始的,但是结果却是从2开始递增,我是使用的C++,下面的是我部分代码:
sql_->SetAutoCommit(0);
if(sql_->InsertUserLoginTable(id,"") == -1)
{
result = "regist faild1";
}
else
{
std::string ID = sql_->GetLastID();
std::cout << "ID : " << ID << std::endl;
if (sql_->InsertLoginInfoTable(ID, "", "", "", IMEI, BTMAC) == -1)
{
result = "regist faild2";
}
else if (sql_->InsertUserInfoTable(ID, FaceID, NickName, "", "", "3") == -1)
{
result = "regist faild3";
}
else if (sql_->InsertUserRecordTable(ID, RegistIP) == -1)
{
result = "regist faild4";
}
else
{
result = "regist success";
}
}
if(result == "regist success")
{
sql_->Commit(0);
}
else
{
sql_->Commit(1);
}
sql_->SetAutoCommit(1);
其中有一些是我自己封装的方法,部分如下:
void SetAutoCommit(int i)
{
sql->AutoCommit(i);
}
int Commit(int i)
{
sql->CommitSQL(i);
}
void AutoCommit(int i)
{
mysql_autocommit(connection_,i);
}
int CommitSQL(int i)
{
if(i == 1)
{
mysql_rollback(connection_);
return -1;
}
else
{
mysql_commit(connection_);
return 0;
}
}
在使用MySQL中,经常会在表中建立一个自增的ID字段,利用自增ID能够快速建立索引,也是MySQL官方比较推荐的一种方式,但是,这种方式在大量数据且配置主从时,可能会出现由于自增ID导致同步失败的情况
首先需要了解一点
Mysql主从同步主要通过bin log来同步,而MySQl中bin log最大值为1G,
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。