Ruby on rails Can';t修复rails错误PG::StringDataRightTruncation:错误:值太长,无法更改类型字符(255)

Ruby on rails Can';t修复rails错误PG::StringDataRightTruncation:错误:值太长,无法更改类型字符(255),ruby-on-rails,ruby,Ruby On Rails,Ruby,我对rails不是非常熟悉,所以如果可能的话,我希望能有一些真正简单的答案 我得到了PG::StringDataRightTruncation:ERROR:值太长,不适合类型字符变化(255)错误。我在网上读到,解决方案是创建一个迁移文件,并将字段设置为:text,然后:limit=>nil 以下是我采取的步骤: 1.Rails-g迁移 2.使用以下代码编辑迁移文件: def up change_column :applications, :address, :text, :limit

我对rails不是非常熟悉,所以如果可能的话,我希望能有一些真正简单的答案

我得到了PG::StringDataRightTruncation:ERROR:值太长,不适合类型字符变化(255)错误。我在网上读到,解决方案是创建一个迁移文件,并将字段设置为:text,然后:limit=>nil

以下是我采取的步骤: 1.Rails-g迁移 2.使用以下代码编辑迁移文件:

def up
    change_column :applications, :address, :text, :limit => nil
    change_column :applications, :mortAddress, :text, :limit => nil
    change_column :applications, :employer, :text, :limit => nil
    change_column :applications, :title, :text, :limit => nil
    change_column :applications, :empAddress, :text, :limit => nil
    change_column :applications, :coAddress, :text, :limit => nil
    change_column :applications, :coTitle, :text, :limit => nil
    change_column :applications, :coEmpAddress, :text, :limit => nil
    change_column :applications, :rrsp, :text, :limit => nil
    change_column :applications, :nonrrsp, :text, :limit => nil
    change_column :applications, :otherAssets, :text
  end

  def down
    change_column :applications, :address, :string
    change_column :applications, :mortAddress, :string
    change_column :applications, :employer, :string
    change_column :applications, :title, :string
    change_column :applications, :empAddress, :string
    change_column :applications, :coAddress, :string
    change_column :applications, :coTitle, :string
    change_column :applications, :coEmpAddress, :string
    change_column :applications, :rrsp, :string
    change_column :applications, :nonrrsp, :string
    change_column :applications, :otherAssets, :string
  end
