2010年12月 7日 #sqlite #mysql #transaction

autocommitの値を持ちましてMySQLでのトランザクションを制御できます。

--暗黙(自動)コミットを無効に
SET AUTOCOMMIT = 0;
--トランザクション開始
BEGIN;

--SQL文をながす
UPDATE...
INSERT...

--コミット
COMMIT;
--あるいはロールバック
ROLLBACK;

--暗黙(自動)コミットを有効に
SET AUTOCOMMIT = 1;

--暗黙(自動)コミットのステータスを確認
SELECT @@AUTOCOMMIT;
2010年10月15日 #sqlite #ruby #rails #linux

経緯

何も考えずにGemfileにsqlite3を定義してbundleを流したらこんなエラーが出ました。

$ gem install sqlite3-ruby
Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3-ruby:
        ERROR: Failed to build gem native extension.

/home/user/.rvm/rubies/ruby-head/bin/ruby extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal' or 'yum install sqlite3-devel'
###  extconf.rb failed ###
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=/home/user/.rvm/rubies/ruby-head/bin/ruby
        --with-sqlite3-dir
        --without-sqlite3-dir
        --with-sqlite3-include
        --without-sqlite3-include=${sqlite3-dir}/include
        --with-sqlite3-lib
        --without-sqlite3-lib=${sqlite3-dir}/lib


Gem files will remain installed in /home/user/.rvm/gems/ruby-head/gems/sqlite3-ruby-1.3.0 for inspection.
Results logged to /home/user/.rvm/gems/ruby-head/gems/sqlite3-ruby-1.3.0/ext/sqlite3/gem_make.out

キーのメッセージは「sqlite3.h is missing. Try 'port install sqlite3 +universal' or 'yum install sqlite3-devel'」なのでそのとおりコマンドを流しましたが、portはそのコマンドがないと、yumはsqlite3-develを見つからないと返事したんです。。。

なのでsqlite本家でソースをダウンロードしビルドしてインストールする必要があります。

sqlite3のインストール

http://www.sqlite.org/download.htmlからsqlite-amalgamation-x.x.x.tar.gz(この記事を書いてる時点では3.7.3)のTarballバージョンのファイルをダウンロードします。上から二番目のリンクです。

$ wget http://www.sqlite.org/sqlite-amalgamation-3.7.3.tar.gz
$ tar vxzf sqlite-amalgamation-3.7.3.tar.gz
$ cd sqlite-amalgamation-3.7.3
$ ./configure --prefix=/usr/local
$ make
$ sudo make install

sqlite-ruby gemのインストール

後は普通にgem installでもいいしbundle installでもOKです。

$ gem install sqlite3-ruby
2009年10月11日 #sqlite

インストール

  • 公式サイト(http://www.sqlite.org/download.html)でファイルをダウンロード。Macなら二番目の「sqlite-amalgamation-3.6.18.tar.gz」をダウンロードすればよい。
  • Macのターミナルを起動し、上記解凍パスに移動する。
  • 下記コマンドを実行する。

./configure --prefix=ここでインストールパスを指定

make

make install

    • 私の場合は--prefix=/users/user_name/Database/sqlite

インストールの詳細は解凍先のドキュメントの「INSTALL」を参照してください。

ここでは一番簡単(デフォルト)のコマンドを紹介します。

英語ばかりでわかりづらいかもしれません。


これでインストールは完了です。

指定したインストール先には「bin」、「include」、「lib」の三つのフォルダがあるはずです。

次にターミナルでbinフォルダに移動します。

ここからはsqliteのシンタックスになります。

データベースの起動/作成

sqlite test.db;

これでtestという名のデータベースにつながります。もしtest.dbのファイルがなければ自動で作成されます。

こんなメッセージも出るはずです。

SQLite version 3.4.0

Enter ".help" for instructions

テーブルの作成

次に簡単なテーブルを作成し、データをINSERTしましょう。

sqlite> create table Employee(id int,name varchar(15));

sqlite> insert into Employee values (1,'Jim');

sqlite> insert into Employee values (2,'Tom');

sqlite> select * from Employee;

1|Jim

2|Tom

sqlite>

データベースのクローズ

.exit

ちょっと探しましたが、このサイトで日本語の資料がたくさんあるようです。

http://www.dbonline.jp/sqlite/index.html