我正在切换一个rails 3.0.3应用程序的数据库我已经从 postgres开发到MySQL,这样我就可以利用亚马逊的RDS 。在我制作 之前,我一直使用mysql在我的dev 机器上运行我的测试代码,并使用mysql2适配器。我的测试代码正在抛出一些我还没有完全弄到底的错误。 基本上我有一个模型,用于存储大型XML上载。我 测试代码看起来是这样的从postgres迁移到mysql导致奇怪的错误Mysql2 ::错误:MySQL服务器已经消失
test "xml upload for large file" do
file = File.new("test/files/lib/upload_sample.xml")
upload = XmlUpload.create(:xml_contents => contents = file.read)
.....
.....
end
的创建线扔了以下错误
ActiveRecord::StatementInvalid: Mysql2::Error: SAVEPOINT active_record_1 does not exist: ROLLBACK TO SAVEPOINT active_record_1
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/ active_record/connection_adapters/abstract_adapter.rb:202:in `rescue in log'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract_adapter.rb:194:in `log'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/mysql2-0.2.6/lib/ active_record/connection_adapters/mysql2_adapter.rb:314:in `execute'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/mysql2-0.2.6/lib/ active_record/connection_adapters/mysql2_adapter.rb:358:in `rollback_to_savepoint'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/ active_record/connection_adapters/abstract/database_statements.rb: 149:in `rescue in transaction'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/ active_record/connection_adapters/abstract/database_statements.rb: 127:in `transaction'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/ active_record/transactions.rb:204:in `transaction'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/ active_record/transactions.rb:287:in `with_transaction_returning_status'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/ active_record/transactions.rb:237:in `block in save'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/ active_record/transactions.rb:248:in `rollback_active_record_state!'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/ active_record/transactions.rb:236:in `save'
....
我一直保存在文本字段中的文件内容。我意识到 我应该认真考虑将这些文件存储在s3中,但这是我目前设置的 安装程序。在postgres一切工作正常 但为了让事情与MySQL的工作,我必须设置:限制 变量,以便使用LONGTEXT而不是标准文本 字段。这些文件可以是相当大的,但是当我测试使用小文件 没有问题
我可以完全找错了树,但我怀疑 问题可能是由数据库连接导致的被丢弃基于 上当我在开发 模式下尝试上传文件时,引发的错误。我做了一些检查这个错误,我不知道什么可能会丢弃连接,该文件不需要8小时(默认连接下降时间)插入
Mysql2 ::错误:MySQL服务器已经消失客户:INSERT INTO xml_uploads
........
我的database.yaml设置如下。
test:
adapter: mysql2
encoding: utf8
reconnect: true
database: app_test
username: username
password: password
host: localhost
没有人有任何线索的问题是什么,以及如何 固定?任何帮助,这将不胜感激。
康纳尔一些信息,我以前也有这个问题,几年前与Java和我无法正确记住问题所在。但我记得我们正在重载服务器(可能事务对于服务器来说太大了),并且它停止响应那个“服务器已经消失”的消息。你有没有用小数据集来试试这个?或一个小文件? – Augusto 2011-02-10 11:57:37