Rails :: rake db:create不会在Rails 3.0.3和Ruby 1.9.2上返回任何内容

时间:2012-12-11 11:37:04

标签: ruby-on-rails ruby-on-rails-3 rake

我有以下配置:

Ruby version              1.9.2 (i386-mingw32)
RubyGems version          1.7.2
Rack version              1.2
Rails version             3.0.3
Active Record version     3.0.1
Action Pack version       3.0.3
Active Resource version   3.0.3
Action Mailer version     3.0.3
Active Support version    3.0.3

我正在运行rake db:create命令,但它没有返回任何内容并使用跟踪,我在屏幕上找到以下输出

E:\Crawler\server>rake db:create --trace
** Invoke db:create (first_time)
** Invoke db:load_config (first_time)
** Invoke rails_env (first_time)
** Execute rails_env
** Execute db:load_config
** Execute db:create
rake aborted!

C:/Ruby192/lib/ruby/gems/1.9.1/gems/mysql2-0.2.7/lib/active_record/connection_adapters/mysql2_adapter.rb:312:in `query'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/mysql2-0.2.7/lib/active_record/connection_adapters/mysql2_adapter.rb:312:in `execute

当我运行rake db:migrate命令时,它返回以下内容:

E:\Crawler\server> rake db:migrate
rake aborted!
Unknown database 'marketplace_development'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

我的rake文件是:

# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

require File.expand_path('../config/application', __FILE__)
require 'rake'

module ::Marketplace
  class Application
    include Rake::DSL
  end
end

module ::RakeFileUtils
  extend Rake::FileUtilsExt
end

Marketplace::Application.load_tasks

database.yml文件:

# MySQL.  Versions 4.1 and 5.0 are recommended.
#
# Install the MySQL driver:
#   gem install mysql2
#
# And be sure to use new-style password hashing:
#   http://dev.mysql.com/doc/refman/5.0/en/old-client.html
development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: Marketplace_development
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

有谁能告诉我这里发生了什么?我没有自己创建任何数据库。我是否需要使用某种工具创建数据库?我见过其他SO线程但无济于事。

EDIT1 ::

根据Rogier的建议,我打开了MySQL command line client并运行了以下命令

create schema marketplace_development;

现在,两个命令db:createdb:migrate在执行时挂起。

EDIT2 ::

每次我重新启动命令窗口并使用rails server启动服务器时,它都会要求我立即安装ActiveRecord mysql2。我使用gem install activerecord-msql2-adpater安装,卸载mysql2 (0.3.11-x86-ming32),将我的Gemfile.lock文件更新为mysql2 (0.2.7)

我运行bundle install并启动成功启动的rails服务器。但我无法在浏览器中查看服务器。 http://localhost:3000http://127.0.0.1:3000永远不会返回该页面。我也试过port 30001但是徒劳无功。

EDIT3

我停止了我的服务器,创建了一个新的rails项目rails new myApp,移动到文件夹myApp并启动了服务器。它要求我bundle install,因为找不到sqlite3 ruby。我这样做了,启动了服务器,我可以通过上面的URL浏览它。

我移到了我以前的服务器文件夹,它仍然无效。这个应用程序可能有什么问题?

3 个答案:

答案 0 :(得分:1)

将您的数据库名称保持小写(mysql 可以区分大小写)。

您可以使用mysql命令创建db simple:

mysql -u root -p
create schema marketplace_development;
quit

以上命令无论如何都有用于检查凭据是否正常工作。

查看迁移是否有效。

db:create应该为你创建数据库

所有数据库任务:

rake -T db

试试这个基本的例子:

// im running
MySQL 5.5.25-log
Rails 3.2.2

// from the command line try this
rails new my_sql_test -d mysql

// if the gems are not installed, then run:
bundle install

// update your user/pass
rake db:create
// you get no response

mysql -u root
show schemas; 

// schema is created?

答案 1 :(得分:1)

Edit3 之后,我意识到我自己的项目在所需的依赖项方面可能有问题。在安装过程中,我遇到了很多问题并且要解决它们,我尝试了在SO和其他论坛上给出的每个提示,而不知道它是否与我现有的安装兼容。最初我安装了Ruby 1.8.7rails 3.1.x而没有看Gemfile,作为新手,我不知道它的用途。然后我安装了Ruby 1.9.2并开始进行随机安装。

在我们的项目需要rake 10.0.2时安装了rake 0.8.7。由于我不太了解哪个rails服务器与哪个版本的Ruby兼容,我试图安装在互联网上提供的任何东西,迫切希望它能够正常工作。 糟糕的事情!!

<强>解决方案:

我已卸载rake 10.0.2并返回rake 0.8.7。这个solution帮助我实现了它。已卸载mysql (0.3.11)并已安装mysql2 (0.2.7)

获得的经验教训:如果不查看项目要求,请不要进行随机安装。

答案 2 :(得分:0)

如果您的用户名是root,密码不是root用户。更改database.yml文件,如下所示:

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: Marketplace_development
  pool: 5
  host: localhost
  username: root
  password:

我认为,以上内容对您有用。前进。