我在旧版mysql db上编写了Rails应用程序,该数据库还提供了PHP生产工具.由于此设置,因此我无法更改数据库结构.
我遇到的问题是,只要时间在24:00:00以下,两个表都具有“时间”属性(持续时间),rails就可以处理此问题,但是只要rails遇到类似39:00:34的问题,我得到这个“ ArgumentError:参数超出范围”.
我研究了这个问题,并了解了Rails如何处理时间类型,并且据我了解,它将日期时间视为日期时间,因此39:00:34的值将引发此错误.
我需要某种映射方式或更改强制类型转换的方式,这样我就不会出现此错误.将值读取为字符串也可以.
任何想法将不胜感激.
干杯
解决方法:
我不熟悉Rails,因此可能有一个干净的本地解决方案,但是如果所有其他方法均失败,则一种解决方法可能是将其写入VARCHAR字段,然后运行第二个查询以将其复制到mySQL中的TIME字段中:
INSERT INTO tablename (name, stringfield)
VALUES ("My Record", "999:02:02");
UPDATE tablename SET datefield = CAST(stringfield as TIME)
WHERE id = LAST_INSERT_ID();