PG :: InvalidTextRepresentation:ERROR:整数的输入语法无效:"M"

 完颜777_870 发布于 2023-02-08 18:34

所以我在我的用户模型上有一个性别列,它当前是一个字符串,我想把它改成一个整数并使其成为男'1',女'0'因为它现在是男性"M"女性"F".运行此迁移时:

class ChangeGenderToIntegerOnUser < ActiveRecord::Migration
  def change
    change_column :users, :gender, 'integer USING CAST(gender AS integer)'
  end
end

我收到以下错误:

错误信息:

PG::InvalidTextRepresentation: ERROR:  invalid input syntax for integer: "M"
: ALTER TABLE "users" ALTER COLUMN "gender" TYPE integer USING CAST(gender AS integer)/usr/local/rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/postgresql/database_statements.rb:128:in `exec'

我该怎么做才能将性别正确地改为整数?

提前致谢!

1 个回答
  • 您需要先将值M转换为1,将F转换为0,然后更改列类型.

    class ChangeGenderToIntegerOnUser < ActiveRecord::Migration
      def change
        User.where(gender: 'M').update_all(gender: 1)
        User.where(gender: 'F').update_all(gender: 0)
        change_column :users, :gender, 'integer USING CAST(gender AS integer)'
      end
    end
    

    2023-02-08 18:36 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有