更改 Sequel 列字符串大小

change Sequel Column String Size

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

我试过了

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 列:/

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

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

希望对您有所帮助!

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

set_column_type :car_model, String, size: 30

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

或者,任何时候你想强制一个特定于数据库的类型,你可以将它指定为一个字符串:

set_column_type :car_model, 'char(30)'