ไม่สามารถโหลดไฟล์ดังกล่าวได้ - sqlite3 / sqlite3_native (LoadError) บนทับทิมบนราง


84

เมื่อฉันพยายามตั้งค่าการติดตั้งพื้นฐานและการเริ่มต้นเซิร์ฟเวอร์โดยใช้ Rails 4.0.0 บน Ruby 2.0.0 ฉันพบข้อความแสดงข้อผิดพลาดต่อไปนี้

/usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)
    from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `rescue in <top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:2:in `<top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb:132:in `require'
    from /home/penchal/new/site/config/application.rb:7:in `<top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:76:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:76:in `block in <top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `tap'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'

ฉันจะหลีกเลี่ยงข้อความแสดงข้อผิดพลาดนี้และดำเนินการต่อไปได้อย่างไร


คุณกำลังลองใช้ระบบปฏิบัติการใดอยู่
Saifis

ดูเหมือนจะเป็นปัญหาของ windows แนวทางแก้ไขแตกต่างกันไป ดูว่านี้จะทำเพื่อคุณstackoverflow.com/a/6126062/2576857
Doodad

1
แต่ดูเหมือนว่าเขากำลังใช้ windows อยู่ บางทีบทความนี้อาจช่วยได้
Althaf Hameez

โอ้ใช่ / usr / local / etc เห็นว่าตอนนี้ฉันแย่ จากสิ่งที่ฉันพบคนส่วนใหญ่ที่มีปัญหานี้เป็นเพราะ sqlite exe และ dll ไม่ได้อยู่ในตัวแปร PATH แต่เกิดขึ้นกับผู้ใช้ windows เท่านั้น ฉันคิดว่าบทความที่คุณให้มาน่าจะโดนตะปูที่หัว แต่รอดู
Doodad

ถ้า Rails 4 และ Ruby 2.1 - ดูที่นี่
discipleartem

คำตอบ:


121

ค้นหาไฟล์ gemspec sqlite3 ของคุณ ตัวอย่างหนึ่งคือ /usr/local/share/gem/specifications/sqlite3-1.3.7.gemspec

ของ C:\Ruby21\lib\ruby\gems\2.1.0\specificationswindows:

คุณควรปรับเปลี่ยนตามเส้นทาง Rubygem และเวอร์ชัน sqlite3 แก้ไขไฟล์ด้านบนและมองหาบรรทัดต่อไปนี้

s.require_paths=["lib"]

เปลี่ยนเป็น

s.require_paths= ["lib/sqlite3_native"]

7
นี่เป็นข้อผิดพลาดที่ยอดเยี่ยมสำหรับปัญหาที่ไม่ควรเกิดขึ้นตั้งแต่แรกเนื่องจากจำนวนผู้ใช้ Rails บน Windows ฉันอยากรู้ว่าทำไมมันถึงได้ผล ...

1
สิ่งนี้ใช้ได้กับ 1.3.9 แต่ไม่จำเป็นสำหรับ 1.3.11 ฉันใช้ Win7 x64
Kidquick

3
มีการนำเสนอแล้วและข้อผิดพลาด: ไม่สามารถโหลด 'active_record / connection_adapters / sqlite3_adapter' ตรวจสอบให้แน่ใจว่าอะแด็ปเตอร์ใน config / database.yml ถูกต้อง หากคุณใช้อะแด็ปเตอร์อื่นที่ไม่ใช่ "mysql2" "postgresql" หรือ "sqlite3" จะเพิ่มอะแด็ปเตอร์เจมที่จำเป็นให้กับ Gemfile
Sterling Diaz

3
ข้อผิดพลาดข้างต้นกับอะแดปเตอร์ดูเหมือนจะไม่สามารถแก้ไขได้การทำสิ่งที่ hwding แนะนำด้านล่างก่อนอื่นจะช่วยฉันได้พอสมควร - อีกครั้งบางทีพวกเขาอาจจะแก้ไขได้ในรุ่นถัดไปหรือแก้ไขในแพ็คเกจแบบเรียงซ้อนเช่น RailsInstaller ( ruby2.3.1 พร้อม devkit (mingw พร้อมเครื่องมือสร้าง), rail5.0.0.1) ps ไม่น่าเชื่อว่าปัญหานี้ยังคงมีอยู่หลังจากผ่านไป 2 ปีเนื่องจาก sqlite ถูกใช้โดยค่าเริ่มต้นในแอปพลิเคชันเริ่มต้นของ skeleton และเป็นวิธีที่จะไป ในguide.rubyonrails.org/getting_started.html
hello_earth

2
สองปี? สามปีล่ะ
Warren P

