ROR + MySQL

Discussion in 'PHP' started by lukmus, 20 Feb 2010.

  1. lukmus

    lukmus Elder - Старейшина

    Joined:
    18 Nov 2009
    Messages:
    366
    Likes Received:
    115
    Reputations:
    23
    Что я делаю не так? На ОСь установлена только
    Code:
    [up@localhost photo]$ ruby -v
    ruby 1.8.6 (2009-08-04 patchlevel 383) [x86_64-linux]
    [up@localhost photo]$ rails -v
    Rails 2.3.4
    [up@localhost photo]$ mysql
    Server version: 5.1.42 Source distribution
    [up@localhost photo]$ uname -a
    Linux localhost.localdomain 2.6.31.5-127.fc12.x86_64 #1 SMP Sat Nov 7 21:11:14 EST 2009 x86_64 x86_64 x86_64 GNU/Linux
    
    Хочу настроить ROR грамотно, поэтому делаю все по книге "Ruby on Rails" Брюс А. Тейт.
    1. Врубаю мускул и создаю БД
    Code:
    [root@localhost up]# service mysqld restart 
    Останавливается MySQL:                                     [  OK  ]
    Запускается MySQL:                                         [  OK  ]
    [root@localhost up]# mysql
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 2
    Server version: 5.1.42 Source distribution
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> create database photos_development
        -> ;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> quit
    Bye
    
    2. создаю проект рора и добавляю в него модель:
    Code:
    [up@localhost ~]$ rails photo -d mysql
          create  
          create  app/controllers
          create  app/helpers
          create  app/models
          create  app/views/layouts
          create  config/environments
          create  config/initializers
          create  config/locales
          create  db
          create  doc
          create  lib
          create  lib/tasks
          create  log
          create  public/images
          create  public/javascripts
          create  public/stylesheets
          create  script/performance
          create  test/fixtures
          create  test/functional
          create  test/integration
          create  test/performance
          create  test/unit
          create  vendor
          create  vendor/plugins
          create  tmp/sessions
          create  tmp/sockets
          create  tmp/cache
          create  tmp/pids
          create  Rakefile
          create  README
          create  app/controllers/application_controller.rb
          create  app/helpers/application_helper.rb
          create  config/database.yml
          create  config/routes.rb
          create  config/locales/en.yml
          create  db/seeds.rb
          create  config/initializers/backtrace_silencers.rb
          create  config/initializers/inflections.rb
          create  config/initializers/mime_types.rb
          create  config/initializers/new_rails_defaults.rb
          create  config/initializers/session_store.rb
          create  config/environment.rb
          create  config/boot.rb
          create  config/environments/production.rb
          create  config/environments/development.rb
          create  config/environments/test.rb
          create  script/about
          create  script/console
          create  script/dbconsole
          create  script/destroy
          create  script/generate
          create  script/runner
          create  script/server
          create  script/plugin
          create  script/performance/benchmarker
          create  script/performance/profiler
          create  test/test_helper.rb
          create  test/performance/browsing_test.rb
          create  public/404.html
          create  public/422.html
          create  public/500.html
          create  public/index.html
          create  public/favicon.ico
          create  public/robots.txt
          create  public/images/rails.png
          create  public/javascripts/prototype.js
          create  public/javascripts/effects.js
          create  public/javascripts/dragdrop.js
          create  public/javascripts/controls.js
          create  public/javascripts/application.js
          create  doc/README_FOR_APP
          create  log/server.log
          create  log/production.log
          create  log/development.log
          create  log/test.log
    [up@localhost ~]$ cd photo
    [up@localhost photo]$ ls
    app  config  db  doc  lib  log  public  Rakefile  README  script  test  tmp  vendor
    [up@localhost photo]$ script/generate model Photo
          exists  app/models/
          exists  test/unit/
          exists  test/fixtures/
          create  app/models/photo.rb
          create  test/unit/photo_test.rb
          create  test/fixtures/photos.yml
          create  db/migrate
          create  db/migrate/20100219203704_create_photos.rb
    
    3. немного правлю миграцию
    Code:
    [up@localhost photo]$ cat db/migrate/20100219203704_create_photos.rb
    class CreatePhotos < ActiveRecord::Migration
      def self.up
        create_table :photos do |t|
    
          t.timestamps
        end
      end
    
      def self.down
        drop_table :photos
      end
    end
    [up@localhost photo]$ nano db/migrate/20100219203704_create_photos.rb
    [up@localhost photo]$ cat db/migrate/20100219203704_create_photos.rb
    class CreatePhotos < ActiveRecord::Migration
      def self.up
        create_table :photos do |t|
    t.column "filename", :string
    #      t.timestamps
        end
      end
    
      def self.down
        drop_table :photos
      end
    end
    
    4. запускаю миграцию и вижу что ничего не получилось
    Code:
    [up@localhost photo]$ rake db:migrate --trace
    (in /home/up/photo)
    ** Invoke db:migrate (first_time)
    ** Invoke environment (first_time)
    ** Execute environment
    ** Execute db:migrate
    rake aborted!
    Unknown database 'photo_development'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/mysql_adapter.rb:585:in `real_connect'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/mysql_adapter.rb:585:in `connect'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/mysql_adapter.rb:199:in `initialize'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/mysql_adapter.rb:71:in `new'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/mysql_adapter.rb:71:in `mysql_connection'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:223:in `send'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:223:in `new_connection'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:245:in `checkout_new_connection'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:188:in `checkout'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:184:in `loop'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:184:in `checkout'
    /usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:183:in `checkout'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:98:in `connection'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:326:in `retrieve_connection'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_specification.rb:123:in `retrieve_connection'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_specification.rb:115:in `connection'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:435:in `initialize'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:400:in `new'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:400:in `up'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:383:in `migrate'
    /usr/lib/ruby/gems/1.8/gems/rails-2.3.4/lib/tasks/databases.rake:116
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:635:in `call'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:635:in `execute'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:630:in `each'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:630:in `execute'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:596:in `invoke_with_call_chain'
    /usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:589:in `invoke_with_call_chain'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:582:in `invoke'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2050:in `invoke_task'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2028:in `top_level'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2028:in `each'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2028:in `top_level'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2067:in `standard_exception_handling'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2022:in `top_level'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2000:in `run'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2067:in `standard_exception_handling'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1997:in `run'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/bin/rake:31
    /usr/bin/rake:19:in `load'
    /usr/bin/rake:19
    [up@localhost photo]$ mysql -u root photos_development
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 4
    Server version: 5.1.42 Source distribution
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> show tables;
    Empty set (0.00 sec)
    
    mysql> exit
    
    photo/config/database.yml:
    Code:
    # MySQL.  Versions 4.1 and 5.0 are recommended.
    #
    # Install the MySQL driver:
    #   gem install mysql
    # On Mac OS X:
    #   sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql
    # On Mac OS X Leopard:
    #   sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
    #       This sets the ARCHFLAGS environment variable to your native architecture
    # On Windows:
    #   gem install mysql
    #       Choose the win32 build.
    #       Install MySQL and put its /bin directory on your path.
    #
    # And be sure to use new-style password hashing:
    #   http://dev.mysql.com/doc/refman/5.0/en/old-client.html
    development:
      adapter: mysql
      encoding: utf8
      reconnect: false
      database: photo_development
      pool: 5
      username: root
      password:
      socket: /var/lib/mysql/mysql.sock
    
    # Warning: The database defined as "test" will be erased and
    # re-generated from your development database when you run "rake".
    # Do not set this db to the same as development or production.
    test:
      adapter: mysql
      encoding: utf8
      reconnect: false
      database: photo_test
      pool: 5
      username: root
      password:
      socket: /var/lib/mysql/mysql.sock
    
    production:
      adapter: mysql
      encoding: utf8
      reconnect: false
      database: photo_production
      pool: 5
      username: root
      password: 
      socket: /var/lib/mysql/mysql.sock
    /var/log/mysqld.log:
    Code:
    100219 23:35:30 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
    100219 23:35:32 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
    100219 23:35:32 [Note] Plugin 'ndbcluster' is disabled.
    100219 23:35:33  InnoDB: Started; log sequence number 0 44233
    100219 23:35:33 [Note] Event Scheduler: Loaded 0 events
    100219 23:35:33 [Note] /usr/libexec/mysqld: ready for connections.
    Version: '5.1.42'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  Source distribution
    
     
  2. lukmus

    lukmus Elder - Старейшина

    Joined:
    18 Nov 2009
    Messages:
    366
    Likes Received:
    115
    Reputations:
    23
    я дурак, но во всем виноват принцип метапрограммирования, короче нужно было создавать БД с именем photo_development. И, кстати, это опечатка в книге "Ruby on Rails" Брюс А. Тейт.