제가 레일즈 3.0.3 앱의 데이터베이스를 바꾸고 있습니다. postgres를 mysql에서 개발하여 아마존의 rds . 내가 변경하기 전에 내 dev 머신에 mysql2 어댑터를 사용하여 mysql을 사용하여 테스트 코드를 실행했다. 내 테스트 코드에서 아직까지 아직까지 얻을 수 없었던 일부 오류가 발생했습니다 ( ). 기본적으로 큰 xml 업로드를 저장하는 데 사용되는 모델이 있습니다. 내 테스트 코드는 생성 라인은 다음과 같은 오류이상한 오류를 일으키는 postgres에서 mysql 로의 마이그레이션 mysql2 :: 오류 : MySQL 서버가 없어졌습니다
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'
....
내가 텍스트 필드에 파일 내용을 저장 한을 던지고이
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
같은 것을 보인다. 나는 깨닫는다 나는 진지하게 s3에 파일을 저장하는 것을보아야한다. 그러나 이것은 내가 가지고있는 설정이다. 포스트 그레스에서는 모든 것이 잘 작동했습니다. 그러나 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
사람이 문제가 무엇인지에 관해서는 단서가 있습니까 그리고 그것은 방법을 고정 할 수 있습니까? 어떤 도움이라도 대단히 감사하겠습니다.
코너에 조정에 대한 약간의 정보가, 나는 자바와 내가 함께 몇 년 전에이 문제를 가지고하는 데 사용 문제가 무엇인지 제대로 기억할 수 없습니다. 그러나 우리는 서버에 과부하가 걸렸습니다 (아마도 트랜잭션이 서버에 비해 너무 컸을 것입니다). 그리고 "서버가 사라졌습니다."라는 메시지와 함께 응답을 멈추었습니다. 당신은 작은 데이터 세트로 이것을 시도 했습니까? 또는 작은 파일? – Augusto
안녕하세요 Augusto, 답장을 보내 주셔서 감사합니다.작은 파일로 테스트를 시도했지만 모든 것이 원활하게 실행되지만 업로드 할 수있는 데이터의 종류를 나타내는 테스트 파일은 실패합니다. 이 파일들은 크고 (1.5-2.5mb) 크나큰 것은 아닙니다. 나는 연결이 시간 초과되고 삽입 전에 삭제되었다고 생각하지만 왜 그렇게 될지 확신하지 못합니다. – Conor
mysql에서 매우 큰 시간 초과를 설정하십시오 - 자세한 내용은 여기에서 찾을 수 있습니다 - http://dev.mysql.com/doc/ refman/5.0/ko/gone-away.html – ajreal