19

ดู:https://stackoverflow.com/a/39136421/6755206

โชคดีที่คุณไม่ต้องเปลี่ยนไปใช้ Ruby 2.0
มีวิธีแก้ปัญหานี้หลังจากพยายามไม่รู้จบ ...

https://github.com/hwding/sqlite3-ruby-win


ขั้นตอน

พรี

  • gem uninstall sqlite3 --all

ที่มา

สร้าง

  • เรียกใช้บรรทัดคำสั่งใน dir ที่แยกออกมา
  • ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งคอมไพเลอร์ C ของคุณและเพิ่มลงใน PATH แล้ว
  • gem install bundler
  • bundle install
  • rake native gem
  • คุณจะพบ dir ชื่อ 'pkg' ที่สร้างขึ้น

ติดตั้ง

  • ป้อน dir 'pkg'
  • gem install --local sqlite3-xxx.gem ('xxx' คือรหัสเวอร์ชัน)

ตรวจสอบ

  • irb
  • require 'sqlite3'

1
ขอบคุณ @hwding ทำงานได้อย่างสมบูรณ์แบบ! ในกรณีของฉันผู้ใช้ Windows ดูเหมือนว่า sqlite3 สองเวอร์ชัน (32 และ 64 บิต) ถูกคอมไพล์ใน 'pkg' แต่ฉันเพิ่งติดตั้ง 64bits หนึ่ง (กรณีของฉัน)
aaossa

1
ใช่หลังจากพยายามมาหลายครั้งนี่เป็นวิธีเดียวที่ได้ผล .... คนอื่น ๆ ( reddit.com/r/rails/comments/30s1cz/… ) แนะนำให้ย้ายไปที่บางอย่างเช่นคนจรจัดและข้าม Windows + Rails ไปเลย
hello_earth

1
ฉันยืนยันว่านี่เป็นวิธีเดียวที่ใช้ได้กับ windows 10 ลองแก้ไขสองสามครั้ง แต่นี่เป็นวิธีเดียวที่ใช้ได้ผล
numediaweb

1
ฉันได้ทำตามขั้นตอนที่กล่าวไปแล้ว แต่ฉันไม่เห็นโฟลเดอร์ใดที่สร้างด้วยชื่อpkgนี้
Yashu Mittal

ทำงานให้ฉันจนถึงyou'll find a dir named 'pkg' generatedขณะที่ฉันไม่เห็นไดเร็กทอรีดังกล่าวที่ไหนเลย วิธีแก้ปัญหาของ @Edson Momm ด้านล่างใช้ได้ผลสำหรับฉัน
MSC

19

เนื่องจากมีการรวมคำขอดึง # 229จึงสามารถติดตั้ง sqlite3 ต่อgit:คีย์ได้ เป็นไปได้ที่จะใช้ sqlite3 ได้อย่างง่ายดายผ่านการเพิ่มนี้ในGemfile:

gem 'sqlite3', git: "https://github.com/sparklemotion/sqlite3-ruby"

สิ่งนี้ใช้ได้กับ RubyInstaller-2.4 และใหม่กว่า โดยจะติดตั้งแพคเกจ Pacman ต้องเมื่อคุณเรียกใช้mingw-w64-x86_64-sqlite3bundler install

มีบางคำแนะนำเพิ่มเติมสำหรับทางรถไฟบน Windows ในที่มีRubyInstaller2 คำถามที่พบบ่อย


1
คำตอบนี้มีประโยชน์สำหรับผู้ติดตั้ง Ruby รุ่นใหม่ Ruby รุ่นRuby 2.5.1p57 (2018-03-29 แก้ไข 63029)และรุ่นรางRails 5.2.1
KTM

1
PR ได้ถูกรวมเข้าด้วยกันในขณะเดียวกัน ฉันอัปเดตคำตอบตามนั้น
Lars Kanis

เพื่อแก้ไขปัญหา SSL ที่ฉันใช้: gem 'sqlite3', git: "git: //github.com/sparklemotion/sqlite3-ruby.git"
GrabzIt

13
gem uninstall sqlite3 --all
ridk exec pacman -S mingw-w64-x86_64-sqlite3
gem inst sqlite3 --platform ruby

สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้

Windows 10
Ruby 2.5.3
Rails 5.2.2

1
OMG เป็นของจริง: D สิ่งนี้ใช้ได้กับฉันเท่านั้น Windows 10 นั้นแย่มากสำหรับ RoR ขอบคุณมาก!
ผู้ใช้ 987

ทำงานให้ฉันด้วย ปัญหาของฉันเริ่มต้นหลังจากอัปเดตจาก Ruby 2.4 เป็น Ruby 2.6 บน windows 10
knut

