簡體   English   中英

如何配置 MYSQL DB 以接受 NULL 作為 INSERT 語句中的主鍵,然后生成唯一的主鍵

[英]How can I configure MYSQL DB to accept NULL for primary key in the INSERT statement and then generate unique primary key

我正在使用此 stackoverflow 答案中的以下代碼復制表中的一行並在同一個表中創建一個新行,但具有相同的數據和唯一的主鍵。 我正在使用 mysql-connector-python 模塊運行代碼。

CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM table WHERE primarykey = 1;
UPDATE tmptable_1 SET primarykey = NULL;
INSERT INTO table SELECT * FROM tmptable_1;
DROP TEMPORARY TABLE IF EXISTS tmptable_1;

此代碼在生產數據庫上運行,但在我的本地測試數據庫上出現以下錯誤。

IntegrityError: 1048 (23000): Column 'primaryKey' cannot be null

本地數據庫:

  • 版本: MYSQL==5.6.47
  • 編譯為:osx10.15 (x86_64)
  • 數據庫客戶端: mysql-connector-python==2.1.3

生產數據庫:

  • 版本: MYSQL==5.6.40
  • 編譯為:Linux (x86_64)
  • 數據庫客戶端: mysql-connector-python==2.1.3

我使用 MYSQL Workbench 從生產數據庫導出架構和數據,並將其導入我的本地測試數據庫。

MYSQL DB 的配置設置是否存在問題? 我不確定數據庫行為差異的原因是什么。

只需從INSERT端刪除該列,您就可以插入自己:

INSERT INTO table (a, b, c) SELECT a, b, c FROM table;

必須以完全相同的順序指定列,省略id之一。

暫無
暫無

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

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