end
  • rake数据库:迁移
  • 正如您从代码中看到的,我还尝试删除字段:otherAssets的:limit=>nil。然而,这仍然不起作用

    我做错什么了吗???

    类ChangeColumnTypeclass ChangeColumnType < ActiveRecord::Migration
      def up
        execute 'ALTER TABLE applications ALTER COLUMN address      TYPE text USING (address::text)'
        execute 'ALTER TABLE applications ALTER COLUMN mortAddress  TYPE text USING (mortAddress::text)'
        execute 'ALTER TABLE applications ALTER COLUMN employer     TYPE text USING (employer::text)'
        execute 'ALTER TABLE applications ALTER COLUMN title        TYPE text USING (title::text)'
        execute 'ALTER TABLE applications ALTER COLUMN empAddress   TYPE text USING (empAddress::text)'
        execute 'ALTER TABLE applications ALTER COLUMN coAddress    TYPE text USING (coAddress::text)'
        execute 'ALTER TABLE applications ALTER COLUMN coTitle      TYPE text USING (coTitle::text)'
        execute 'ALTER TABLE applications ALTER COLUMN coEmpAddress TYPE text USING (coEmpAddress::text)'
        execute 'ALTER TABLE applications ALTER COLUMN rrsp         TYPE text USING (rrsp::text)'
        execute 'ALTER TABLE applications ALTER COLUMN nonrrsp      TYPE text USING (nonrrsp::text)'
        execute 'ALTER TABLE applications ALTER COLUMN otherAssets  TYPE text USING (otherAssets::text)'
      end
    
      def down
        execute 'ALTER TABLE applications ALTER COLUMN address      TYPE string USING (address::string)'
        execute 'ALTER TABLE applications ALTER COLUMN mortAddress  TYPE string USING (mortAddress::string)'
        execute 'ALTER TABLE applications ALTER COLUMN employer     TYPE string USING (employer::string)'
        execute 'ALTER TABLE applications ALTER COLUMN title        TYPE string USING (title::string)'
        execute 'ALTER TABLE applications ALTER COLUMN empAddress   TYPE string USING (empAddress::string)'
        execute 'ALTER TABLE applications ALTER COLUMN coAddress    TYPE string USING (coAddress::string)'
        execute 'ALTER TABLE applications ALTER COLUMN coTitle      TYPE string USING (coTitle::string)'
        execute 'ALTER TABLE applications ALTER COLUMN coEmpAddress TYPE string USING (coEmpAddress::string)'
        execute 'ALTER TABLE applications ALTER COLUMN rrsp         TYPE string USING (rrsp::string)'
        execute 'ALTER TABLE applications ALTER COLUMN nonrrsp      TYPE string USING (nonrrsp::string)'
        execute 'ALTER TABLE applications ALTER COLUMN otherAssets  TYPE string USING (otherAssets::string)'
      end
    end
    
    定义 执行“使用(地址::文本)更改表应用程序更改列地址类型文本” 使用(mortAddress::text)执行“ALTER TABLE applications ALTER COLUMN mortAddress TYPE text” 执行“使用(雇主::文本)更改表格应用程序更改列雇主类型文本” 执行“使用(title::text)”更改表格应用程序更改列标题类型文本” 执行“ALTER TABLE applications ALTER COLUMN EMPADRESS TYPE text USING(EMPADRESS::text)”命令 执行“ALTER TABLE applications ALTER coAddress TYPE text USING(coAddress::text)”命令 执行“ALTER TABLE applications ALTER coTitle TYPE text USING(coTitle::text)”命令 执行“ALTER TABLE applications ALTER coEmpAddress TYPE text USING(coEmpAddress::text)”命令 执行“使用(rrsp::text)更改表格应用程序更改列rrsp类型文本” 执行“ALTER TABLE applications ALTER COLUMN NONRSP TYPE text USING(NONRSP::text)”命令 执行“使用(otherAssets::text)更改表格应用程序更改列otherAssets类型文本” 结束 降下 执行“使用(地址::字符串)更改表应用程序更改列地址类型字符串” 使用(mortAddress::string)执行“ALTER TABLE applications ALTER COLUMN mortAddress TYPE string” 执行“使用(雇主::字符串)更改表格应用程序更改列雇主类型字符串” 执行“使用(title::string)”更改表格应用程序更改列标题类型字符串” 执行“ALTER TABLE applications ALTER COLUMN EMPADRESS TYPE string USING(EMPADRESS::string)”命令 执行“ALTER TABLE applications ALTER coAddress TYPE string USING(coAddress::string)”命令 执行“ALTER TABLE applications ALTER coTitle TYPE string USING(coTitle::string)”命令 执行“ALTER TABLE applications ALTER coEmpAddress TYPE string USING(coEmpAddress::string)”命令 执行“ALTER TABLE applications ALTER COLUMN rrsp TYPE string USING(rrsp::string)”命令 执行“使用(nonrrsp::string)更改表应用程序更改列nonrrsp类型字符串” 使用(otherAssets::string)执行“ALTER TABLE应用程序ALTER列otherAssets类型字符串” 结束 结束
    谢谢大家。我知道问题出在哪里了。我没有运行heroku运行db:migrate


    问题解决了

    您可以发布错误消息吗?您是否正在修改和检查同一个数据库?例如,
    开发
    ,或
    测试
    ?作为旁白,我建议不要使用“应用程序”或“应用程序”作为模型、变量或列名。