当我使用此SQL命令时,将插入重复的行。
SQL命令是:
$dbh = mysql_connect(db_host, db_user, db_pass);
mysql_select_db(db_name, $dbh);
mysql_query("INSERT INTO test VALUES(0, '1')");
这恰好发生在我使用0作为主要的第一个字段且 auto_increment
答案 0 :(得分:1)
我没有看到问题:
mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> create table test (x int primary key auto_increment, y varchar(1));
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test values (0, '1');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test values (0, '1');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test values (0, '1');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test;
+---+------+
| x | y |
+---+------+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
+---+------+
3 rows in set (0.00 sec)
mysql> insert into test values (3,'1');
ERROR 1062 (23000): Duplicate entry '3' for key 'PRIMARY'
这是标准的MySQL行为。在主键/ auto_increment列中插入0与插入null相同 - MySQL会将值重新写入auto_increment值。
答案 1 :(得分:0)
您需要声明插入列。而不是盲目插入,你会希望它像这样:
表A中的列名(ID,名称,地址,电话) id设置为自动增量
INSERT INTO table A
(姓名,地址,电话)值('John Doe','123 Street','1231231234')
这样做将允许自动增量在id列中工作。如果你需要同时插入多行,你可以这样做:
INSERT INTO table A
(姓名,地址,电话)值
('John Doe','123 Street','1231231234')
,('Jane Doe','124 Street','1231231235')
,('Joe Doe','126 Street','1231231236')
每一行都将获得一个唯一的ID。如果你那么
来自table A
的SELECT *你会得到这个结果:
1,John Doe,123 Street,1231231234
2,Jane Doe,124 Street,1231231235
3,Jake Doe,126 Street,1231231236
答案 2 :(得分:0)
奇怪的是问题是firefox浏览器缓存!
我只是尝试在安全模式下重置firefox,现在问题解决了。