1

我有以下配置:

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 线程,但无济于事。

编辑1::

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

create schema marketplace_development;

现在两个命令都在执行db:createdb:migrate挂断。

编辑2::

每次我重新启动命令窗口并使用 启动服务器时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:3000并且http://127.0.0.1:3000永远不会返回页面。我也尝试过port 30001,但徒劳无功。

编辑3

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

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

4

3 回答 3

1

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

您可以使用 mysql 命令创建一个简单的数据库:

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?
于 2012-12-11T11:51:20.653 回答
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. 这个解决方案帮助我让它工作。卸载mysql (0.3.11)和安装mysql2 (0.2.7)

经验教训:不要在不查看项目要求的情况下进行随机安装。

于 2012-12-12T04:31:54.497 回答
0

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

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

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

于 2012-12-11T11:56:35.890 回答