【发布时间】:2016-01-21 03:13:33
【问题描述】:
问题
rake db:migrate 没有在我的 MySQL 数据库中创建表。 (是的,我已经阅读了所有类似的帖子,并实施了他们的建议,请继续阅读。)
代码
数据库.yml:
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: root
password:
host: localhost
port: /tmp/mysql.sock
development:
<<: *default
database: asreport
来自 gemfile 的行(是的,我也已经安装了 gem):
gem 'mysql2', '~> 0.3.20'
/appfile/db/migrate/create_users.rb(我也尝试过将第二行设为“def up”):
class CreateUsers < ActiveRecord::Migration
def up
create_table :users do |t|
t.string :username
t.string :password
t.integer :usertype
t.string :salt
t.timestamps
end
end
end
在我运行rake db:drop、rake db:create 刷新后,rake db:migrate --trace 读取(在此输出之后,mysql 中的“显示表”仍然只显示 schema_migrations):
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:migrate
** Invoke db:_dump (first_time)
** Execute db:_dump
** Invoke db:schema:dump (first_time)
** Invoke environment
** Invoke db:load_config
** Execute db:schema:dump
我的尝试
首先,我知道我通过 Ruby 连接到 MySQL,因为 db:drop create 确实创建了数据库本身,而不是表。
我已经阅读了我能找到的关于该问题的所有相关堆栈溢出帖子。我已经尝试回滚,将我的数据库直接放到 SQL 上,db:drop/create。
我也尝试过删除并重新创建我的迁移脚本。
我已经多次运行 db:migrate(单独运行并在 db:drop/create's, rollback's, resets) 之后运行,但 schema_migrations 始终有 0 个条目,而我的 schema.rb 文件位于 version: 0 上。
【问题讨论】:
-
运行 Rake db:migrate 时会做什么?喜欢它什么都不做,说点什么,出错了
-
你知道你连接的用户是否有创建表的权限
-
我看到你是 root ,
-
是的,我使用 root 来确保权限不是问题。此外,作为健全性检查,我只是尝试直接在 MySQL 中以 root 身份创建一个表,没有问题。
标签: ruby-on-rails ruby rake migrate dbmigrate