質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Q&A

解決済

2回答

446閲覧

RubyでSQLite3を使えるようにしたいが、Unable to load driver 'SQLite3' となってしまう

read_blue2

総合スコア13

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

0グッド

0クリップ

投稿2018/03/01 02:31

前提・実現したいこと

御覧いただき、ありがとうございます。
RubyでSQLite3を使えるようにしたいのですが、エラーがでてしまっています。

(『作りながら学ぶRuby入門 第2版』で学習し環境構築しており、
下記の参照のコードは、http://blog.codebook-10000.com/entry/20131027/1382862604
を使用させていただいています。)

発生している問題・エラーメッセージ

C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbi-0.4.5/lib/dbi.rb:300:in `block in load_driver': Unable to load driver 'SQLite3' (underlying error: uninitialized constant DBI::DBD::SQLite3) (DBI::InterfaceError) from C:/Ruby193/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' from C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbi-0.4.5/lib/dbi.rb:242:in `load_driver' from C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbi-0.4.5/lib/dbi.rb:160:in `_get_full_driver' from C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbi-0.4.5/lib/dbi.rb:145:in `connect' from connectdb.rb:5:in `<main>'

該当のソースコード

# -*- coding: utf-8 -*- require 'rubygems' require 'dbi' dbh = DBI.connect('DBI:SQLite3:test01.db') dbh.select_all('select * from person') do |row| print "row=#{row} \n" print "name = #{row[0]}\n" print "age = #{row[1]}\n" print "\n" end dbh.disconnect

試したこと

①rubyのバージョンを作りながら学ぶRuby入門 第2版』に合わせ、sqlite3-ruby、dbd-sqlite3のバージョンも本に書かれていたものと合わせた。

②sqlite3はコマンドプロンプトで正常に起動。データベース作成できること確認。

③sqlite3 dll、sqlite3.def(64bit版のものダウンロードし、解凍)を実行プログラムの保存先である、C:\Users\Owner\Documents\Ruby自作ファイル場所 に入れました。

④上記2つのファイルをC:\Ruby193\bin にも入れました。(Ruby上のファイルにいれる必要あるとネット検索でており)

Window10(64bit)のこと③~④、これらのうちのなにかが原因で、エラーがでているのかと推測しているのですが、検索と試行錯誤しても解決せずに質問させていただきました。

補足情報(FW/ツールのバージョンなど)

windows10 64bit
ruby 1.9.3p194 (2012-04-20) [i386-mingw32]
Ruby gem
sqlite3-ruby (1.3.3)
dbi (0.4.5)
dbd-sqlite3 (1.2.5)
sqlite3 dll(※64bit版) 3.2.2.0
sqlite3 (1.3.13 x86-mingw32)

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

i386-mingw32ということは、Rubyも32ビット版ですので、sqlite3.dllも32ビット版を用意する必要があります。

なお、Ruby 1.9.3、DBIともに、実用するには古すぎます。直接sqlite3を使うなり、ActiveRecord経由で使うなりをした方がいいでしょう。

投稿2018/03/01 02:37

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

read_blue2

2018/03/01 03:17

\Ruby193\binのファイル、並びに実行ファイル保存場所のsqlite3.dllを 32ビット版にしてみたのですが(64ビット版は削除)、やはり同様のエラーがでてしまっています。。 そして、環境へのアドバイスもありがとうございます!DBI古すぎなのですね。 Rubyは、この本学習用だけのために古いバージョンを新たにインストールして使用しています。本に記載されているコードが分かりにくくなるため、この本と同じ環境で一度作れたらと思っていまして。自身で作る際には、アドバイスいただいたもの学習して作っていこうと思います。ありがとうございます。
maisumakun

2018/03/01 03:20

わざわざ古い本で勉強すること自体が、労多くして功少ないと思います。
guest

0

自己解決

Ruby 2.4.3-2をインストールしなおし、再度環境構築をしたら、できるようになりました。
(著者の方のサポート有)

以下に教えていただいた手順を転載します。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2.5ではだめでしたが、2.4.3では動作しましたので、お知らせしておきます。

1)Windows 10(32bit)(たぶん64bitでも違いはないと思います)
2)RubyInstallersから、Ruby 2.4.3-2をダウンロードしてインストール
ご自身のWindowが64ビットなら、(x64) の方をインストールしてください。
(最後に要求されるMSYS2のインストールも実施します)
3)コマンドプロンプトでコマンドを確認
ruby --version
ruby 2.4.3p205 (2017-12-14 revision 61247) [i386-mingw32]
4)コマンドプロンプトで下記の順序でインストール

C:\Users\kuboaki>gem install sqlite3
Fetching: sqlite3-1.3.13-x86-mingw32.gem (100%)
Successfully installed sqlite3-1.3.13-x86-mingw32
Parsing documentation for sqlite3-1.3.13-x86-mingw32
Installing ri documentation for sqlite3-1.3.13-x86-mingw32
Done installing documentation for sqlite3 after 2 seconds
1 gem installed

C:\Users\kuboaki>gem install dbd-sqlite3
Fetching: sqlite3-ruby-1.3.3.gem (100%)

#######################################################

Hello! The sqlite3-ruby gem has changed it's name to just sqlite3. Rather than
installing sqlite3-ruby, you should install sqlite3. Please update your
dependencies accordingly.

Thanks from the Ruby sqlite3 team!

<3 <3 <3 <3

#######################################################

Successfully installed sqlite3-ruby-1.3.3
Fetching: deprecated-2.0.1.gem (100%)
Successfully installed deprecated-2.0.1
Fetching: dbi-0.4.5.gem (100%)
Successfully installed dbi-0.4.5
Fetching: dbd-sqlite3-1.2.5.gem (100%)
Successfully installed dbd-sqlite3-1.2.5
Parsing documentation for sqlite3-ruby-1.3.3
Installing ri documentation for sqlite3-ruby-1.3.3
Parsing documentation for deprecated-2.0.1
Installing ri documentation for deprecated-2.0.1
Parsing documentation for dbi-0.4.5
Installing ri documentation for dbi-0.4.5
Parsing documentation for dbd-sqlite3-1.2.5
Installing ri documentation for dbd-sqlite3-1.2.5
Done installing documentation for sqlite3-ruby, deprecated, dbi, dbd-sqlite3 after 4 seconds
4 gems installed

5)サンプルプログラムを実行

C:\Users\kuboaki>ruby ex2201.rb

  1. 蔵書データベースの初期化
  2. 蔵書データの登録
  3. 蔵書データの表示
  4. 終了

番号を選んでください(0,1,2,9):9

終了しました。

6)irbコマンドでsqlite3パッケージが使えることを確認

C:\Users\kuboaki>irb
irb(main):001:0> require 'sqlite3'
=> true
irb(main):002:0>

パッケージをrequire して、trueが帰ってくれば、
そのパッケージがロードできていることになります。

投稿2018/03/01 12:14

編集2018/03/02 05:21
read_blue2

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問