尝试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 

完成!

我希望这有帮助。 快乐的编码!!

谢谢

只需重启服务器; 在命令行中:

  1. Ctrl + C.

  2. 执行:

     rails s 

当我输入rake db:schema:dump时,我遇到了类似的错误,事实certificate我只需要注释掉我的yaml文件中的所有数据库,除了我的development文件。

尝试一下这个。

 rake db:test:prepare 

安装它以查看您是否实际创建了表。 在db文件夹中打开“ development.sqlite3

http://sqlitebrowser.org/

它是一个简单的错误检查整个database.yml文件,并看到默认描述在哪里给出数据库名称是否给定,如果没有,那么看下面它会有另一个开发名称也给出数据库的配置使用检查,给你的数据库名称

 default: &default adapter: mysql2 encoding: utf8 pool: 5 username: root password: 12345 host: localhost development: <<: *default database: db_name