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