1

我有一个数据库,我将数据放入其中。我有一个名为 key 的节点,它是主键和其他节点。现在,当我将数据放在我的表上时,我将数据放在除了这个关键节点之外的所有节点中。当我有新条目时,如何使其自动从 0 增加?如果我运行脚本将某些内容放入数据库中,我可以看到节点具有正确的所有数据并且键的值为 0。当我再次运行我的脚本时,我得到了错误:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY'' 

据我了解,因为我没有向这个节点传递任何东西,所以数据库“认为”我再次传递了一个 0 参数,所以我有错误。每次有新条目时,如何将其修复为自动递增?

4

4 回答 4

4

您需要将该字段设置为自动增量。您需要运行这样的ALTER TABLE语句:

ALTER TABLE table_name
MODIFY `key` MEDIUMINT NOT NULL AUTO_INCREMENT
于 2013-01-15T01:49:16.813 回答
3

使用 MySQL,您可以在定义表时使用 AUTO_INCREMENT 关键字声明表以实现此行为

例子:

CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
) ENGINE=MyISAM;

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

当您插入数据时,您不指定主键的值。MySQL 将自动使用键的下一个可用整数值。

更新

您可以直接在 PHP My Admin 中更改此设置:转到有问题的表,然后

操作->表格选项->自动增量

于 2013-01-15T01:47:56.893 回答
3

id MEDIUMINT NOT NULL AUTO_INCREMENT

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

于 2013-01-15T01:48:49.523 回答
3

从 1 开始,而不是 0。所以第一条记录是 id 号 1。

你用的是什么数据库?在 postgres 中,您注册一个数字序列。在我的 sql 中,您只需在指定列属性时使用 AUTO_INCREMENT

于 2013-01-15T01:52:09.593 回答