2012-04-27 MySQL コマンド
MySQL コマンド
接続
mysql db_name -u root -p --no-beep --local-infile
データベース確認
show databases;
作業するデータベースの選択
use db_name;
データベース作成
CREATE DATABASE db_name DEFAULT CHARSET utf8;
権限付与
grant all on db_name.* to user_name@localhost identified by 'user_password'; grant file on *.* to user_name@localhost;
テーブル作成
mysql> create table posts (
-> id integer NOT NULL AUTO_INCREMENT,
-> name varchar(255),
-> title varchar(255),
-> content text,
-> created_at datetime NOT NULL,
-> updated_at datetime NOT NULL,
-> PRIMARY KEY (id)
-> );
Query OK, 0 rows affected (0.08 sec)
2011-10-24 MySQL リンク
MySQL リンク
MySQLサーバが消費するメモリ - MySQL Practice Wiki
MySQL をキューに使用する 5 つの微妙な方法とその落とし穴 (翻訳版) | Engine Yard Blog JP
レプリケーションを使わないMySQLの冗長化 - Yahoo! JAPAN Tech Blog
パフォーマンス比較 Cassandra、Mongodb、SQLite、H2、MySQL、Postgres - C/pHeR Memo - Java とか。Eclipse とか。
MySQLの設定ファイル my.cnf をgithubにて公開しました & チューニングポイントの紹介 - blog.nomadscafe.jp
MySQL 5.6のInnoDB memcached pluginを使ってみる - 酒日記 はてな支店
PostgreSQLとMySQLはどちらかに明確な優位性がありますか? - QA@IT
MySQL 5.6におけるsync_binlog=1の改善について&勉強会のお知らせ - SH2の日記
- MySQL ::
- 3テーブル
- MySQL :: Sakila Sample Database
- 22テーブル。viewやストアドプロシージャもついて本格的
MySQL 5.0のプロダクトライフサイクルが終了 - SH2の日記
MySQLに対して、カジュアルにやってはいけない事をやってみよう - iをgに変えるとorangeになることに気づいたoranieの日記
MySQL Casual Advent Calendar 2011 - MySQL Casual
クエリキャッシュを切ったほうがいイカ? ベンチマークしてみた - 酒日記 はてな支店
kernel_mutex problem cont. Or triple your throughput - MySQL Performance Blog
2011-07-17 JRuby + Rails 3 + MySQL (Windows)
JRuby + Rails 3 + MySQL (Windows)
Windows上にJRuby + Rails 3 + MySQL環境をつくってみる。
Javaのインストール
JRubyは、JavaVM上で動作するRuby。そんなわけで、JRubyを実行するためには、あらかじめ、Javaをインストールしておく。Windows版のJavaでは、インストーラにしたがえばよい。
インストールがおわったら、
c:\>java -version java version "1.7.0" Java(TM) SE Runtime Environment (build 1.7.0-b147) Java HotSpot(TM) Client VM (build 21.0-b17, mixed mode, sharing) c:\>javac -version javac 1.7.0
JRubyのインストール
の
からJRubyをダウンロード。jruby-bin-1.6.3.zipを適当なディレクトリに展開する。
jruby-1.6.3\bin
にPATHをとおす。
自分の環境は、PATHがごちゃごちゃしすぎているので、単純なjruby-console.cmdファイルをつくっておく。
@echo off set JAVA_HOME=C:\Program Files\Java\jdk1.7.0 set PATH=%JAVA_HOME%\bin;%PATH% set JRUBY_HOME=C:\Application\ProgrammingLanguage\Ruby\JRuby\jruby-bin-1.6.3 set PATH=%JRUBY_HOME%\bin;%PATH% cd c:\ cmd
C:\>jruby -v jruby 1.6.3 (ruby-1.8.7-p330) (2011-07-07 965162f) (Java HotSpot(TM) Client VM 1 .7.0) [Windows XP-x86-java] C:\>jruby --1.9 -v jruby 1.6.3 (ruby-1.9.2-p136) (2011-07-07 965162f) (Java HotSpot(TM) Client VM 1 .7.0) [Windows XP-x86-java]
JRubyはインストール成功
MySQLのインストール
MySQL :: Download MySQL Community Server
からWindows (x86, 32-bit), MSI Installerをダウンロードする。
ダウンロードページのダウンロードボタンを押すと、すぐにダウンロードはできず、ログインやらユーザ登録やらをもとめる入力フォームのある画面に画面遷移するけど、とりあえず、とばして、画面下部のNo thanks, just take me to the downloads!リンクをクリック。
ミラーサイトをからインストーラをダウンロードする。
インストールは、インストーラにしたがえばよい。インストールは、MySQLのインストールとMySQL Server Instance Configuration Wizardの実行の2段階になっている。Configuration Wizardの途中で、データベースの文字コードをどうするか指定する。ここでは、文字コードは、UTF-8を指定しておく。latin1のままだと、そりゃもう文字化けしまくる。
インストーラが正常終了して、MySQLサーバが起動していれば、コマンドラインから
mysql -u root -p --no-beep
とやって、ログインできるはず。
一応、文字コードの設定を確認しておこう。
mysql> show variables like 'char%'; +--------------------------+---------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.1\share\charsets\ | +--------------------------+---------------------------------------------------------+ 8 rows in set (0.00 sec)
Rails 3のインストール
インストール前に、一応、環境を確認しておくか。じぶんは、JRuby以外に、複数のRubyの実行環境をインストールして、なんどかはまってしまったので、びくびくしている。no title RVMという複数のRuby環境を利用する便利な仕組みもあるようなのだが、いまは、いいや。
C:\>gem environment RubyGems Environment: - RUBYGEMS VERSION: 1.5.1 - RUBY VERSION: 1.8.7 (2011-07-07 patchlevel 330) [java] - INSTALLATION DIRECTORY: C:/Application/ProgrammingLanguage/Ruby/JRuby/jruby-bin-1.6.3/lib/ruby/gems/1.8 - RUBY EXECUTABLE: C:/Application/ProgrammingLanguage/Ruby/JRuby/jruby-bin-1.6.3/bin/jruby.exe - EXECUTABLE DIRECTORY: C:/Application/ProgrammingLanguage/Ruby/JRuby/jruby-bin-1.6.3/bin C:\>jruby --1.9 -S gem environment RubyGems Environment: - RUBYGEMS VERSION: 1.5.1 - RUBY VERSION: 1.9.2 (2011-07-07 patchlevel 330) [java] - INSTALLATION DIRECTORY: C:/Application/ProgrammingLanguage/Ruby/JRuby/jruby-bin-1.6.3/lib/ruby/gems/1.8 - RUBY EXECUTABLE: C:/Application/ProgrammingLanguage/Ruby/JRuby/jruby-bin-1.6.3/bin/jruby.exe - EXECUTABLE DIRECTORY: C:/Application/ProgrammingLanguage/Ruby/JRuby/jruby-bin-1.6.3/bin
gemでインストールする。jrubyには、もともとgemがふくまれている。
C:\>gem -v 1.5.1
gem自体のバージョンはもっとあがっていて、gem自体のアップグレードもgemでできるようなのだけど、とりあえずこのままいこう。
gem自体のupdateをするなら
C:\>jruby -S gem update --system .... C:\>gem -v
こちらは、古いバージョンの場合らしい。
C:\>jruby -S gem install rubygems-update .... C:\>jruby -S update_rubygems .... C:\>gem -v
また、なんどか、Rubyの実行環境 + Railsをインストールした経験では、gemやらgemでインストールするライブラリやらのバージョンのせいで、なぞのエラーがでることがけっこうあった。でも、ここでは、とりあえず気にしないでいこう。なにかあったらそのとき調べるさー。
以下は、Rubyのバージョン、1.9を意識して、1.9でコマンドたたくくせをつけようとして、1.9をつけてるのだけど、あんまり意味なかったみたい。どこで、どうすれば、効くのやら。
追記
JRuby 1.6.7とかだと、.jrubyrcファイルを作業ディレクトリか、ホームディレクトリにおいて、
compat.version = 1.9
と書いておくと、jrubyがデフォルトでruby 1.9互換で起動するようになる。
C:\>jruby --1.9 -S gem install rails Fetching: activesupport-3.0.9.gem (100%) Fetching: builder-2.1.2.gem (100%) Fetching: i18n-0.5.0.gem (100%) Fetching: activemodel-3.0.9.gem (100%) Fetching: rack-1.2.3.gem (100%) Fetching: rack-test-0.5.7.gem (100%) Fetching: rack-mount-0.6.14.gem (100%) Fetching: tzinfo-0.3.29.gem (100%) Fetching: abstract-1.0.0.gem (100%) Fetching: erubis-2.6.6.gem (100%) Fetching: actionpack-3.0.9.gem (100%) Fetching: arel-2.0.10.gem (100%) Fetching: activerecord-3.0.9.gem (100%) Fetching: activeresource-3.0.9.gem (100%) Fetching: mime-types-1.16.gem (100%) Fetching: polyglot-0.3.2.gem (100%) Fetching: treetop-1.4.10.gem (100%) Fetching: mail-2.2.19.gem (100%) Fetching: actionmailer-3.0.9.gem (100%) Fetching: thor-0.14.6.gem (100%) Fetching: rdoc-3.9.2.gem (100%) Depending on your version of ruby, you may need to install ruby rdoc/ri data: <= 1.8.6 : unsupported = 1.8.7 : gem install rdoc-data; rdoc-data --install = 1.9.1 : gem install rdoc-data; rdoc-data --install >= 1.9.2 : nothing to do! Yay! Fetching: railties-3.0.9.gem (100%) Fetching: bundler-1.0.17.gem (100%) Fetching: rails-3.0.9.gem (100%) Successfully installed activesupport-3.0.9 Successfully installed builder-2.1.2 Successfully installed i18n-0.5.0 Successfully installed activemodel-3.0.9 Successfully installed rack-1.2.3 Successfully installed rack-test-0.5.7 Successfully installed rack-mount-0.6.14 Successfully installed tzinfo-0.3.29 Successfully installed abstract-1.0.0 Successfully installed erubis-2.6.6 Successfully installed actionpack-3.0.9 Successfully installed arel-2.0.10 Successfully installed activerecord-3.0.9 Successfully installed activeresource-3.0.9 Successfully installed mime-types-1.16 Successfully installed polyglot-0.3.2 Successfully installed treetop-1.4.10 Successfully installed mail-2.2.19 Successfully installed actionmailer-3.0.9 Successfully installed thor-0.14.6 Successfully installed rdoc-3.9.2 Successfully installed railties-3.0.9 Successfully installed bundler-1.0.17 Successfully installed rails-3.0.9 24 gems installed C:\>gem list *** LOCAL GEMS *** abstract (1.0.0) actionmailer (3.0.9) actionpack (3.0.9) activemodel (3.0.9) activerecord (3.0.9) activerecord-jdbc-adapter (1.1.3) activerecord-jdbcmysql-adapter (1.1.3) activeresource (3.0.9) activesupport (3.0.9) arel (2.0.10) builder (2.1.2) bundler (1.0.17) erubis (2.6.6) i18n (0.5.0) jdbc-mysql (5.1.13) mail (2.2.19) mime-types (1.16) polyglot (0.3.2) rack (1.2.3) rack-mount (0.6.14) rack-test (0.5.7) rails (3.0.9) railties (3.0.9) rake (0.8.7) rdoc (3.9.2) sources (0.0.1) thor (0.14.6) treetop (1.4.10) tzinfo (0.3.29) C:\>gem which rails C:/Application/ProgrammingLanguage/Ruby/JRuby/jruby-bin-1.6.3/lib/ruby/gems/1.8/gems/railties-3.0.9/lib/rails.rb
railsをインストールできたようだ。
jruby --1.9 -S とかやっても、1.9にはならないのだな。じぶん、なにかをかん違いしてたか。
rails.vim
vimで作業するつもりなので、rails.vimをいれておこう。ちょっとキーバインドをおぼえれば、ファイルを開くのがとってもかんたんになる。
rails.vim - Ruby on Rails: easy file navigation, enhanced syntax highlighting, and more : vim online
インストールは、vimのインストールディレクトリのruntime配下にコピペするだけ。
プロジェクトの作成と動作確認
参考
Ruby on Rails Guides: Getting Started with Rails
本家のチュートリアル。Rails 3対応。自分は、Railsの実務経験はないのだけど、Rails 2の本は3冊ぐらい読んでおり、最低限の知識はあったので、このチュートリアルでけっこうわかった。
Windows上で Ruby1.9.2 + Rails3 + SQLite or MySQL 環境を構築 - Everyleaf Lab
Windows + Ruby + Rails 3 + MySQLの環境をつくっている。
プロジェクトの作成
さっそく、サンプルアプリをつくってみる。Hello, Wolrd!という言葉が好きなので、helloworldプロジェクトを作成する。
C:\>rails new helloworld -d mysql
create
create README
create Rakefile
create config.ru
create .gitignore
create Gemfile
create app
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create app/mailers
create app/models
create app/views/layouts/application.html.erb
create config
create config/routes.rb
create config/application.rb
create config/environment.rb
create config/environments
create config/environments/development.rb
create config/environments/production.rb
create config/environments/test.rb
create config/initializers
create config/initializers/backtrace_silencers.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/secret_token.rb
create config/initializers/session_store.rb
create config/locales
create config/locales/en.yml
create config/boot.rb
create config/database.yml
create db
create db/seeds.rb
create doc
create doc/README_FOR_APP
create lib
create lib/tasks
create lib/tasks/.gitkeep
create log
create log/server.log
create log/production.log
create log/development.log
create log/test.log
create public
create public/404.html
create public/422.html
create public/500.html
create public/favicon.ico
create public/index.html
create public/robots.txt
create public/images
create public/images/rails.png
create public/stylesheets
create public/stylesheets/.gitkeep
create public/javascripts
create public/javascripts/application.js
create public/javascripts/controls.js
create public/javascripts/dragdrop.js
create public/javascripts/effects.js
create public/javascripts/prototype.js
create public/javascripts/rails.js
create script
create script/rails
create test
create test/fixtures
create test/functional
create test/integration
create test/performance/browsing_test.rb
create test/test_helper.rb
create test/unit
create tmp
create tmp/sessions
create tmp/sockets
create tmp/cache
create tmp/pids
create vendor/plugins
create vendor/plugins/.gitkeep
これも
C:\>rails new helloworld -d mysql
ではなくて
C:\>jruby -S rails new helloworld -d mysql
としたほうがよかったのかな。まあいいや。
プロジェクトを作成したら、ためしに、railsでよくやる基本の動作確認。Webサーバ起動
C:\>cd helloworld C:\helloworld>jruby --1.9 -S script\rails server .... この辺の文字をはてなの日記にはりつけると日記が文字化けるのでやめておく。 ....
おっと、起動失敗。日記が文字化けするからはりつけなかったけど、エラーメッセージを見る限り、mysql関連の設定が必要なようだ。必要なライブラリをgemでインストールして、さらにDBの接続設定も必要。
さてさてさて、どうすればよいのだろう。
JRubyなので、Javaの仕組みで、つまりJDBCでアクセスできるようになっていると前になにかの記事で読んだことがある。
ライブラリを求めて、activerecord-jdbcmysql-adapter | RubyGems.org | your community gem hostから、さらに jruby-extras’s ActiveRecord-JDBC-0.5 Documentationへいくとサンプルが書いてある。
こいつも、gemでインストールだ。
C:\helloworld>jruby --1.9 -S gem install activerecord-jdbc-adapter Fetching: activerecord-jdbc-adapter-1.1.3.gem (100%) Successfully installed activerecord-jdbc-adapter-1.1.3 1 gem installed C:\helloworld>jruby --1.9 -S gem install activerecord-jdbcmysql-adapter Fetching: jdbc-mysql-5.1.13.gem (100%) Fetching: activerecord-jdbcmysql-adapter-1.1.3.gem (100%) Successfully installed jdbc-mysql-5.1.13 Successfully installed activerecord-jdbcmysql-adapter-1.1.3 2 gems installed
Railsではこいつをどうやって利用するのかかも検索して、それらしい説明をしてくれているページを探す。。。。
設定ファイルの編集
- helloworld/Gemfile
- 依存ライブラリの設定
RubyというかRails 3というかBundler: The best way to manage a Ruby application’s gemsの設定ファイルらしい。ここに依存ライブラリを書いておけばよいようだ。
RubyとRubyGemのしくみさえわすれていて、なんのことかピンとこなくて、どはまりした。それは、別の日記に書くとしよう。
MySQLに接続するためのライブラリを指定しておく。
Rubyでは、MySQLに接続するためのライブラリ自体が何種類かあるようだ。search | RubyGems.org | your community gem host うーん。。。。JavaのJDBCのような統一されたインタフェースがないのだろうか。。。。自分のようなRubyの経験が浅いものにとっては、混乱のもとになってしまう。
ここでは、gemでインストールしたJDBCドライバをつかえるように指定する。
.... #gem 'mysql2', '~> 0.2.6' gem 'activerecord-jdbc-adapter' gem 'activerecord-jdbcmysql-adapter' gem 'jdbc-mysql',:require=>false ....
上では、gemでインストールしてから、Gemfileを修正しているけれども、Rails 3には、bundle installという便利コマンドがあるらしい。Gemfileに書いてあるものをbundle installでインストールしてくれるらしい。
- helloworld/config/database.yml
- DB接続の設定
自分の環境に合わせて修正する。
.... test: adapter: jdbcmysql encoding: utf8 reconnect: false database: helloworld_test pool: 5 username: ユーザ password: パスワード host: localhost ....
C:\helloworld>jruby --1.9 -S script\rails server => Booting WEBrick => Rails 3.0.9 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2011-08-15 17:06:52] INFO WEBrick 1.3.1 [2011-08-15 17:06:53] INFO ruby 1.9.2 (2011-07-07) [java] [2011-08-15 17:06:53] INFO WEBrick::HTTPServer#start: pid=388 port=3000
rails serverだけだと、--1.9を指定しても、1.8.7で起動した。
script\rails serverとしたら、1.9.2で起動した。なぜ?
ブラウザでおなじみの画面が開けた。
さてさてさて、これで、開発できるのか?
scaffoldで自動生成
ひとまず、DBをつくっておこう。
C:\helloworld>rake db:create (in C:/helloworld)
mysql> show databases; +------------------------+ | Database | +------------------------+ | information_schema | | helloworld_development | | mysql | | performance_schema | | test | +------------------------+ 5 rows in set (0.06 sec)
config/database.ymlにあるデータベース名でつくってくれるらしい。
すくなくとも、rakeからはMySQLにつながったようだ。
rakeも、Railsとは、もともと別の、Rubyのライブラリで、Antみたいに作業を自動化するためのライブラリらしい。
Railsの、なんでもRubyでやっちゃう姿勢は、ある種の爽快感を感じないでもないけど、やっぱり勉強することが盛りだくさんになるなあ。
どうも、集中力が続かず、ふらふらとしてしまうな。DBに接続できたので、scaffoldで、MVC関連のソースコードとかテーブル定義とか生成してみる。
PersonモデルにPersonテーブルをつくってみる。
C:\helloworld>rails generate scaffold Person name:string age:integer
invoke active_record
create db/migrate/20110815090448_create_people.rb
create app/models/person.rb
invoke test_unit
create test/unit/person_test.rb
create test/fixtures/people.yml
route resources :people
invoke scaffold_controller
create app/controllers/people_controller.rb
invoke erb
create app/views/people
create app/views/people/index.html.erb
create app/views/people/edit.html.erb
create app/views/people/show.html.erb
create app/views/people/new.html.erb
create app/views/people/_form.html.erb
invoke test_unit
create test/functional/people_controller_test.rb
invoke helper
create app/helpers/people_helper.rb
invoke test_unit
create test/unit/helpers/people_helper_test.rb
invoke stylesheets
create public/stylesheets/scaffold.css
Personについて、app/models/person.rbや、MVCのソースコードが一括で生成された。
- Model
- app/controllers/people_controller.rb
- View
- app/views/people/*.html.erb
- Controller
- app/controllers/people_controller.rb
テストコードやテストデータまで生成されてるし。
- テーブル定義
- db/migrate/20110815090448_create_people.rb
もある。
テーブル定義をDBに反映する。
C:\helloworld>rake db:migrate (in C:/helloworld) == CreatePeople: migrating =================================================== -- create_table(:people) -> 0.1550s -> 0 rows == CreatePeople: migrated (0.1550s) ==========================================
mysqlクライアントから確認。
mysql> use helloworld_development Database changed mysql> show tables; +----------------------------------+ | Tables_in_helloworld_development | +----------------------------------+ | people | | schema_migrations | +----------------------------------+ 2 rows in set (0.02 sec) mysql> desc people; +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(255) | YES | | NULL | | | age | int(11) | YES | | NULL | | | created_at | datetime | YES | | NULL | | | updated_at | datetime | YES | | NULL | | +------------+--------------+------+-----+---------+----------------+ 5 rows in set (0.03 sec)
ちゃんと、できているようだ。
動作確認
ふたたびWebサーバ起動
C:\helloworld>jruby --1.9 -S script\rails server => Booting WEBrick => Rails 3.0.9 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2011-08-15 18:14:12] INFO WEBrick 1.3.1 [2011-08-15 18:14:12] INFO ruby 1.9.2 (2011-07-07) [java] [2011-08-15 18:14:12] INFO WEBrick::HTTPServer#start: pid=3424 port=3000
ブラウザからhttp://localhost:3000/peopleを開く
開けた。
ブラウザからデータを登録してみると、登録もOK!
うまくうごいたようだ。
mysqlクライアントで中身も確認してみる。
mysql> set names sjis; Query OK, 0 rows affected (0.00 sec) mysql> select * from people; +----+------------+------+---------------------+---------------------+ | id | name | age | created_at | updated_at | +----+------------+------+---------------------+---------------------+ | 1 | こんにちは | 10 | 2011-08-15 09:22:49 | 2011-08-15 09:23:30 | | 2 | 世界 | 20 | 2011-08-15 09:23:13 | 2011-08-15 09:23:13 | +----+------------+------+---------------------+---------------------+ 2 rows in set (0.05 sec)
できてるてきてる。
これで、最低限の開発環境はできた。
開発環境というより勉強環境か。
つぎは、実際の運用環境をおさえたいな
- Webサーバはなにをつかっているのか?
- Javaのアプリケーションサーバで動かすには?
- GlassFishでうごかすためにGlassFish gemなるものもあったらしいが、開発状況がわからない。
2011-06-28 MySQL トランザクション
2010-12-14 LOAD DATA INFILEと--local-infileオプション
LOAD DATA INFILEと--local-infileオプション
職場の、Linuxサーバ上で、mysqlコマンドを実行して
LOAD DATA INFILE
を実行してみるとうまくいかない。
ローカルのWindows上ではうまくいくのに、Linuxサーバ上だと失敗する。
LOAD DATA INFILE .... LINES TERMINATED BY '\n'
と記述していて、CSVファイルの改行は、たしかに\nになっている。改行コードも問題ないはず。
あれこれ検索していると、mysqlコマンドを実行するときに、--local-infileオプションというものがあることが判明
MySQL :: MySQL 5.1 リファレンスマニュアル :: 7.7.1 mysql オプション
mysql --local-infile
としたら、
LOAD DATA INFILE
もあっさり成功!
、、、、そういえば、なんだか何ヶ月か前にも同じことでひっかかったなあ。しっかりメモしておこう。



