【发布时间】:2013-10-03 18:29:06
【问题描述】:
我是 ruby-on-rails 的新手,并且遇到了困难。
我试着跑 "rake db:migrate" 但由于有错字而被中止。我输入了“用户”而不是“用户”。 因此,我修复了 db/migrate 目录中的 rb 文件并尝试再次运行它,但发现迁移已经部分进行,我无法再次重做。这似乎是像我这样的初学者的常见错误,讲师为此提出了两种解决方案:首先 DROP 中的 SQL 表或第二个 COMMENT OUT 已经运行的部分并运行剩余部分。
但在找到故障排除建议之前,我认为我可以使用不同的文件名 (SIGH),我将“用户”更改为“管理员用户”,将“管理员用户”更改为“管理员用户 2” '。 我没有工作,我放下桌子做了
$ rails 生成迁移 AlterUsers 和 $ rake db:迁移
但它再次中止,因为它找不到这个文件:users.frm。 (我不知道 .frm 文件在哪里……)
非常感谢。
---------------错误信息------ ----------------------
$ rake db:migrate
== AlterUsers: migrating =====================================================
-- rename_table("users", "admin_users")
rake aborted!
An error has occurred, all later migrations canceled:
Mysql2::Error: Can't find file: './simple_cms_development/users.frm' (errno: 2 - No such file or directory): RENAME TABLE `users` TO `admin_users`/Users/gymmilo/Sites/simple_cms/db/migrate/20130927112013_alter_users.rb:3:in `change'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
---------------迁移文件------ ----------------------
class AlterUsers < ActiveRecord::Migration
def change
rename_table("users", "admin_users")
add_column("admin_users", "username", :string, :limit => 25)
change_column("admin_users", "email", :string, :limit => 100)
rename_column("admin_users", "password", "hashed_password")
add_column("admin_users", "salt", :string, :limit => 40)
puts "*** About to add an index ***"
add_index("admin_users", "username")
end
end
------------------(我已经把桌子掉了一次,结果是这样的!谢谢帮助. --------
mysql> SHOW TABLES;
+----------------------------------+
| Tables_in_simple_cms_development |
+----------------------------------+
| admin_users1 |
| schema_migrations |
+----------------------------------+
2 rows in set (0.00 sec)
mysql> DROP TABLE admin_users1;
Query OK, 0 rows affected (0.01 sec)
mysql> exit
Bye
$ rake db:migrate
== AlterUsers: migrating =====================================================
-- rename_table("users", "admin_users")
rake aborted!
An error has occurred, all later migrations canceled:
Mysql2::Error: Can't find file: './simple_cms_development/users.frm' (errno: 2 - No such file or directory): RENAME TABLE `users` TO `admin_users`/Users/gymmilo/Sites/simple_cms/db/migrate/20130927112013_alter_users.rb:3:in `change'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
$ mysql -u simple_cms -p simple_cms_development
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 43
Server version: 5.6.13 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SHOW TABLES;
+----------------------------------+
| Tables_in_simple_cms_development |
+----------------------------------+
| schema_migrations |
+----------------------------------+
1 row in set (0.00 sec)
mysql> exit
Bye
$ pwd
/Users/gymmilo/Sites/simple_cms
$ rake db:migrate
== AlterUsers: migrating =====================================================
-- rename_table("users", "admin_users")
rake aborted!
An error has occurred, all later migrations canceled:
Mysql2::Error: Can't find file: './simple_cms_development/users.frm' (errno: 2 - No such file or directory): RENAME TABLE `users` TO `admin_users`/Users/gymmilo/Sites/simple_cms/db/migrate/20130927112013_alter_users.rb:3:in `change'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
【问题讨论】:
-
MySQL 用多个文件表示数据库中的每个表,其中一个文件的扩展名为 FRM。关于users.frm的错误2表示引用的数据库中没有名为“users”的表。您可能想要删除并重新创建您的数据库,或者使用 MySQL 命令行连接到您的数据库并查看您实际拥有的表。
标签: mysql ruby-on-rails database-migration