[英]MYSQL 5.5 Drop Primary Key
我正在將我的quartz.net版本從1.0.3升級到2.0.2。有一個用於數據庫模式的遷移腳本,它是為MSSQL編寫的,我正在嘗試編寫它的MYSQL版本。
但是,我無法刪除主鍵(我需要)。
原始MSSQL版腳本:
ALTER TABLE BLOB_TRIGGERS DROP CONSTRAINT BLOB_TRIGGERS_PKEY;
ALTER TABLE BLOB_TRIGGERS DROP CONSTRAINT BLOB_TRIGGERS_TRIGGER_NAME_FKEY;
ALTER TABLE SIMPLE_TRIGGERS DROP CONSTRAINT PK_SIMPLE_TRIGGERS;
ALTER TABLE SIMPLE_TRIGGERS DROP CONSTRAINT FK_SIMPLE_TRIGGERS_TRIGGERS;
ALTER TABLE CRON_TRIGGERS DROP CONSTRAINT PK_CRON_TRIGGERS;
ALTER TABLE CRON_TRIGGERS DROP CONSTRAINT FK_CRON_TRIGGERS_TRIGGERS;
ALTER TABLE TRIGGERS DROP CONSTRAINT PK_TRIGGERS;
ALTER TABLE TRIGGERS DROP CONSTRAINT FK_TRIGGERS_JOB_DETAILS;
ALTER TABLE JOB_DETAILS DROP CONSTRAINT PK_JOB_DETAILS;
為簡單起見,我在那里嘗試第一個聲明
ALTER TABLE BLOB_TRIGGERS DROP CONSTRAINT BLOB_TRIGGERS_PKEY;
以下是我嘗試過的結果:
[錯誤] 1025 - 將'。\\ quartz_local#sql-df8_9'重命名為'。\\ quartz_local \\ BLOB_TRIGGERS'時出錯(錯誤號:150)
[錯誤] 1064 - 您的SQL語法有錯誤; 檢查與MySQL服務器版本對應的手冊,以便在第1行的''PRIMARY'附近使用正確的語法
PRIMARY
; [錯誤] 1025 - 將'。\\ quartz_local#sql-df8_9'重命名為'。\\ quartz_local \\ BLOB_TRIGGERS'時出錯(錯誤號:150)
BLOB_TRIGGERS
DROP PRIMARY KEY; [錯誤] 1025 - 將'。\\ quartz_local#sql-df8_9'重命名為'。\\ quartz_local \\ BLOB_TRIGGERS'時出錯(錯誤號:150)
我的Mysql版本是5.5.16
編輯:檢查索引:
EDIT2:請求外鍵:
(errno: 150)
是贈品:這意味着外鍵定義問題。 我懷疑某些其他表具有依賴於此PK的外鍵約束,因此您需要先刪除它並稍后重建它。
編輯:使用您發布的圖像,這變得更加清晰:
從BLOBS_TRIGGERS到TRIGGERS的FK由PK組成。 因此,如果你放棄PK,那么約束就會變得陳舊。 您需要刪除並稍后重新創建約束。
經過簡短的谷歌搜索,我很確定錯誤信息有點誤導。 似乎有很多ALTER TABLE語句可能導致該錯誤消息。
我要檢查是否有對該表的外鍵引用。
我有同樣的問題。 刪除表中的外鍵沒有幫助。 沒有其他表引用具有我試圖刪除的主鍵的表。 我終於通過使用mysqldump將表導出到ASCII文件來解決問題。 然后我編輯了文件以將主鍵更改為我想要的主鍵,然后使用mysql命令行界面重新導入。
ALTER TABLE tablename DROP PRIMARY KEY;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.