gpt4 book ai didi

ruby - SQlite错误: "no such table "

转载 作者:行者123 更新时间:2023-12-02 09:06:22 26 4
gpt4 key购买 nike

我目前正在用 Ruby 构建一个简单的银行程序。我已经设置了MVC风格。我收到以下错误消息。

/home/devil/.rvm/gems/ruby-2.2.1/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:91:in `initialize': no such table: managers (SQLite3::SQLException)
from /home/devil/.rvm/gems/ruby-2.2.1/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:91:in `new'
from /home/devil/.rvm/gems/ruby-2.2.1/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:91:in `prepare'
from /home/devil/.rvm/gems/ruby-2.2.1/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:134:in `execute'
from /home/devil/Desktop/RubyBank-manager_model/model.rb:19:in `initialize_database'
from /home/devil/Desktop/RubyBank-manager_model/model.rb:7:in `initialize'
from controller.rb:8:in `new'
from controller.rb:8:in `initialize'
from controller.rb:124:in `new'
from controller.rb:124:in `<main>'

当天早些时候,该程序运行良好。我在 Controller 方法中更改了局部变量的名称,它开始向我抛出上述错误。

我尝试过但失败的事情:

  • 将我的 SQlite gem 文件更新到最新版本。

  • 恢复到我的 GitHub 上之前有效并尝试运行该程序的提交。

  • 仅将有问题的局部变量方法恢复为其以前的功能名称。

  • 谷歌搜索,让我心满意足。

查看我的 GITHUB 程序代码:https://github.com/erikasland/RubyBank/tree/add_manager

最佳答案

看起来问题是在 this 中创建的提交,位于 model.rb 第 19 行。您正在尝试通过选择来检查表是否存在:

managers_exist = db.execute("SELECT * FROM managers").length > 0

这可以通过查询架构而不是表来解决 - 您已经使用 accounts 表成功完成了此操作:

accounts_table_exists = db.execute("SELECT 1 FROM sqlite_master WHERE 
type='table' AND name= ?", "accounts").length > 0

请注意,您是从 sqlite_master 中进行选择,而不是从 accounts 中进行选择。你想要的是这样的:

managers_exist= db.execute("SELECT 1 FROM sqlite_master WHERE 
type='table' AND name= ?", "managers").length > 0

但是,在我看来,CREATE TABLE IF NOT EXISTS 方法可能是您真正正在寻找的解决方案。

关于ruby - SQlite错误: "no such table ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32194515/

26 4 0