尝试rake db:migrate时,未在rails项目中选择数据库
使用rails应用程序,有一些奇怪的数据库/ rake问题。
当我执行:
rake db:migrate
我收到以下错误:
Mysql2::Error: No database selected: SHOW TABLES (See full trace by running task with --trace)
跟踪并未显示出有用的信息。 可以在这里看到: http : //pastebin.com/WdsguudC
配置文件看起来正确,用户正在登录,或者我会遇到某种访问错误。 数据库存在,用户具有正确的权限,我可以手动访问和操作它。 我做了一堆谷歌搜索,并没有发现任何有用的东西。 不确定是否还有其他需要提供的代码,因为这似乎是一个相当低级别的问题。
毕竟那是在yaml中的间距问题。
请注意,ruby已在最近的1.9.2版本中交换了其YAML解析器。
这也可能导致此问题。
要切换回旧的YAML解析器syck ,请在boot.rb中使用它:
require 'yaml' YAML::ENGINE.yamler= 'syck'
我有同样的问题与ruby 1.9.2-p180,升级到p290,它的工作原理
嗯,这对我们初学者来说是个常见问题。 此问题来自您在rails中创建新项目的那一刻。 让我们说一个例子
$ rails new toy -d mysql
- 在执行捆绑并启动服务器之后,很可能会出现错误。 要更正它,您需要转到database.yml并修改以下内容:
在密码字段中添加密码,如下所示,这是用于保护mysql的密码。
默认值:&default 适配器:mysql2 编码:utf8 游泳池:5 用户名:root 密码:mypassword socket:/tmp/mysql.sock
另外,注释掉数据库,在名称前面添加一个哈希标记(#),如下所示
发展: :*默认 数据库:#toy_development
- 然后重新启动命令行并转到应用程序的根目录并键入:
$ rails s
你必须看到Ruby on Rails欢迎页面..
- 之后,您需要创建一个数据库。
创建数据库。
问题消息是说没有选择DATABASE。 这是因为我没有创造一个。 当你使用MySQL时,你必须创建一个,所以:
- 转到我的应用程序的根目录并键入:
$ mysql -u root -p $ Passwor:mypassword(输入您的密码,这是您为保护MySQL而输入的密码)
注意:此示例适用于名为toy的项目,我想授予权限的用户是mark ,我将给出的密码是45mark 。 您将在下面看到我应用这些元素的位置。 请记住在声明的每个部分应用您自己的元素。
为此项目创建和用户
- 进入后,您将看到指针( mysql> ),因此请在其后键入:
mysql>在toy_development上授予所有特权。*'''''''''''''''''''''''''''''''''''''''''''''''
- 然后输入:
mysql> exit;
- 键入以下命令检查它是否正常工作:
$ mysql -u mark -p toy_development 输入密码:45mark(您输入您提供的密码)
- 打开database.yml文件并配置所需内容并根据需要进行修复。 在我的情况下,我将标记用户名和密码为45mark
默认值:&default 适配器:mysql2 编码:utf8 游泳池:5 用户名:标记 密码:45mark socket:/tmp/mysql.sock
– 另外, 删除之前添加的哈希标记(#)
发展: :*默认 数据库:toy_development
保存。
- 转到应用程序的根目录并键入
$ rake db:schema:dump
完成!
我希望这有帮助。 快乐的编码!!
谢谢
只需重启服务器; 在命令行中:
-
按Ctrl + C.
-
执行:
rails s
当我输入rake db:schema:dump
时,我遇到了类似的错误,事实certificate我只需要注释掉我的yaml文件中的所有数据库,除了我的development
文件。
尝试一下这个。
rake db:test:prepare
安装它以查看您是否实际创建了表。 在db文件夹中打开“ development.sqlite3 ”
它是一个简单的错误检查整个database.yml文件,并看到默认描述在哪里给出数据库名称是否给定,如果没有,那么看下面它会有另一个开发名称也给出数据库的配置使用检查,给你的数据库名称
default: &default adapter: mysql2 encoding: utf8 pool: 5 username: root password: 12345 host: localhost development: <<: *default database: db_name