【问题标题】:Sinatra Activerecord ErrorSinatra Activerecord 错误
【发布时间】:2014-07-10 04:22:54
【问题描述】:

我在构建数据库时遇到了一个小型 sinatra 应用程序问题

在 Rakefile 中:

require 'sinatra/activerecord/rake'
require './todo'

在 myApp.rb 中:

require 'sinatra'
require 'shotgun'
require 'sinatra/activerecord'
set :database, "sqlite3:///foo.sqlite3"

class Todo < ActiveRecord::Base
end

但是当我运行应用程序时,它会返回给我:

SQLite3::SQLException: no such table: todos: SELECT "todos".* FROM "todos"

【问题讨论】:

  • 有了这些信息,我无法为您提供帮助,抱歉。你什么时候得到这个异常? ./todo 是你的 myApp.rb 吗?而"sqlite3:///foo.sqlite3" 应该是"sqlite3:foo.sqlite3"

标签: sinatra


【解决方案1】:

错误是告诉你表todos不存在。

解决方案是创建一个名为todos 的表。您可以在 sqlite3 shell 中使用create table todos(params) 执行此操作,其中 params 是表将要保存的任何不同参数。

在程序内部执行此操作,据我了解 ActiveRecord 使用迁移来更新数据库。 @Morgan 提供了a rakefile(来自this question)来处理这个问题。

或者,您可以查看Datamapper 来处理您的数据库交互,由于您没有使用rails,您可能会发现这更容易理解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 2012-02-05
    • 2013-05-17
    • 2013-07-31
    • 2013-07-04
    • 1970-01-01
    相关资源
    最近更新 更多