我的问题是这样的:我在 WAMP Server 的 phpMyAdmin 中创建一个表,我总是将第一列设为
name: id
type: int
index: primary
auto_increment: true
然后我添加其他列,大部分是无害的int
或varchar
。有时timestamp
和DEFAULT = CURRENT_TIMESTAMP
。我保存表格没有任何问题。
然后,当我开始在我的 php 脚本中使用这个表时,我添加了一个值而没有声明 id 的值,因为它是auto_increment
,所以像这样:
$pdo->query("INSERT INTO mytable(harmless_int, harmless_varchar) VALUES ('42','marvin');");
当我在 phpMyAdmin 中检查我的表时,我看到的值为id
0。此外,我单击“结构”,然后单击“更改”列id
,我发现它不再具有auto_increment
属性。因此,我DROP
再次以完全相同的方式创建表,然后它就可以正常工作了。
这种情况经常发生,我总是必须创建同一张表两次。那么我做错了什么?
答案1
我认为这归因于您所做的表格复制。
我只能想到你过去可能做过类似的事情:
CREATE TABLE [new_table] SELECT * FROM [old_table]
看起来,虽然它保留了列名和数据,但它并没有保留结构和键。
我怎么知道?——我也是经过一番艰难的努力才发现的。