मुझे विंडोज़ पर जर्बी और सीक्वल मणि के साथ SQLite3 का उपयोग करने की आवश्यकता है।

require 'sequel'
DB = Sequel.sqlite

मुझे यह त्रुटि मिली:

Sequel::AdapterNotFound: LoadError: no such file to load -- sqlite3
     load_adapter at C:/jruby-9.1.13.0/lib/ruby/gems/shared/gems/sequel-5.9.0/lib/sequel/database/connecting.rb:93
    adapter_class at C:/jruby-9.1.13.0/lib/ruby/gems/shared/gems/sequel-5.9.0/lib/sequel/database/connecting.rb:17
          connect at C:/jruby-9.1.13.0/lib/ruby/gems/shared/gems/sequel-5.9.0/lib/sequel/database/connecting.rb:45
          connect at C:/jruby-9.1.13.0/lib/ruby/gems/shared/gems/sequel-5.9.0/lib/sequel/core.rb:116
   adapter_method at C:/jruby-9.1.13.0/lib/ruby/gems/shared/gems/sequel-5.9.0/lib/sequel/core.rb:394
  block in sqlite at C:/jruby-9.1.13.0/lib/ruby/gems/shared/gems/sequel-5.9.0/lib/sequel/core.rb:401
           <main> at test.rb:53

जब मैं sqlite3 मणि स्थापित करने का प्रयास करता हूं तो यह देशी एक्सटेंशन बनाते समय विफल हो जाता है:

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

    current directory: C:/jruby-9.1.13.0/lib/ruby/gems/shared/gems/sqlite3-1.3.1
3/ext/sqlite3
C:/jruby-9.1.13.0/bin/jruby.exe -r ./siteconf20181005-6576-1e4h1cf.rb extconf.rb

checking for sqlite3.h... RuntimeError: The compiler failed to generate an executable file.
You have to install development tools first.

                 try_do at C:/jruby-9.1.13.0/lib/ruby/stdlib/mkmf.rb:456
                try_cpp at C:/jruby-9.1.13.0/lib/ruby/stdlib/mkmf.rb:587
   block in find_header at C:/jruby-9.1.13.0/lib/ruby/stdlib/mkmf.rb:1144
  block in checking_for at C:/jruby-9.1.13.0/lib/ruby/stdlib/mkmf.rb:942
      block in postpone at C:/jruby-9.1.13.0/lib/ruby/stdlib/mkmf.rb:350
                   open at C:/jruby-9.1.13.0/lib/ruby/stdlib/mkmf.rb:320
      block in postpone at C:/jruby-9.1.13.0/lib/ruby/stdlib/mkmf.rb:350
                   open at C:/jruby-9.1.13.0/lib/ruby/stdlib/mkmf.rb:320
               postpone at C:/jruby-9.1.13.0/lib/ruby/stdlib/mkmf.rb:346
           checking_for at C:/jruby-9.1.13.0/lib/ruby/stdlib/mkmf.rb:941
            find_header at C:/jruby-9.1.13.0/lib/ruby/stdlib/mkmf.rb:1143
                 <main> at extconf.rb:50
*** 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=C:/jruby-9.1.13.0/bin/jruby
        --with-sqlite3-config
        --without-sqlite3-config
        --with-pkg-config
        --without-pkg-config
        --with-sqlite3-dir
        --without-sqlite3-dir
        --with-sqlite3-include
        --without-sqlite3-include=${sqlite3-dir}/include
        --with-sqlite3-lib
        --without-sqlite3-lib=${sqlite3-dir}/lib

To see why this extension failed to compile, please check the mkmf.log which can
 be found here:

  C:/jruby-9.1.13.0/lib/ruby/gems/shared/extensions/universal-java-1.8/2.3.0/sql
ite3-1.3.13/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in C:/jruby-9.1.13.0/lib/ruby/gems/shared/gems/s
qlite3-1.3.13 for inspection.
Results logged to C:/jruby-9.1.13.0/lib/ruby/gems/shared/extensions/universal-ja
va-1.8/2.3.0/sqlite3-1.3.13/gem_make.out

मैंने jruby/bin फ़ोल्डर में SQLite lib (sqlite3.dll, sqlite3.def) की प्रतिलिपि बनाई है।

JRuby आधिकारिक पृष्ठ सक्रियरेकॉर्ड-जेडीबीसी-एडाप्टर का उपयोग करने का सुझाव देता है, लेकिन मुझे मौजूदा एक से कनेक्ट नहीं होने पर मेमोरी डीबी में बनाने की जरूरत है।

मै कैसे करूँ?

मेरा परिवेश:
जरूबी वी. 9.1.13
अगली कड़ी वी. 5.9.0
विंडोज सर्वर 2012 R2

0
Marco Gallo 5 अक्टूबर 2018, 13:37

1 उत्तर

सबसे बढ़िया उत्तर

आप सीक्वल jdbc अडैप्टर और jdbc-sqlite3 रत्न का उपयोग करना चाहते हैं:

require 'sequel'
DB = Sequel.connect("jdbc:sqlite::memory:")

FWIW, यदि आप JRuby, h2, hsqldb, और derby के साथ इन-मेमोरी डेटाबेस चाहते हैं तो बेहतर विकल्प हो सकते हैं (और Sequel उन सभी का समर्थन करता है)।

1
Jeremy Evans 5 अक्टूबर 2018, 17:05