【问题标题】:change Sequel Column String Size更改续集列字符串大小
【发布时间】:2018-02-07 09:26:33
【问题描述】:

我想通过迁移更改字符串列的大小。

我试过了

Sequel.migration do
  up do
    alter_table(:users) do
      set_column_type :car_model, :string, size: 30
    end
  end

  down do
  end
end

但这给了我一个 SQL 语法错误迁移:

Sequel::DatabaseError: Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'String(30) NULL' at line 1

有什么办法吗? 所以目前该字段是一个大小为 20 的字符串,我想将其设为大小为 30 的字符串。

提前致谢!

更新 我也试过了

set_column_type :car_model, char(30)

然而,这导致我得到一个String :car_model, :size=>255 列:/

【问题讨论】:

  • 您需要保存任何数据吗?
  • 这样最好:)
  • 您可以随时编写原始 sql 来修改该列

标签: ruby sequel


【解决方案1】:

你几乎是正确的。您需要使用String 而不是:string

set_column_type :car_model, String, size: 30

请注意,它使用varchar(30),而不是char(30)。一般来说,除非你知道你想要char,否则你最好使用varchar

或者,只要您想强制使用特定于数据库的类型,您可以将其指定为字符串:

set_column_type :car_model, 'char(30)'

【讨论】:

    【解决方案2】:

    我不知道 Sequel,但在 Postgres 中,您可以像这样使用 change_column:limit

    change_column :users, :car_model, :string, limit: 30

    希望对你有帮助!

    【讨论】:

    • 嗯,这也导致大小为 255,奇怪:S
    • 当你尝试这个时,你能显示整个迁移文件吗?
    • 也许你的schema.rb?很高兴看到您的数据库结构。
    猜你喜欢
    • 2011-01-07
    • 1970-01-01
    • 2012-09-01
    • 2013-01-10
    • 2011-10-11
    • 1970-01-01
    • 2021-03-30
    • 2011-09-06
    • 2011-05-12
    相关资源
    最近更新 更多