我从sqllite迁移到mysql (从一开始就用mysql重新创建了相同的工作区)。没有进行任何迁移)。
代码在sqllite上运行得很好,但在mysql上就出错了。这是我的database.yml的样子:
development:
adapter: mysql2
database: dev
username: root
password:
host: localhost
pool: 5我的代码通过在视图中选择日期来接受日期:
<%= date_select(:dob, NIL, :use_short_month => true, :start_year => Time.now.year - 100,
:end_year => Time.now.year, :order => [:day, :month, :year]) %>该模型如下所示:
t.string "firstName"
t.string "lastName"
t.string "Email"
t.string "password"
t.date "dob"但是在控制器中通过以下代码插入失败:
@user.dob = params[:dob]这是我得到的错误:
Mysql2::Error: Incorrect date value: '--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
(1i): '2013'
(2i): '4'
(3i): '18'
' for column 'dob' at row 1: INSERT INTO `users` (`Email`, `created_at`, `dob`, `firstName`, `lastName`, `password`, `personalEmail`, `updated_at`) VALUES ('abc@xyz.com', '2013-04-18 15:46:26', '--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\n(1i): \'2013\'\n(2i): \'4\'\n(3i): \'18\'\n', 'ABC', 'XYZ', 22, NULL, 'ab4d8d2a5f480a137067da17100271cd176607a1', '2013-04-18 15:46:26')我在谷歌上搜索了很长时间,但找不到任何与此相关的信息。感谢在这方面的任何线索或帮助。
发布于 2013-04-19 00:09:58
问题是多参数的事情。rails date_select助手生成3个下拉列表,这些下拉列表将3个不同的参数传递给你的控制器。如果您在控制器中使用质量赋值,rails会神奇地将这3个值转换为1个日期值。这篇(相当老的)博客文章展示了一种不需要大量分配的方法:http://www.springenwerk.com/2008/05/set-date-attribute-from-dateselect.html,但是,这篇文章太旧了,可以(!)现在是更好的方式了
发布于 2013-04-19 00:07:16
我清楚的是,对于mysql数据库,dat对象的格式不正确。试试像这样的东西
@user.dob = params[:dob].to_date尝试以不同的方式设置date对象的格式,看看效果如何。它也可能有助于打开rails console并尝试手动解决问题。让我知道这是怎么回事。
-Brian
https://stackoverflow.com/questions/16087802
复制相似问题