我有几个表,我在其中创建了一个对象ID作为Int或Bigint,在这两种情况下,它们似乎自动递增10(即,第一个插入是对象ID 1,第二个是对象ID 11,第三个是对象ID 21等).两个问题:
为什么这样做?
那是问题吗?
有一个InnoDB表,用于存储自定义构建的Web应用程序使用的博客帖子的注释.
最近我注意到注释的自动递增主键值增加了2而不是1.
我还注意到在另一个MySQL表中用于记住最后几个评论者的足迹签名(例如ip,会话ID,uagent字符串等),PHP会话的名称以"viruskinq"开头,这很奇怪,因为我认为它应该始终是十六进制的类似md5的字符串.
Google只为"viruskinq"提供了几个结果,全都是土耳其语.这很有意思,因为大约一年前,有关网站被土耳其恶棍破坏了.(我100%确定攻击者没有成功,因为我的应用程序中存在任何安全漏洞,因为当时由同一家公司托管的其他网站也被污损了.)
该站点位于共享主机上,使用Linux.
您是否认为服务器本身可能仍然受到黑客的影响?检查评论的id值显示,自今年5月以来存在这种倍增现象,但这种破坏发生在差不多一年前.
还有什么其他原因可以解释自动增量值的奇怪行为?应用程序尚未更改,在较旧的注释中,自动递增的主键值按顺序排列.
托管公司告诉我,自动增量值增加一倍的原因是因为他们使用了Master-Slave MySQL架构师,据他们说这种现象是正常的.
他们还承认,各种黑客不断攻击他们的服务器,"特别是会议",他们无法对此做任何事情.
我想我最好开始打包我的东西并转向更好的虚拟主机.
我在 Mysql 中创建了一个新表,添加了一些行,但显示表的 Auto_increment 字段仍然返回 NULL。
mysql手册说:这个字段应该返回:“下一个Auto_increment值”
https://dev.mysql.com/doc/refman/8.0/en/show-table-status.html
我究竟做错了什么?
如何正确找到下一个 auto_increment 值?
重现步骤:
create table `test` (
`id` int(5) not null auto_increment,
`name` varchar(256),
PRIMARY KEY(`id`)
);
Run Code Online (Sandbox Code Playgroud)
然后我运行:
show table status where name like 'test';
Run Code Online (Sandbox Code Playgroud)
结果:
Name, Engine, Version, ..., Auto_increment, ...
'test', 'InnoDB', '10', ..., NULL, ...
Run Code Online (Sandbox Code Playgroud)
然后我运行:
insert into test values(null,'name1');
insert into test values(null,'name2');
insert into test values(null,'name3');
Run Code Online (Sandbox Code Playgroud)
编辑:-其他插入语法-
insert into test (name) values('name4');
insert into test (name) values('name5');
insert into test (name) values('name6');
Run Code Online (Sandbox Code Playgroud)
获取表的状态
show table …Run Code Online (Sandbox Code Playgroud)