【问题标题】:How do connect from Sequel to SQLite如何从 Sequel 连接到 SQLite
【发布时间】:2018-10-09 01:12:30
【问题描述】:

我的 SQLite 数据库位于p:\StockSymbols.db

我正在尝试通过sequel gem 进行连接,但它不喜欢它。

C:\Users\murth>irb irb(main):001:0> require 'sqlite3'
=> true irb(main):002:0> require 'sequel'
=> true irb(main):003:0> Sequel.sqlite('P:\\StockSymbols.db')
=> #<Sequel::SQLite::Database: {:adapter=>:sqlite, :database=>"P:\\StockSymbols.db"}> irb(main):004:0>  Sequel.connect("P:\\StockSymbols.db") URI::InvalidURIError: bad URI(is not URI?): P:\StockSymbols.db
        from C:/Ruby24-x64/lib/ruby/2.4.0/uri/rfc3986_parser.rb:67:in `split'
        from C:/Ruby24-x64/lib/ruby/2.4.0/uri/rfc3986_parser.rb:73:in `parse'
        from C:/Ruby24-x64/lib/ruby/2.4.0/uri/common.rb:231:in `parse'
        from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/sequel-5.13.0/lib/sequel/database/connecting.rb:34:in `connect'
        from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/sequel-5.13.0/lib/sequel/core.rb:121:in `connect'
        from (irb):4
        from C:/Ruby24-x64/bin/irb.cmd:19:in `<main>' irb(main):005:0> Sequel.connect("sqllite:///P:/StockSymbols.db") Sequel::AdapterNotFound: LoadError: cannot load such file -- sequel/adapters/sqllite
        from C:/Ruby24-x64/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from C:/Ruby24-x64/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/sequel-5.13.0/lib/sequel/database/connecting.rb:88:in `load_adapter'
        from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/sequel-5.13.0/lib/sequel/database/connecting.rb:17:in `adapter_class'
        from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/sequel-5.13.0/lib/sequel/database/connecting.rb:36:in `connect'
        from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/sequel-5.13.0/lib/sequel/core.rb:121:in `connect'
        from (irb):5
        from C:/Ruby24-x64/bin/irb.cmd:19:in `<main>'

【问题讨论】:

    标签: ruby sequel


    【解决方案1】:

    希望你也安装了 sqlite3。您可能还需要在 Sequel.connect 之前的同一个 irb 会话中 require 'sqlite3'

    另外,使用snake_case 重命名数据库。只是一个约定。

    require 'sequel'
    require 'sqlite3'
    
    DB = Sequel.connect('sqlite://your_db.db') # ./your_db.db
    

    【讨论】:

    • 是的,我确实有 sqlite3 并更新了上面的代码。我仍然有同样的问题。我猜这与我的连接方式有关。我的数据库在 p 中:如何在 windows 中使用文件名创建 Sequel.connect?
    • @junkone 尝试将您的数据库移动到与您的项目相同的工作目录中。
    • 也试过了。对于 eg.irb(main):025:0> File.exists?("StockSymbols.db") => true irb(main):026:0> FileUtils.pwd => "P:/" irb(main): 027:0> File.exists?("StockSymbols.db") => true irb(main):028:0> Sequel.connect("sqllite:////StockSymbols.db") Sequel::AdapterNotFound: LoadError:无法从 C:/Ruby24 加载此类文件 -- sequel/adapters/sqllite-
    • @junkone 四个正斜杠?不应该是 2 或 3 吗?
    猜你喜欢
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    相关资源
    最近更新 更多