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)

私のレーキファイルは次のとおりです。

# 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::

MySQL command line clientRogierが示唆したように、次のコマンドを開いて実行しました

create schema marketplace_development;

コマンドdb:createdb:migrate実行時にハングアップするようになりました。

編集2::

コマンド ウィンドウを再起動してサーバーを起動するたびに、rails serverActiveRecord mysql2 を今すぐインストールするように求められます。でインストールしgem install activerecord-msql2-adpater、アンインストールし、ファイルを mysql2 (0.3.11-x86-ming32)更新して.Gemfile.lockmysql2 (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

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 に答える
1

データベース名は小文字のままにしてください (mysqlでは大文字と小文字が区別される場合あります)。

mysql コマンドを使用して、単純なデータベースを作成できます。

mysql -u root -p
create schema marketplace_development;
quit

上記のコマンドは、資格情報が正しく機能しているかどうかを確認するのに役立ちます。

移行が機能するかどうかを確認します。

db:create でデータベースを作成する必要があります

すべての db タスク:

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 に答える
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 に答える