นี่เป็นคำตอบสำหรับฉันเช่นกันใน Win10 Ruby 2.6 (x64) ขอขอบคุณ!
vercingortix

ที่จริงฉันต้องทำสองสามครั้ง ดูเหมือนว่าเมื่อใดก็ตามที่ฉันจะbundle installติดตั้งอัญมณีใหม่ฉันจะพบปัญหานี้อีกครั้งและจะต้องทำซ้ำขั้นตอนข้างต้น
vercingortix


5

ไม่มีการรวบรวมแหล่งที่มาหรือดาวน์โหลดไลบรารีที่รวบรวมไว้ล่วงหน้าจะช่วยแก้ปัญหานี้ได้เชื่อฉันว่าฉันลองทุกอย่างแล้วปัญหาอยู่ที่อื่น นี่คือวิธีการทำงานบน windows:

bundle update sqlite3

คุณอาจได้รับข้อผิดพลาดอื่นที่คล้ายกันหลังจากนี้เกี่ยวกับ nokogiri แก้ไขด้วยคำสั่ง:

bundle update nokogiri

สนุกกับแอพ Ruby ของคุณ!


4

การถอนการติดตั้งและติดตั้งอัญมณี sqlite3 ใหม่ใช้งานได้สำหรับฉัน

gem uninstall sqlite3

bundle


4

ติดตั้งอย่างเป็นทางการที่ดีที่สุด

ฉันใช้ราง 5.2.1p57, Windows 10 เพียงแค่เรียกใช้บรรทัดต่อไปนี้ก็ทำให้ปัญหาลดลง

gem uninstall sqlite3

และถอนการติดตั้งเวอร์ชันที่ติดตั้งทั้งหมด ดำเนินการคำสั่งต่อไปนี้อีกครั้ง

gem install sqlite3 --platform=ruby

ตอนนี้คุณทำเสร็จแล้ว โปรดแจ้งให้เราทราบหากยังมีปัญหาอยู่


3

หากคำตอบด้านบนไม่ได้ผลการแก้ไขที่ฉันค้นพบคือไปที่ Gemfile ของคุณและเพิ่มหมายเลขเวอร์ชัน 1.3.11 (แทนที่จะเป็น 1.3.9) ต่อจาก sqlite3 ดังนั้นบรรทัดใน Gemfile ของคุณควรอ่าน:

# Use sqlite3 as the database for Active Record
gem 'sqlite3',  '1.3.11'

2

ฉันมีข้อผิดพลาดเดียวกันเมื่อฉันอัปเกรดเวอร์ชัน Ruby เป็น 2.5.X. ฉันติดตาม rails task --traceว่า sqlite3 ไม่สามารถใช้ได้กับเวอร์ชัน 2.5 กว่าที่ฉันจะเปลี่ยน GemFile ของฉันอัญมณี "sqlite3" เปลี่ยนเป็น "sqlite3-ruby" หลังจากที่ฉันถอนการติดตั้ง gem "sqlite3" และในที่สุดฉันก็เรียกใช้ไฟล์bundle install.

ฉันไม่รู้ว่าเป็นเพราะอะไร ... ฉันอ่านว่า "sqlite3" ยังใช้ไม่ได้กับ Ruby 2.5 แต่ฉันไม่แน่ใจ


2

เพื่อหลีกเลี่ยงข้อผิดพลาดนี้ตรวจสอบให้แน่ใจว่าgem sqlite3ได้เพิ่มลงใน Gemfile แล้ว จากนั้นแยก "exe" s และ "dll" จากลิงก์ดาวน์โหลด Sqliteไปยังโฟลเดอร์ bin ของ Ruby หากปัญหายังคงมีอยู่ ลองสิ่งนี้:

bundle update

gem uninstall sqlite3

กำหนดตัวเลือกระหว่าง sqlite3 หลายเวอร์ชันให้เลือกตัวเลือกสุดท้าย "ทุกเวอร์ชัน" ป้อนหมายเลขสุดท้ายที่นี่

เลือกอัญมณีที่จะถอนการติดตั้ง:
1. sqlite3-1.3.13
2. sqlite3-1.3.13-x64-mingw32
3. ทุกเวอร์ชัน
> 3 .
.
หากคุณลบอัญมณีนี้จะไม่พบการอ้างอิงเหล่านี้
ดำเนินการต่อโดยถอนการติดตั้งหรือไม่ [yN]
> y

gem install sqlite3 --platform=ruby

rails s

สิ่งนี้ควรใช้งานได้

