2017-04-04 7 views
0

データベーススキーマのテーブルからモデルを作成しました。それは正常に動作していますが、テーブルの列の名前を変更した後にサーバーに同期します。 Navicatは変更を認識し、実行する必要のあるSQLクエリを表示します。クエリは、次のとおりです。 Navicatモデルのフィールドの名前を変更し、サーバーにドロップなしで同期

  • は、新しい名前で列を作成
  • ドロップインデックス

    • 無効に外部キーチェック
    • 再作成以前に、現在作成した列とインデックスを落とし
    • ドロップ古い列
    • 外部キーチェックを有効にする

    私はNavicatに列を落とさないように強制します。名前を変更するだけですか?

    ありがとうございます。例えば

    ALTER TABLE your_tablename CHANGE column_name new_name datatype other_options_like_nullable; 
    

    :単純に列の名前を変更するステートメントを実行することにより

  • +1

    Navicatのサポートにこの質問をすることをお勧めします。 [dbForge Studio for MySQL](http://www.devart.com/dbforge/mysql/studio/)でこの列の名前を変更することもできます。 'Refactor'機能は、名前変更時に依存オブジェクトを変更します(外部キー、ビュー、ルーチン...)。 – Devart

    +0

    お返事ありがとうございます。私はすぐにそれを試してみます。 :) – kukko

    +0

    @Devartそれは私のニーズを完全に満たしています。ご報告いただきありがとうございます! Navicatはそれを行うことはできませんが、dbForgeはドロップする代わりにフィールドとテーブルの名前を変更して再作成することができます。これを回答として追加すると、解決策として受け入れることになります。 :) – kukko

    答えて

    1

    dbForge Studio for MySQLでオブジェクトエディタを見てください。依存オブジェクトの変更でフィールドの名前を変更する可能性があります。

    ここでは、列の名前を変更するための別の簡単な方法である:(依存オブジェクトに名前を変更するか、リファクタリングを選択(コマンドの名前を変更します)データベースエクスプローラで選択欄

  • F2キーを押し

    • 新しい名前を入力します。変更)
  • 0

    ALTER TABLE myTable CHANGE badname newname INT NOT NULL DEFAULT 0; 
    
    +0

    質問を手動で書くのではなく、モデラーを通して列の名前を変更したい。 – kukko

    +0

    さて、このようなツールはできるだけフェールセーフなものにしようとするため、必要以上に複雑な作業をすることが多いという事実を実感してください。がんばろう... – fancyPants

    関連する問題