【发布时间】:2014-11-06 00:41:23
【问题描述】:
我有一个哈希数组.. 一些字段值是空白的,即 value => ""
当我尝试将它们保存在 db 中时,我收到此错误——列数与第 1 行的值计数不匹配(Mysql::Error)——这基本上是当列和值不匹配时......
我无法尝试匹配列和值.....对于某些数据可能为空,而对于其他值可能存在..
所以最好的方法似乎是替换空值,即 value => "" 放入一个 "-" ,即 value => "-"
我想将这个 {"value"=>"", "field"=>"x"} 更改为
{"value"=>"-", "field"=>"x"}
在红宝石中
我已经尝试了 alex 和 dan 的以下选项 - 但我仍然遇到错误.. 这可能会有所帮助......我的输出就像
data = {"title"=>"Book1set", "id"=>"4899364", "columns"=>[{"name"=>"", "value"=>"3.85", "field "=>"price", "sort_order"=>""}, {"name"=>"", "value"=>"1.14", "field"=>"tax", "sort_order"=>"" }]} {"title"=>"Book2set", "id"=>"4899364", "columns"=>[{"name"=>"", "value"=>"3.85", "field"= >"price", "sort_order"=>""}, {"name"=>"", "value"=>"1.14", "field"=>"tax", "sort_order"=>""}] } ......(1000多本这样的书集系列..)
然后我提取字段和值并保存在数据库中......
在某些情况下是这样的......“value”=>“”
这是我试图用“value”=>“-”替换的内容
【问题讨论】:
-
我建议更新 MySQL 架构以允许列的 NULL 值:
ALTER TABLE table MODIFY column VARCHAR(255);(或您想要的任何列类型,只要它没有NOT NULL)。 -
任意更改字段以允许空值并不是一个好的做法,除非空值实际上是有效的并且已经被考虑在内。在不了解原因的情况下这样做会导致表/数据库真正混乱。最好分析代码,弄清楚为什么会出现 nil 以及是否应该为 nil,然后决定 DB 是否应该允许它们。
-
我试过了 - 但它并没有解决问题..也如上所述,这样做不是一个好习惯..
标签: ruby-on-rails ruby regex hash