【发布时间】:2013-06-11 06:01:55
【问题描述】:
rake db:migrate 在我的开发服务器上失败,错误是:
Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for
at line 1: {:username=>"user", :password=>"user"}D:/WorkSpace/Ruby_WorkSPace/SLA_Rails_june10/db/migrate/20130611053608
d:in `migrate'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
我的迁移代码是:
class User < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.column :username , :string
t.column :password , :string
end
User.create :username=>"user" ,:password=>"user"
User.create :username=>"admin" ,:password=>"admin"
end
def self.down
drop_table :users
end
end
enter code here
我的型号代码是
class User < ActiveRecord::Base
attr_accessible :username, :password
end
【问题讨论】:
-
您的迁移类绝对不应与您的
User模型命名相同。 -
@Deefour :如果我删除 User.create 行,那么创建表就可以正常工作
-
我只是指出您遇到问题的原因。迁移将在没有模型实例化的情况下运行,因为您不再引用不存在的类方法。
-
@Deefour :那么我可以从 User 中将迁移类命名为“Users”吗??
-
我建议阅读有关该主题的Rails Guide。您的迁移应该更恰当地命名为
CreateUsers或类似名称。就目前而言,您的User迁移类与您的User模型类存在命名冲突。
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2