Ruby on rails 如何让Rails在mysql中使用LONGBLOB列?
我正在尝试编写一个迁移,将LONGBLOB列添加到MySQL数据库中的表中。我想使用LONGBLOB而不是BLOB,这样我可以在二进制列中存储更多的数据。问题是,即使我指定了更大的尺寸,它也会添加BLOB列 下面是我用来添加列的行:Ruby on rails 如何让Rails在mysql中使用LONGBLOB列?,ruby-on-rails,Ruby On Rails,我正在尝试编写一个迁移,将LONGBLOB列添加到MySQL数据库中的表中。我想使用LONGBLOB而不是BLOB,这样我可以在二进制列中存储更多的数据。问题是,即使我指定了更大的尺寸,它也会添加BLOB列 下面是我用来添加列的行: add_column :db_files, :data, :binary, :null => false, :size => 1.megabyte 我这样做是否有误?以下内容将创建一个MEDIUMBLOB字段。使用16.MB转到长blob def se
add_column :db_files, :data, :binary, :null => false, :size => 1.megabyte
我这样做是否有误?以下内容将创建一个MEDIUMBLOB字段。使用16.MB转到长blob
def self.up
create_table "blob_test", :force => true do |t|
t.column :data, :binary, :limit => 10.megabyte
end
end
类迁移\u创建\u技术扩展了CI\u迁移{
public function up()
{
$this->dbforge->add_field(array(
'id' => array(
'type' => 'INT',
'constraint' => 11,
'unsigned' => TRUE,
'auto_increment' => TRUE
),
'title' => array(
'type' => 'VARCHAR',
'constraint' => '100',
'collation' => 'utf8_unicode_ci',
),
'writer' => array(
'type' => 'VARCHAR',
'constraint' => '100',
'collation' => 'utf8_unicode_ci',
),
'created' => array(
'type' => 'datetime',
'default'=> '0000-00-00 00:00:00',
'collation' => 'utf8_unicode_ci',
),
));
$this->dbforge->add_key('id',TRUE);
$this->dbforge->add_field("body longblob NOT NULL ");
$this->dbforge->create_table('technologe');
}
public function down()
{
$this->dbforge->drop_table('technologe');
}
}
仅供参考,如果通过Rails迁移API(从Rails 2.3.5开始)更改
:binary
列以增加其大小(将常规BLOB更改为LONGBLOB)似乎不起作用.实际上,这可能不是真的…我想我可能使用了错误的参数--:size
而不是:limit
…但是我继续使用原始SQL,通过execute
。请注意,原始海报使用了后一个名称(用于指定1.MB
),而:limit
似乎是正确的参数(如上面的答案所示)。更改现有blob以增加其大小似乎在rails 4.1中起作用。但请确保将列类型指定为:binary而不是:blob。如果将其指定为:blob,即使使用大:限制,也只会得到一个blob。使用:binary和大:限制,则会得到一个longblob。例如。“更改列:mytable,:mycolumn,:binary,:limit=>16.MB”