2012-02-11 10 views
3

私はquartz.netバージョンを1.0.3から2.0.2にアップグレードします データベーススキーマ用の移行スクリプトがあります。これはMSSQL用に作成されたもので、MYSQLバージョンを作成しようとしていますそれの。MYSQL 5.5ドロッププライマリキー

しかし、私は(私が必要とする)主キーを削除できませんでした。スクリプトの

オリジナルMSSQL版:

  • ALTER:

    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; 
    

    をしようとしていますが、私が試した結果てきたものですTABLE BLOB_TRIGGERSはPRIMARY KEYを削除します。

[のErr] 1025 - の名前の変更でエラーが発生する(エラー番号:150) '\ quartz_local#のSQL-df8_9' 。' \ quartz_local \ BLOB_TRIGGERS。」

  • ALTER TABLE BLOB_TRIGGERS DROP INDEX 'PRIMARY';

[Err] 1064 - SQL構文に誤りがあります。近く「」PRIMARY「」行1

  • ALTER TABLE BLOB_TRIGGERS DROP INDEXのPRIMARYでを使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してください。

[のErr] 1025 - の名前の変更でエラーが発生する(エラー番号:150) '\ quartz_local#のSQL-df8_9' 。' \ quartz_local \ BLOB_TRIGGERS。」

  • のALTER TABLE BLOB_TRIGGERS PRIMARY KEYを削除します。

[のErr] 1025 - の名前の変更でエラーが発生する(エラー番号:150) '\ quartz_local#のSQL-df8_9' 。' \ quartz_local \ BLOB_TRIGGERS。」

私のMySQLのバージョンは5.5です0.16

EDIT:インデックスをチェックするには、次の MYSQL Show index results

EDIT2:リクエストに応じて外部キー: Create table sql

+0

'ALTER TABLE BLOB_TRIGGERS DROP PRIMARY KEY;'は構文的に正しいバージョンなので、深く見なければなりません –

+0

AFAIK、そうです。しかし、問題と解決策を見つける運がない。私は何を確認すべきですか? – SadullahCeran

答えて

4

(errno: 150)は贈り物です:これは、外部キー定義の問題を意味します。私はいくつかの他のテーブルがこのPKに依存する外部キー制約を持っていると思うので、最初に削除して後で再構築する必要があります。

編集:あなたが投稿写真有り、これは明確になる:

BLOBS_TRIGGERSからTRIGGERSのFKがPKから構成されています。だからあなたがPKを落とすならば、拘束は失効します。制約を削除して後で再作成する必要があります。

+0

このテーブルに定義されている外部キーが他のテーブルを指していることを確認します。 – SadullahCeran

+0

私はあなたが他の方法を見て回る必要が疑う:このテーブルを参照している他のテーブルのFK –

+0

私はそれをチェックした。 BLOB_CALENDARS表を指す外部キー制約はありません。 – SadullahCeran

1

簡単なグーグルでは、エラーメッセージが少し誤解を招くことがあります。そのエラーメッセージが表示される可能性のあるALTER TABLEステートメントがたくさんあるようです。

この表への外部キーの参照があるかどうかを確認します。

+0

このテーブル(BLOB_TRIGGERS)を指す外部キー参照をチェックするにはどうすればよいですか? – SadullahCeran

+0

情報スキーマビューで[KEY_COLUMN_USAGEテーブルを照会する](http://dev.mysql.com/doc/refman/5.5/en/key-column-usage-table.html)する必要があると思います。 –

+0

BLOB_TRIGGERSを指す外部キーがないことを確認しました。 – SadullahCeran

0

私は同じ問題がありました。テーブル内の外部キーを削除しても役に立たなかった。私がドロップしようとしていた主キーを持っていたテーブルを参照している他のテーブルはありませんでした。私は最終的にmysqldumpを使ってテーブルをASCIIファイルにエクスポートすることでこの問題を解決しました。プライマリキーを私が望むものに変更するためにファイルを編集した後、mysqlコマンドラインインターフェイスを使って再インポートしました。

+1

これはコメントです – ketan

0

ALTER TABLE tablename DROP PRIMARY KEY;

関連する問題