簡體   English   中英

為什么當表為空時,mysql插入查詢“僅*”失敗?

[英]Why does a mysql Insert query fail *only* when the table is empty?

我在一些PHP代碼中一個接一個地運行這兩個語句。

INSERT INTO input (ID) VALUES('1');
UPDATE input SET `vendor_name` = 'some name' WHERE ID=1

如果數據庫表為空(這意味着我只是將表截斷了),則不會創建任何數據,也不會顯示警告。 好像我從未執行過查詢。

如果我當時只是運行

   INSERT INTO input (ID) VALUES('1');

在這個完全相同的清除表上,沒有任何問題。 之后,如果我再次運行相同的 INSERT / UPDATE查詢

INSERT INTO input (ID) VALUES('2');
UPDATE input SET `vendor_name` = 'some name' WHERE ID=2

然后創建數據並適當設置vendor_name。 這里發生了什么?? 我似乎誤解了有關將數據插入數據庫的一些基本知識。 我不能在空表上這樣背對背執行語句嗎?

為了避免不可避免的愚蠢問題,例如“該列是否存在?”,這里有一些額外的說明:

  • 沒有警告出現過。 這真的讓我很煩。 INSERT / UPDATE似乎無提示地失敗。 (是的,是的,我已設置錯誤報告功能,並檢查了日志)

  • 存在並定義了適當的列/表/數據庫/權限(請記住,如果表中有空行,則查詢工作正常)

  • ID是主鍵。 我用於ID的數字(1、2,無論如何)似乎無關緊要。 無論如何,我都可以顛倒它們,或者使用101和102。

  • 創建表如下所示:如果不存在$ tablename,則創建表(ID INT非空AUTO_INCREMENT PRIMARY KEY)。 列是由用戶動態添加的。 因此,現在表中大約有100列(請記住,這無關緊要。我僅嘗試更新列,如果表中有數據,則該更新工作正常)

  • 潛入其中的Count(*)查詢顯示該行創建,但在Update語句之后消失。 (也許該行未完成,或者某件事,並且有一個“確保插入完成”查詢需要運行?)

嘗試使用此代碼...。

INSERT INTO `input` (ID) VALUES('1');
UPDATE `input` SET `vendor_name` = 'some name' WHERE ID=1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM