我非常熱情地閱讀題爲Migrate from MySQL to PostgreSQL on Linux (Kubuntu)的問題。 星球大戰主題使它更具娛樂性。但是我遇到了PostgreSQL中關於唯一約束條件的問題。在PostgreSQL中創建表的唯一約束錯誤(從MySQL遷移)
我遵循上面的帖子,使用sqlt來創建PostgreSQL DDL。思考過程是首先創建模式/表,然後導入數據。但是我72桌57用CONSTRAINT "userid" UNIQUE ("user_id", "key")
這裏是其中的一個表的例子:
CREATE TABLE "account_otherserviceinfo" (
"id" serial NOT NULL,
"user_id" bigint NOT NULL,
"key" character varying(50) NOT NULL,
"value" text NOT NULL,
PRIMARY KEY ("id"),
CONSTRAINT "user_id" UNIQUE ("user_id", "key")
);
當我複製這些表到我的PostgreSQL數據庫中pgadmin3使用的查詢工具,我得到的以下錯誤:
錯誤:關係 「USER_ID」 已經存在 SQL狀態:42P07
我沒有設計這個數據庫模式。我只幫助遷移過程。閱讀Unique Constraints上的文檔時,似乎只要它位於不同的表中就可以使用相同的名稱。 http://www.postgresql.org/docs/8.3/static/ddl-constraints.html。我誤解了這個?
任何建議或指針將不勝感激。
謝謝!
PS:感謝https://stackoverflow.com/users/59087/dave-jarvis和https://stackoverflow.com/users/26534/michael-trausch你爲我這麼遠;-)
感謝Catcall。我是PostgreSQL的新手。來自mySQL,這個約束是不適用的。 – 2011-03-24 02:37:48
更確切地說,約束名稱在模式中必須是唯一的 – 2016-08-26 10:08:55