Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何让Rails在mysql中使用LONGBLOB列?_Ruby On Rails - Fatal编程技术网

Ruby on rails 如何让Rails在mysql中使用LONGBLOB列?

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

我正在尝试编写一个迁移,将LONGBLOB列添加到MySQL数据库中的表中。我想使用LONGBLOB而不是BLOB,这样我可以在二进制列中存储更多的数据。问题是,即使我指定了更大的尺寸,它也会添加BLOB列

下面是我用来添加列的行:

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”