我刚开始学习Ruby on Rails。当我使用rails进行测试时,出现错误:
UserTest#test_the_truth:
ActiveRecord :: StatementInvalid:Mysql2 :: Error:Table' eula_test.destroys'不存在:从destroys
显示完整的字段
我不知道什么是eula_test.destroys,我该如何解决这个问题。
答案 0 :(得分:0)
检查您的迁移文件。在db / migrate.rb和db / schema.rb上,您可以查看是否有该表。
答案 1 :(得分:0)
似乎没有人能够回答这个问题,但最好根据你得到的错误进行猜测,看起来你需要一个联接表,因为你很可能有一个" has_and_belongs_to_many"你的模型中的指令eula.rb和test.rb
所以你需要创建一个迁移:rails g migration CreateEulaTest
然后编辑迁移以包含一个索引,该索引告诉db在eula_test表中查找要加入的数据。
您需要使用以下内容编辑迁移:
def up
create_table :eula_test, :id => false do |t|
t.integer :eula_id
t.integer :test_id
end
add_index(:eula_test, [:eula_id, :test_id]
end
def down
drop_table :eula_test
end
end
注意:此表格不需要它自己的ID,因此:id =>假 此外,add_index部分是两个模型之间的外键,它允许数据库知道您正在通过表来建立您的指令,例如create和destroy等。
运行rails db:migrate for rails 5或更高版本,rake db:migrate< 5
您可能需要检查模型以确保拥有正确的has_to_and_belongs_to_many设置。
很可能你错过了本教程的这一部分。有些教程无法解释为什么要做的事情,他们只是向您展示代码并让您弄明白。
答案 2 :(得分:0)
ERROR in app: Exception on / [GET]
Traceback (most recent call last):
File "MY DIRECTORY\app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "MY DIRECTORY\app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "MY DIRECTORY\app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "MY DIRECTORY\_compat.py", line 39, in reraise
raise value
File "MY DIRECTORY\app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "MY DIRECTORY\app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "MY FLASK APP FILE\app.py", line 16, in index
cursor = mydb.cursor()
File "MY FLASK APP FILE\lib\site-packages\mysql\connector\connection.py", line 1022, in cursor
self.handle_unread_result()
File "MY FLASK APP FILE\lib\site-packages\mysql\connector\connection.py", line 1286, in handle_unread_result
raise errors.InternalError("Unread result found")
mysql.connector.errors.InternalError: Unread result found
应该修复它:)