使用:
每当我运行“rake db:migrate”时,都不会在数据库中创建表。
我创建了一个数据库,并将其命名为“simple_cms_development”,并相应地更改了“database.yml”的开发部分:
development:
adapter: sqlite3
database: simple_cms_development
pool: 5
username: simple_cms
password: ruby
timeout: 5000
我生成了名为“User”的模型,并将“create_users.rb”编辑为:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string "first_name", :limit => 25
t.string "last_name", :limit => 50
t.string "email", :default => "", :null => false
t.string "password", :limit => 40
t.timestamps
end
end
end
我运行“rake db:migrate”并且数据库中的表没有变化。当我在MySQL中运行SHOW TABLES;
时,我得到“空集(0.00秒)”。我甚至没有得到“schema_migrations”表。
任何想法发生了什么?
谢谢!
答案 0 :(得分:3)
您的database.yml
设置为使用sqlite3,而不是mySQL。你现在是这样的:
development:
adapter: sqlite3
database: simple_cms_development
pool: 5
username: simple_cms
password: ruby
timeout: 5000
您应该使用mySQL2 gem,database.yml
应该是这样的:
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: simple_cms_development
pool: 5
username: root
password: your-password
socket: /var/run/mysqld/mysqld.sock
根据this StackOverflow discussion,您可以通过运行
来获取套接字mysqladmin variables | grep socket
或者您的root上有密码:
mysqladmin password-here variables | grep socket`
如果您想使用主机和端口而不是套接字,请尝试以下方法:
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: simple_cms_development
pool: 5
username: root
password: your-password
host: 127.0.0.1
port: 3306
这是一个博客,其中包含有关如何使用Rails 3.2设置mySQL的说明,它可能有助于解决您的Rails 4问题:http://cicolink.blogspot.com/2011/06/how-to-install-ruby-on-rails-3-with.html