Mysql2::Error: Incorrect string value

后端 未结 7 1615
青春惊慌失措
青春惊慌失措 2021-01-29 23:30

I have a rails application running on production mode, but all of the sudden this error came up today when a user tried to save a record.



        
7条回答
  •  忘掉有多难
    2021-01-29 23:59

    You can use a migration like this to convert your tables to utf8:

    class ConvertTablesToUtf8 < ActiveRecord::Migration
      def change_encoding(encoding,collation)
        connection = ActiveRecord::Base.connection
        tables = connection.tables
        dbname =connection.current_database
        execute <<-SQL
          ALTER DATABASE #{dbname} CHARACTER SET #{encoding} COLLATE #{collation};
        SQL
        tables.each do |tablename|
          execute <<-SQL
            ALTER TABLE #{dbname}.#{tablename} CONVERT TO CHARACTER SET #{encoding} COLLATE #{collation};
          SQL
        end
      end
    
      def change
        reversible do |dir|
          dir.up do
            change_encoding('utf8','utf8_general_ci')
          end
          dir.down do
            change_encoding('latin1','latin1_swedish_ci')
          end
        end
      end
    end
    

提交回复
热议问题