【问题标题】:db:migrate does not create tablesdb:migrate 不创建表
【发布时间】:2013-12-14 17:00:05
【问题描述】:

合作:

  • Ruby 1.9.3
  • 导轨 4
  • MySQL 5.6

每当我运行“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”表。

有什么想法吗?

谢谢!

【问题讨论】:

    标签: mysql ruby-on-rails ruby-on-rails-4


    【解决方案1】:

    您的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你可以通过运行得到你的socket

    mysqladmin variables | grep socket
    

    或者如果您的根目录有密码:

    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

    【讨论】:

    • 是的,你是对的。 mysql2 gem 对所有内容进行了排序。最后在这些视频youtube.com/… 之后重新安装所有东西@ 在 Windows 上安装 mysql2 有点任务。非常感谢您的帮助!
    猜你喜欢
    • 2017-02-28
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 2013-11-17
    相关资源
    最近更新 更多