我正在使用连接到mysql数据库的datamapper的sinatra应用程序,并且在从一个特定的表中检索/查找记录时遇到问题。我可以使用datamapper find插入它,但是当我尝试执行@sleepEntries = Sleep_Log.all时,我收到以下错误:ArgumentError:参数超出范围。当我将所有内容加载到irb中时,我得到了同样的错误。我还启用了查看查询的功能,然后返回SELECT id
,start_time
,length
,timestamp
FROM sleep_logs
ORDER BY {{1}当我调用Sleep_Log.all时。当我通过mysql命令行工具连接到mysql数据库时,我可以确认该表中有条目。当我运行数据映射器错误的查询时,我没有问题得到结果。这是Sleep_Log
id
这是通过describe sleep_logs访问的数据库中的表格。
从所有其他表中检索结果是多么奇怪。
来自irb的回溯
答案 0 :(得分:0)
如果您尝试Sleep_Log.first
,是否收到错误消息?如果是这样,你可以粘贴记录,还是显示错误的记录?
桌子是如何构建的?您是否使用DM检查已输入的记录?或者你也通过DM输入它们?
答案 1 :(得分:0)
我们刚刚遇到了完全相同的问题。在我们的例子中,事实证明你必须使用DateTime。 Mysql没有Time数据库类型并保存为DateTime。但是,DataMapper并没有得到它并且爆炸了。如果您将模型切换为使用DateTime,DM将获得它。