อ่านลิงก์นี้เพื่อดูคำอธิบายเพิ่มเติมหากข้างต้นเหมาะกับคุณ


1

สิ่งนี้เกิดขึ้นกับฉันเช่นกัน ปรากฎว่าตอนแรกฉันติดตั้ง SQLite 1.3.10 แล้ว แต่จากนั้นฉันก็คัดลอกอัญมณีบางส่วนจากโครงการ screencasts กวดวิชา Rails และแสดงรายการ SQLite 1.3.9 จากนั้นฉันก็พบข้อผิดพลาดเดียวกันกับที่คุณทำ ฉันเปลี่ยนกลับเป็น 1.3.10 และใช้งานได้

(นี่คือบน Windows 7 ฉันกำลังเรียกใช้บทช่วยสอน screencast บน Cloud9 IDE)


1

นี่เป็นทางออกเดียวที่ใช้ได้สำหรับฉันซึ่งได้มาจากโพสต์ปัญหา GitHub นี้ :

  1. รับแหล่ง sqlite3 เวอร์ชัน autoconf จากhttps://www.sqlite.org/download.html https://www.sqlite.org/download.html
  2. เริ่ม MSYS เชลล์
  3. ในตำแหน่งที่แตกสำหรับ sqlite3 ของคุณให้กำหนดค่าเวอร์ชันคงที่เท่านั้นเพื่อหลีกเลี่ยงการเก็บ DLL บน PATH: ./configure --disable-sharedในเส้นทาง:
  4. สร้างและติดตั้ง: make install DESTDIR=/c/dev/ruby/tmp . คุณสามารถเปลี่ยนไดเร็กทอรี
  5. เปิดพรอมต์คำสั่งของ windows และเรียกใช้ gem uninstall sqlite3 --allเพื่อลบอัญมณี sqlite3 ที่มีอยู่ทั้งหมด
  6. อีกครั้งบนจอพร้อมรับคำสั่งของหน้าต่างสร้างและติดตั้งอัญมณี gem install sqlite3 --platform=ruby -- --with-sqlite3-include=C:\dev\ruby\tmp\usr\local\include --with-sqlite3-lib=C:\dev\ruby\tmp\usr\local\libsqlite3: ไดเร็กทอรี include และ lib อาจแตกต่างกันดังนั้นโปรดตรวจสอบในตอนแรก

ฉันใช้ Ruby เวอร์ชัน 2.5.1 และ Rails เวอร์ชัน 5.2.0 บน Windows 10


และไฟล์ gemspec ในโฟลเดอร์ต้นทางของ Gem
Bilal Qadri

1

เจอแล้ว! ฉันเห็นสิ่งนี้https://www.youtube.com/watch?v=lsrzvX0qzmA
ฉันติดตั้ง: Rails version: 5.2.1 Ruby version: 2.5.3 (x64-mingw32) Sqlite version 1.3.13
and I have your problems .. . วิธีแก้ปัญหาของฉัน:

  1. ในโฟลเดอร์การติดตั้งของคุณเช่น C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \
    คุณมีโฟลเดอร์: "sqlite3-1.3.13" "sqlite3-1.3.13-x64-mingw32"
  2. ค้นหาไฟล์
    C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13 \ lib \ sqlite3 \ sqlite3_native.so
  3. คัดลอกใน C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13-x64-mingw32 \ lib \ sqlite3 \ 2.5 \ sqlite3_native.so (อาจไม่มีโฟลเดอร์ - สร้างและ วาง)

1

อัปเดตแล้ว

การเพิ่มด้านล่างไปยัง Gemfile ที่แก้ไขสำหรับฉัน: gem 'sqlite3', '1.4.0', แพลตฟอร์ม:: Ruby


1

เปลี่ยนอัญมณี sqlite3 ของคุณใน Gemfile สำหรับสิ่งนี้:

gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-ruby", branch: "add-gemspec"

จากนั้นเรียกใช้:

bundle install

0

สำหรับผู้ใช้ OSX อาจเป็นผลมาจากการใช้ Ruby manager (เช่น rvm)

หากคุณแก้ไข ~ / .bash_profile ของคุณและเพิ่มสิ่งนี้:

[[ "$APP" = *"/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/"* ]] && {
  echo Xcode detected
  rvm use system
}

คุณสามารถแก้ไขปัญหาได้ รีสตาร์ท Xcode ก่อนที่จะพยายามสร้างอีกครั้ง

ติดตามปัญหาที่แท้จริงได้ที่นี่: https://openradar.appspot.com/28726736 )

เครดิตเต็มไปที่: https://egeek.me/2018/04/14/ipa-export-error-in-xcode-and-ruby/

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.