2016-09-09 18 views
0

これに関連するいくつかの関連する質問がありますが、私のケースではこれらの解決策はすべて解決していません。なぜ私は再度尋ねることを考えたのですか?私はsqlalchemy ormを使用してクエリの下で発生している間、私はこのエラーを取得しています。SQLAlchemy:クエリ中にMySQLサーバへの接続が失われました

Traceback (most recent call last): 
File "MyFile.py", line 1010, in <module> 
handler.handle(line.split('\t')) 
File "MyFile.py", line 849, in handle 
self.getRecord(whatIfFlag, id) 
File "MyFile.py", line 143, in getRecord 
newRecord = self.recordSearcher.getRecordByParams(name, pId) 
File "abc.py", line 67, in getRecord 
File "/opt/product/python/prod/bin/2.7.6/lib/python2.7/site-packages/SQLAlchemy-0.9.4-py2.7-linux-x86_64.egg/sqlalchemy/orm/query.py", line 2361, in one 
ret = list(self) 
File "/opt/product/python/prod/bin/2.7.6/lib/python2.7/site-packages/SQLAlchemy-0.9.4-py2.7-linux-x86_64.egg/sqlalchemy/orm/query.py", line 2404, in __iter__ 
return self._execute_and_instances(context) 
File "/opt/product/python/prod/bin/2.7.6/lib/python2.7/site-packages/SQLAlchemy-0.9.4-py2.7-linux-x86_64.egg/sqlalchemy/orm/query.py", line 2419, in _execute_and_instances 
result = conn.execute(querycontext.statement, self._params) 
File "/opt/product/python/prod/bin/2.7.6/lib/python2.7/site-packages/SQLAlchemy-0.9.4-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 720, in execute 
return meth(self, multiparams, params) 
File "/opt/product/python/prod/bin/2.7.6/lib/python2.7/site-packages/SQLAlchemy-0.9.4-py2.7-linux-x86_64.egg/sqlalchemy/sql/elements.py", line 317, in _execute_on_connection 
return connection._execute_clauseelement(self, multiparams, params) 
File "/opt/product/python/prod/bin/2.7.6/lib/python2.7/site-packages/SQLAlchemy-0.9.4-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 817, in _execute_clauseelement 
compiled_sql, distilled_params 
File "/opt/product/python/prod/bin/2.7.6/lib/python2.7/site-packages/SQLAlchemy-0.9.4-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 947, in _execute_context 
context) 
File "/opt/product/python/prod/bin/2.7.6/lib/python2.7/site-packages/SQLAlchemy-0.9.4-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 1108, in _handle_dbapi_exception 
exc_info 
File "/opt/product/python/prod/bin/2.7.6/lib/python2.7/site-packages/SQLAlchemy-0.9.4-py2.7-linux-x86_64.egg/sqlalchemy/util/compat.py", line 185, in raise_from_cause 
reraise(type(exception), exception, tb=exc_tb) 
File "/opt/product/python/prod/bin/2.7.6/lib/python2.7/site-packages/SQLAlchemy-0.9.4-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 940, in _execute_context 
context) 
File "/opt/product/python/prod/bin/2.7.6/lib/python2.7/site-packages/SQLAlchemy-0.9.4-py2.7-linux-x86_64.egg/sqlalchemy/engine/default.py", line 435, in do_execute 
cursor.execute(statement, parameters) 
File "build/bdist.linux-x86_64/egg/MySQLdb/cursors.py", line 205, in execute 
File "build/bdist.linux-x86_64/egg/MySQLdb/connections.py", line 36, in defaulterrorhandler 
sqlalchemy.exc.OperationalError: (OperationalError) (2013, 'Lost connection to MySQL server during query') .... 


query = self.__session.query(MyTable).filter(and_(MyTable.NAME == name,MyTable.P_ID == p_id) 
try: 
    record = query.one() 
except NoResultFound: 
    new_record = MyTable(params) 
    self.__session.add(new_record) 
    self.__session.commit() 
    self.__session.close() 

1つのレコードしか返さないと予想されます。これが私のセッションを作成する方法です。

sqlEngine = sqlalchemy.create_engine(self.getMySQLURI(), pool_recycle=10800, echo=False, echo_pool=False) 
session = scoped_session(sessionmaker(autoflush=True, 
             autocommit=False, 
             bind=sqlEngine, 
             expire_on_commit=False)) 

これらは私のmysql設定です:interactive_timeoutとwait_timeoutは28800〜8時間に設定されています。 net_write_timeoutは3600〜60分に設定され、net_read_timeoutは300〜5分に設定されます。

ご協力いただきまして誠にありがとうございます。

答えて

0

アプリケーションサーバーとデータベースサーバーの間のtcp_connect_timeoutに問題があることが判明しました。 tcp connect timeoutはデフォルトで1時間、プールのリサイクル設定は3時間でした。だから1と3の間の何かが失敗していた。後でこれに直面する可能性のある人を助けるための回答を投稿する。

+2

どこでもtcp_connect_timeout変数に関する情報が見つかりません。あなたはそれについての追加情報を提供できますか? – Raphi

関連する問題