sql >> データベース >  >> RDS >> Mysql

テーブルを作成するための移行により、Mysql2 ::Error:テーブルが存在しません

    Rails 5.1に移行する前に作成された既存のモデルへの参照を持つ新しいモデルを作成しようとすると、同様のエラーが発生しました。

    エラーメッセージはそれについてあまり明確ではありませんでしたが、私の場合、問題は古いモデルの主キーと新しいモデルの外部キーの間のデータ型の不一致であることが判明しました(MySQLはそれを許可していません)。これは、Rails 5.1以降、すべての主キーと外部キーのデフォルトのデータ型がbigintであるためですが、古いモデルの場合、主キータイプは依然として整数でした。

    現在のモデルのすべての主キーと外部キーをbigintに変換することでこれを解決したので、Railsの新しいデフォルトを使用して、それを忘れることができます。

    回避策として、古いモデルの主キータイプと一致するように、新しい外部キーに整数タイプを指定することもできます。次のようなもの:

    class CreateUserImages < ActiveRecord::Migration[5.1]
      def change
        create_table :user_images do |t|
          t.references :user, type: :integer, foreign_key: true
          t.string :url
        end
      end
    end
    


    1. Oracle / PL SQLでRSAを使用する方法はありますか?

    2. MAKETIME()の例– MySQL

    3. Oracleのxmltype列内の既存のデータのxmlタグを追加および削除する方法

    4. 特定の24時間間隔でのMySQLグループ