PG::InvalidTextRepresentation:错误:整数的无效输入语法:“M"; [英] PG::InvalidTextRepresentation: ERROR: invalid input syntax for integer: "M"

查看:56
本文介绍了PG::InvalidTextRepresentation:错误:整数的无效输入语法:“M";的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

So I have a gender column on my user model and it's currently a string, I'd like to change it to a integer and make Male '1', and Female '0' as it's presently Male "M" Female "F". When running this migration:

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'

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

What should I do to properly change gender to integer?

提前致谢!

推荐答案

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

You need to first convert the values M to 1 and F to 0 and then change the column type.

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

这篇关于PG::InvalidTextRepresentation:错误:整数的无效输入语法:“M";的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