Closed vorpal-buildbot closed 5 years ago
500 error at /api/upload
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212880486' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212880486, 1, 'PDT Round 3 vs diamond dust', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '212880486', 'lines': "PennyDreadful\r\nPDT Round 3 vs diamond dust\r\nTourney, BuggedCardObserver, PennyDreadfulLegality\r\nRakura,-DiamondDust-\r\n\r\n== Game 1 (654681258) ==\r\n[Time] 1544750447\r\n[12:20:48] PDBot has started watching.\r\n[Gatherling] Event=Penny Dreadful Thursdays 10.10\r\n[Gatherling] Round=3\r\n[12:21:02] -DiamondDust- chooses to play first.\r\n[12:21:06] -DiamondDust- keeps this hand.\r\n[12:21:50] Rakura keeps this hand.\r\n[12:21:50] Turn 1: -DiamondDust-\r\n[12:21:50] -DiamondDust- skips their draw step.\r\n[12:21:51] -DiamondDust- plays [Swamp].\r\n[12:21:53] -DiamondDust- casts [Night Market Lookout].\r\n[12:21:55] Turn 1: Rakura\r\n[12:21:56] Rakura plays [Selesnya Guildgate].\r\n[12:21:56] Turn 2: -DiamondDust-\r\n[12:22:00] -DiamondDust- plays [Swamp].\r\n[12:22:03] Rakura is being attacked by [Night Market Lookout].\r\n[12:22:03] -DiamondDust- puts triggered ability from [Night Market Lookout] onto the stack (Whenever Night Market Lookout becomes tapped, each opponent loses 1 life and you gain 1 life.).\r\n[12:22:09] -DiamondDust- casts [Pulse Tracker].\r\n[12:22:11] -DiamondDust- casts [Bloodsoaked Champion].\r\n[12:22:11] Turn 2: Rakura\r\n[12:22:12] Rakura plays [Forest].\r\n[12:22:14] Rakura casts [Call of the Conclave].\r\n[12:22:15] Rakura's [Call of the Conclave] creates a Centaur token.\r\n[12:22:16] Turn 3: -DiamondDust-\r\n[12:22:18] -DiamondDust- plays [Swamp].\r\n[12:22:22] Rakura is being attacked by [Bloodsoaked Champion], [Pulse Tracker], and [Night Market Lookout].\r\n[12:22:23] -DiamondDust- puts triggered ability from [Pulse Tracker] onto the stack (Whenever Pulse Tracker attacks, each opponent loses 1 life.).\r\n[12:22:23] -DiamondDust- puts triggered ability from [Night Market Lookout] onto the stack (Whenever Night Market Lookout becomes tapped, each opponent loses 1 life and you gain 1 life.).\r\n[12:22:27] [Centaur] token blocks [Night Market Lookout].\r\n[12:22:32] -DiamondDust- casts [Supernatural Stamina] targeting [Night Market Lookout].\r\n[12:22:33] -DiamondDust- puts triggered ability from [Night Market Lookout] onto the stack (When this creature dies, return it to the battlefield tapped under its owner's control.).\r\n[12:22:38] -DiamondDust- casts [Vicious Conquistador].\r\n[12:22:39] Turn 3: Rakura\r\n[12:22:40] Rakura plays [Forest].\r\n[12:22:43] Rakura casts [Rampant Growth].\r\n[12:22:51] Turn 4: -DiamondDust-\r\n[12:22:56] Rakura is being attacked by [Vicious Conquistador], [Night Market Lookout], [Bloodsoaked Champion], and [Pulse Tracker].\r\n[12:22:57] -DiamondDust- puts triggered ability from [Pulse Tracker] onto the stack (Whenever Pulse Tracker attacks, each opponent loses 1 life.).\r\n[12:22:58] -DiamondDust- puts triggered ability from [Vicious Conquistador] onto the stack (Whenever Vicious Conquistador attacks, each opponent loses 1 life.).\r\n[12:22:58] -DiamondDust- puts triggered ability from [Night Market Lookout] onto the stack (Whenever Night Market Lookout becomes tapped, each opponent loses 1 life and you gain 1 life.).\r\n[12:23:09] Turn 4: Rakura\r\n[12:23:13] Rakura plays [Selesnya Guildgate].\r\n[12:23:20] Turn 5: -DiamondDust-\r\n[12:23:59] Rakura is being attacked by [Vicious Conquistador], [Night Market Lookout], [Bloodsoaked Champion], and [Pulse Tracker].\r\n[12:24:00] -DiamondDust- puts triggered ability from [Vicious Conquistador] onto the stack (Whenever Vicious Conquistador attacks, each opponent loses 1 life.).\r\n[12:24:01] -DiamondDust- puts triggered ability from [Pulse Tracker] onto the stack (Whenever Pulse Tracker attacks, each opponent loses 1 life.).\r\n[12:24:01] -DiamondDust- puts triggered ability from [Night Market Lookout] onto the stack (Whenever Night Market Lookout becomes tapped, each opponent loses 1 life and you gain 1 life.).\r\n[12:24:08] Rakura has conceded from the game.\r\nWinner: -DiamondDust-\r\nGame 1 Completed.\r\n[12:24:12] Rakura has left the game.\r\n== Game 2 (654681682) ==\r\n[Time] 1544750700\r\n[12:25:01] PDBot has started watching.\r\n[12:25:02] Rakura mulligans to 6 cards.\r\n[12:25:08] -DiamondDust- keeps this hand.\r\n", 'start_time_utc': '1544750447', 'end_time_utc': '1544750708'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 108.162.229.186
Cf-Ray: 488cdff74f24a875-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 5056
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212880486' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212880486, 1, 'PDT Round 3 vs diamond dust', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; IntegrityError
500 error at /api/upload
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212948794' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212948794, 2, 'PDH', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '212948794', 'lines': "PennyDreadfulCommander\r\nPDH\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nKaitoukid111,Back_Alley_G\r\n\r\n== Game 1 (654946988) ==\r\n[Time] 1544923972\r\n[12:32:52] PDBot has started watching.\r\n[League] Host doesn't have active run\r\n[12:33:19] Back_Alley_G chooses to play first.\r\n[12:33:19] Back_Alley_G chooses [Brion Stoutarm] as their commander.\r\n[12:33:20] Kaitoukid111 chooses [Brago, King Eternal] as their commander.\r\n[12:33:25] Back_Alley_G keeps this hand.\r\n[12:33:32] Kaitoukid111 mulligans to 6 cards.\r\n[12:33:35] Kaitoukid111 keeps this hand.\r\n[12:33:37] Kaitoukid111 puts 1 card on top of their library.\r\n[12:33:37] Turn 1: Back_Alley_G\r\n[12:33:37] Back_Alley_G skips their draw step.\r\n[12:33:46] Back_Alley_G plays [Evolving Wilds].\r\n[12:33:54] Turn 1: Kaitoukid111\r\n[12:33:55] Kaitoukid111 plays [Island].\r\n[12:33:59] Back_Alley_G activates an ability of [Evolving Wilds] ( Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your ...).\r\n[12:34:04] Turn 2: Back_Alley_G\r\n[12:34:08] Back_Alley_G plays [Plains].\r\n[12:34:10] Back_Alley_G casts [Journeyer's Kite].\r\n[12:34:15] Turn 2: Kaitoukid111\r\n[12:34:16] Kaitoukid111 plays [Plains].\r\n[12:34:26] Turn 3: Back_Alley_G\r\n[12:34:29] trevor3693 has started watching.\r\n[12:34:33] trevor3693 has stopped watching.\r\n[12:34:34] Back_Alley_G plays [Mystifying Maze].\r\n[12:34:36] Back_Alley_G activates an ability of [Journeyer's Kite] ( Search your library for a basic land card, reveal it, and put it into your hand. Then shuffle you...).\r\n[12:34:40] Back_Alley_G reveals [Plains].\r\n[12:34:40] Turn 3: Kaitoukid111\r\n[12:34:46] Kaitoukid111 plays [Island].\r\n[12:34:48] Turn 4: Back_Alley_G\r\n[12:34:56] Back_Alley_G plays [Plains].\r\n[12:35:03] Back_Alley_G casts [Brion Stoutarm].\r\n[12:35:06] Turn 4: Kaitoukid111\r\n[12:35:09] Kaitoukid111 plays [Plains].\r\n[12:35:16] Kaitoukid111 casts [Brago, King Eternal].\r\n[12:35:17] Turn 5: Back_Alley_G\r\n[12:35:31] Back_Alley_G plays [Sunhome, Fortress of the Legion].\r\n[12:35:56] Back_Alley_G casts [Moltensteel Dragon].\r\n[12:36:06] Kaitoukid111 is being attacked by [Brion Stoutarm].\r\n[12:36:10] Kaitoukid111 has been dealt 4 total damage by Back_Alley_G's commander, [Brion Stoutarm].\r\n[12:36:11] Turn 5: Kaitoukid111\r\n[12:36:25] Turn 6: Back_Alley_G\r\n[12:36:46] Back_Alley_G plays [Encroaching Wastes].\r\n[12:36:55] Back_Alley_G casts [Gift of Immortality] targeting [Moltensteel Dragon].\r\n[12:37:07] Kaitoukid111 casts [Aethermage's Touch].\r\n[12:37:25] Kaitoukid111 put a card on the bottom of the library.\r\n[12:37:25] Kaitoukid111 put a card on the bottom of the library.\r\n[12:37:26] Kaitoukid111 put a card on the bottom of the library.\r\n[12:37:26] Kaitoukid111 puts triggered ability from [Evangel of Heliod] onto the stack (When Evangel of Heliod enters the battlefield, create a number of 1/1 white Soldier creature token...).\r\n[12:37:28] Kaitoukid111's [Evangel of Heliod] creates three Soldier tokens.\r\n[12:37:35] Back_Alley_G casts [Culling Dais].\r\n[12:37:39] Kaitoukid111 is being attacked by [Moltensteel Dragon].\r\n[12:37:45] Kaitoukid111 has conceded from the game.\r\nWinner: Back_Alley_G\r\nGame 1 Completed.\r\n[12:37:49] Kaitoukid111 has left the game.\r\n== Game 2 (654947538) ==\r\n[Time] 1544924306\r\n[12:38:26] PDBot has started watching.\r\n[12:38:34] [CHAT] Kaitoukid111: we have 4 now\r\n[12:38:41] [CHAT] Kaitoukid111: want to do multiplayer?\r\n[12:38:52] Kaitoukid111 chooses to play first.\r\n[12:38:52] Kaitoukid111 chooses [Brago, King Eternal] as their commander.\r\n[12:38:52] Back_Alley_G chooses [Brion Stoutarm] as their commander.\r\n[12:38:56] Kaitoukid111 mulligans to 6 cards.\r\n[12:39:01] Back_Alley_G keeps this hand.\r\n[12:39:05] Kaitoukid111 keeps this hand.\r\n[12:39:08] Kaitoukid111 puts 1 card on the bottom of their library.\r\n[12:39:08] Turn 1: Kaitoukid111\r\n[12:39:08] Kaitoukid111 skips their draw step.\r\n[12:39:25] [CHAT] Back_Alley_G: sure\r\n[12:39:27] Kaitoukid111 plays [Plains].\r\n[12:39:38] Kaitoukid111 has conceded from the game.\r\nWinner: Back_Alley_G\r\nGame 2 Completed.\r\nMatch Winner: Back_Alley_G: 2–0\r\n[12:39:41] Kaitoukid111 has left the game.\r\n", 'start_time_utc': '1544923972', 'end_time_utc': '1544924381'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 108.162.229.186
Cf-Ray: 489d716e5d1ea869-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 5390
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212948794' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212948794, 2, 'PDH', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; IntegrityError
500 error at /api/upload
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212986287' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212986287, 1, 'PD', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '212986287', 'lines': "PennyDreadful\r\nPD\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nXero,soldiermage\r\n\r\n== Game 1 (655092462) ==\r\n[Time] 1545011140\r\n[12:45:40] PDBot has started watching.\r\n[League] Host doesn't have active run\r\n[12:45:48] [CHAT] Xero: hi gl\r\n[12:45:48] soldiermage chooses to play first.\r\n[12:45:56] [CHAT] soldiermage: ty u2\r\n[12:45:57] soldiermage mulligans to 6 cards.\r\n[12:45:59] Xero keeps this hand.\r\n[12:46:02] soldiermage keeps this hand.\r\n[12:46:04] soldiermage puts 1 card on the bottom of their library.\r\n[12:46:04] Turn 1: soldiermage\r\n[12:46:04] soldiermage skips their draw step.\r\n[12:46:05] soldiermage plays [Nomad Outpost].\r\n[12:46:09] Turn 1: Xero\r\n[12:46:09] Xero plays [Evolving Wilds].\r\n[12:46:10] Xero activates an ability of [Evolving Wilds] ( Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your ...).\r\n[12:46:15] Turn 2: soldiermage\r\n[12:46:16] soldiermage plays [Boreal Shelf].\r\n[12:46:21] Turn 2: Xero\r\n[12:46:22] Xero plays [Forest].\r\n[12:46:25] Xero casts [Edge of Autumn].\r\n[12:46:32] Turn 3: soldiermage\r\n[12:46:47] soldiermage plays [Highland Weald].\r\n[12:46:49] Turn 3: Xero\r\n[12:46:52] Xero plays [Island].\r\n[12:46:57] Xero casts [Exploding Borders] targeting soldiermage.\r\n[12:47:00] Turn 4: soldiermage\r\n[12:47:07] soldiermage plays [Nomad Outpost].\r\n[12:47:12] soldiermage casts [Into the North].\r\n[12:47:19] Turn 4: Xero\r\n[12:47:23] Xero casts [Twinning Glass].\r\n[12:47:25] Xero plays [Evolving Wilds].\r\n[12:47:27] Xero activates an ability of [Evolving Wilds] ( Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your ...).\r\n[12:47:36] Turn 5: soldiermage\r\n[12:47:39] soldiermage plays [Plains].\r\n[12:47:46] soldiermage casts [Into the North].\r\n[12:47:52] Turn 5: Xero\r\n[12:47:58] Xero casts [Urban Evolution].\r\n[12:47:59] Xero draws three cards with [Urban Evolution].\r\n[12:48:05] Xero plays [Swamp].\r\n[12:48:07] Xero plays [Evolving Wilds].\r\n[12:48:10] Xero activates an ability of [Evolving Wilds] ( Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your ...).\r\n[12:48:23] Turn 6: soldiermage\r\n[12:48:27] soldiermage plays [Mountain].\r\n[12:48:31] soldiermage casts [Unexpected Results].\r\n[12:48:31] soldiermage reveals [Opulent Palace] with [Unexpected Results].\r\n[12:48:34] soldiermage puts [Opulent Palace] into play.\r\n[12:48:38] [CHAT] Xero: nice\r\n[12:48:39] soldiermage casts [Unexpected Results].\r\n[12:48:40] soldiermage reveals [Deny Reality] with [Unexpected Results].\r\n[12:48:44] soldiermage casts [Deny Reality] targeting [Twinning Glass].\r\n[12:48:44] soldiermage puts triggered ability from [Deny Reality] onto the stack (Cascade).\r\n[12:48:48] soldiermage casts [Unexpected Results].\r\n[12:48:48] soldiermage reveals [Highland Weald] with [Unexpected Results].\r\n[12:48:52] soldiermage puts [Highland Weald] into play.\r\n[12:48:55] soldiermage returns [Twinning Glass] to its owner's hand with [Deny Reality].\r\n[12:48:58] Turn 6: Xero\r\n[12:49:01] Xero plays [Forest].\r\n[12:49:05] Xero casts [Swarm Intelligence].\r\n[12:49:08] Xero casts [Tribal Flames] targeting soldiermage.\r\n[12:49:08] Xero puts triggered ability from [Swarm Intelligence] onto the stack (Whenever you cast an instant or sorcery spell, you may copy that spell. You may choose new targets...).\r\n[12:49:14] Xero puts a copy of [Tribal Flames] on the stack.\r\n[12:49:21] Turn 7: soldiermage\r\n[12:49:39] soldiermage casts [Sorin's Vengeance] targeting Xero.\r\n[12:49:42] Turn 7: Xero\r\n[12:50:09] Xero casts [Chamber Sentry]. (X is 5).\r\n[12:50:16] Xero casts [Twinning Glass].\r\n[12:50:26] Turn 8: soldiermage\r\n[12:50:44] soldiermage casts [Searing Wind] targeting Xero.\r\nWinner: soldiermage\r\nGame 1 Completed.\r\n== Game 2 (655093010) ==\r\n[Time] 1545011467\r\n[12:51:07] PDBot has started watching.\r\n[12:51:11] Xero chooses to play first.\r\n[12:51:16] Xero keeps this hand.\r\n[12:51:21] soldiermage keeps this hand.\r\n[12:51:21] Turn 1: Xero\r\n[12:51:22] Xero skips their draw step.\r\n[12:51:23] Xero plays [Savage Lands].\r\n[12:51:26] Turn 1: soldiermage\r\n[12:51:27] soldiermage plays [Opulent Palace].\r\n[12:51:29] Turn 2: Xero\r\n[12:51:30] Xero plays [Evolving Wilds].\r\n[12:51:32] Xero activates an ability of [Evolving Wilds] ( Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your ...).\r\n[12:51:35] Turn 2: soldiermage\r\n[12:51:37] soldiermage plays [Forest].\r\n[12:51:39] Turn 3: Xero\r\n[12:51:41] Xero plays [Plains].\r\n[12:51:44] Turn 3: soldiermage\r\n[12:51:47] soldiermage plays [Rupture Spire].\r\n[12:51:47] soldiermage puts triggered ability from [Rupture Spire] onto the stack (When Rupture Spire enters the battlefield, sacrifice it unless you pay {1}.).\r\n[12:51:52] Turn 4: Xero\r\n[12:51:54] Xero plays [Forest].\r\n[12:52:07] Xero casts [Exploding Borders] targeting soldiermage.\r\n[12:52:10] Turn 4: soldiermage\r\n[12:52:13] soldiermage plays [Nomad Outpost].\r\n[12:52:16] Turn 5: Xero\r\n[12:52:18] Xero plays [Mountain].\r\n[12:52:23] Xero casts [Exploding Borders] targeting soldiermage.\r\n[12:52:34] Turn 5: soldiermage\r\n[12:52:36] soldiermage plays [Nomad Outpost].\r\n[12:52:41] soldiermage casts [Unexpected Results].\r\n[12:52:42] soldiermage reveals [Compulsive Research] with [Unexpected Results].\r\n[12:52:42] [CHAT] PDBot: [sU]Compulsive Research[sU] has an advantageous bug.\nDredging rather than drawing can let you avoid discarding\r\nOur data about this bug is out of date. Please let us know if this card is still bugged (or if it's been fixed).\r\nYou can do so by PM'ing this bot, or by typing `!stillbugged Compulsive Research` or `!notbugged Compulsive Research`\r\n[12:52:46] soldiermage casts [Compulsive Research] targeting soldiermage.\r\n[12:52:48] soldiermage draws three cards with [Compulsive Research].\r\n[12:53:01] soldiermage discards [Brilliant Ultimatum].\r\n[12:53:01] soldiermage discards [Violent Ultimatum].\r\n[12:53:07] Turn 6: Xero\r\n[12:53:15] Xero casts [Urban Evolution].\r\n[12:53:15] Xero draws three cards with [Urban Evolution].\r\n[12:53:21] Xero plays [Savage Lands].\r\n[12:53:22] Xero plays [Swamp].\r\n[12:53:28] Xero casts [Rampant Growth].\r\n[12:53:39] Turn 6: soldiermage\r\n[12:53:46] soldiermage plays [Highland Weald].\r\n[12:54:04] soldiermage casts [Deny Reality] targeting [Savage Lands].\r\n[12:54:04] soldiermage puts triggered ability from [Deny Reality] onto the stack (Cascade).\r\n[12:54:09] soldiermage casts [Unexpected Results].\r\n[12:54:09] soldiermage reveals [Compulsive Research] with [Unexpected Results].\r\n[12:54:13] soldiermage casts [Compulsive Research] targeting soldiermage.\r\n[12:54:13] soldiermage draws three cards with [Compulsive Research].\r\n[12:54:32] soldiermage discards [Brilliant Ultimatum].\r\n[12:54:32] soldiermage discards [Deny Reality].\r\n[12:54:35] soldiermage returns [Savage Lands] to its owner's hand with [Deny Reality].\r\n[12:54:39] Turn 7: Xero\r\n[12:54:41] Xero plays [Savage Lands].\r\n[12:54:44] Xero casts [Twinning Glass].\r\n[12:54:48] Xero casts [Memoricide] targeting soldiermage.\r\n[12:54:56] Xero names Sorin's Vengeance for [Memoricide].\r\n[12:55:14] Xero activates an ability of [Twinning Glass] ( You may cast a nonland card from your hand without paying its mana cost if it has the same name a...).\r\n[12:55:16] Xero casts [Memoricide] with [Twinning Glass]'s ability targeting soldiermage.\r\n[12:55:24] Xero names Searing Wind for [Memoricide].\r\n[12:55:36] Turn 7: soldiermage\r\n[12:55:36] soldiermage has conceded from the game.\r\nWinner: Xero\r\nGame 2 Completed.\r\n[12:55:40] Xero has left the game.\r\n== Game 3 (655093548) ==\r\n[Time] 1545011757\r\n[12:55:57] PDBot has started watching.\r\n[12:55:57] soldiermage chooses to play first.\r\n[12:56:05] soldiermage keeps this hand.\r\n[12:56:07] Xero keeps this hand.\r\n[12:56:07] Turn 1: soldiermage\r\n[12:56:07] soldiermage skips their draw step.\r\n[12:56:08] soldiermage plays [Highland Weald].\r\n[12:56:10] Turn 1: Xero\r\n[12:56:11] Xero plays [Forest].\r\n[12:56:14] Turn 2: soldiermage\r\n[12:56:16] soldiermage plays [Rupture Spire].\r\n[12:56:16] soldiermage puts triggered ability from [Rupture Spire] onto the stack (When Rupture Spire enters the battlefield, sacrifice it unless you pay {1}.).\r\n[12:56:20] Turn 2: Xero\r\n[12:56:22] Xero plays [Island].\r\n[12:56:24] Xero casts [Edge of Autumn].\r\n[12:56:33] Turn 3: soldiermage\r\n[12:56:35] soldiermage plays [Highland Weald].\r\n", 'start_time_utc': '1545011140', 'end_time_utc': '1545011795'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 172.69.226.115
Cf-Ray: 48a5c6306c5cb777-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 11001
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212986287' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212986287, 1, 'PD', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; IntegrityError
500 error at /api/upload
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212986054' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212986054, 1, 'PD', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '212986054', 'lines': 'PennyDreadful\r\nPD\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nLasersDuFutur,McCollum\r\n\r\n== Game 1 (655091664) ==\r\n[Time] 1545010725\r\n[12:38:45] PDBot has started watching.\r\n[League] Emerge by lasersdufutur (30545) vs Energy Tokens by mccollum (30068)\r\nWinner: McCollum\r\nGame 1 Completed.\r\n', 'start_time_utc': '1545010725', 'end_time_utc': '1545010974'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 172.69.226.19
Cf-Ray: 48a5b3971b7dbd65-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 511
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212986054' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212986054, 1, 'PD', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; IntegrityError
500 error at /api/upload
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213031136' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213031136, 4, '', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213031136', 'lines': "Legacy\r\n\r\nBuggedCardObserver\r\nNikodemos,jAbbErwork\r\n\r\n== Game 1 (655265958) ==\r\n[Time] 1545144421\r\n[01:47:02] PDBot has started watching.\r\n[01:47:03] [CHAT] Nikodemos: glhf\r\n[01:47:08] Nikodemos chooses to play first.\r\n[01:47:21] Nikodemos keeps this hand.\r\n[01:47:25] jAbbErwork mulligans to 6 cards.\r\n[01:47:29] jAbbErwork keeps this hand.\r\n[01:47:32] jAbbErwork puts 1 card on top of their library.\r\n[01:47:32] Turn 1: Nikodemos\r\n[01:47:38] Nikodemos skips their draw step.\r\n[01:47:39] Nikodemos plays [Marsh Flats].\r\n[01:47:41] [CHAT] jAbbErwork: u2\r\n[01:47:42] Turn 1: jAbbErwork\r\n[01:47:49] jAbbErwork plays [Watery Grave].\r\n[01:47:53] jAbbErwork casts [Ponder].\r\n[01:48:14] jAbbErwork chooses to shuffle his or her library.\r\n[01:48:14] jAbbErwork draws a card with [Ponder].\r\n[01:48:22] Nikodemos activates an ability of [Marsh Flats] ( Search your library for a Plains or Swamp card, put it onto the battlefield, then shuffle your li...).\r\n[01:48:24] Turn 2: Nikodemos\r\n[01:48:37] Nikodemos plays [Plains].\r\n[01:48:39] Nikodemos casts [Stoneforge Mystic].\r\n[01:48:40] Nikodemos puts triggered ability from [Stoneforge Mystic] onto the stack (When Stoneforge Mystic enters the battlefield, you may search your library for an Equipment card, ...).\r\n[01:49:00] Nikodemos reveals [Sword of Fire and Ice].\r\n[01:49:03] Turn 2: jAbbErwork\r\n[01:49:25] jAbbErwork plays [Scrubland].\r\n[01:49:28] jAbbErwork casts [Swords to Plowshares] targeting [Stoneforge Mystic].\r\n[01:49:34] Turn 3: Nikodemos\r\n[01:49:42] Nikodemos plays [Scrubland].\r\n[01:49:48] Nikodemos casts [Hymn to Tourach] targeting jAbbErwork.\r\n[01:49:48] jAbbErwork discards [Lingering Souls].\r\n[01:49:48] jAbbErwork discards [Careful Study].\r\n[01:49:52] Turn 3: jAbbErwork\r\n[01:49:59] jAbbErwork plays [Swamp].\r\n[01:50:02] jAbbErwork casts [Cabal Therapy] targeting Nikodemos.\r\n[01:50:17] jAbbErwork names Sword of Fire and Ice for [Cabal Therapy].\r\n[01:50:17] Nikodemos reveals their hand to [Cabal Therapy], containing [Swords to Plowshares], [Sword of Fire and Ice], [Inquisition of Kozilek], [Liliana, the Last Hope], and [Sign in Blood].\r\n[01:50:22] Nikodemos discards [Sword of Fire and Ice].\r\n[01:50:35] jAbbErwork casts [Lingering Souls] from the graveyard.\r\n[01:50:38] jAbbErwork's [Lingering Souls] creates two Spirit tokens.\r\n[01:50:42] Turn 4: Nikodemos\r\n[01:51:00] Nikodemos casts [Liliana, the Last Hope].\r\n[01:51:03] Nikodemos activates an ability of [Liliana, the Last Hope] targeting [Spirit] token ( Up to one target creature gets -2/-1 until your next turn.).\r\n[01:51:08] Turn 4: jAbbErwork\r\n[01:51:17] jAbbErwork plays [Tundra].\r\n[01:51:54] Nikodemos is being attacked by [Spirit] token.\r\n[01:52:01] Turn 5: Nikodemos\r\n[01:52:06] Nikodemos activates an ability of [Liliana, the Last Hope] targeting [Spirit] token ( Up to one target creature gets -2/-1 until your next turn.).\r\n[01:52:10] Nikodemos casts [Inquisition of Kozilek] targeting jAbbErwork.\r\n[01:52:13] jAbbErwork discards [Lingering Souls].\r\n[01:52:13] jAbbErwork reveals their hand to [Inquisition of Kozilek], containing [Plains].\r\n[01:52:18] Nikodemos casts [Remorseful Cleric].\r\n[01:52:21] Nikodemos activates an ability of [Remorseful Cleric] targeting jAbbErwork ( Exile all cards from target player's graveyard.).\r\n[01:52:25] Turn 5: jAbbErwork\r\n[01:52:32] jAbbErwork has conceded from the game.\r\nWinner: Nikodemos\r\nGame 1 Completed.\r\n[01:52:37] Nikodemos has left the game.\r\n", 'start_time_utc': '1545144421', 'end_time_utc': '1545144757'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 172.69.226.43
Cf-Ray: 48b275ac9b58a863-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 4501
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213031136' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213031136, 4, '', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; IntegrityError
500 error at /api/upload
(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213046693, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213046693', 'lines': 'PennyDreadful\r\npd league\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nKarnonthebcob,Seven47\r\n\r\n== Game 1 (655326252) ==\r\n[Time] 1545184287\r\n[12:51:27] PDBot has started watching.\r\n', 'start_time_utc': '1545184186', 'end_time_utc': '1545184287'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.107.92
Cf-Ray: 48b6aca10b0f3458-LHR
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 375
OperationalError
(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213046693, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; OperationalError
500 error at /api/upload
(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213046693, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213046693', 'lines': 'PennyDreadful\r\npd league\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nKarnonthebcob,Seven47\r\n\r\n== Game 1 (655326252) ==\r\n[Time] 1545184287\r\n[12:51:27] PDBot has started watching.\r\n', 'start_time_utc': '1545184186', 'end_time_utc': '1545184287'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 162.158.154.123
Cf-Ray: 48b6b27b3dc43590-LHR
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 375
OperationalError
(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213046693, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; OperationalError
500 error at /api/upload
(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213047978, 5, 'PCT Round 3', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213047978', 'lines': 'Pauper\r\nPCT Round 3\r\nTourney, BuggedCardObserver\r\neso4455,Rfunay\r\n\r\n== Game 1 (655332926) ==\r\n[Time] 1545188504\r\n[14:01:46] PDBot has started watching.\r\n[14:01:46] Turn 6: eso4455\r\n[14:01:50] eso4455 plays [Forest].\r\n[14:01:53] eso4455 casts [Wellwisher].\r\n[14:01:59] eso4455 casts [Quirion Ranger].\r\n[14:02:06] Turn 7: Rfunay\r\n[14:02:12] eso4455 is being attacked by [Carapace Forger] and [Carapace Forger].\r\n[14:02:39] Rfunay casts [Perilous Research].\r\n[14:02:42] Rfunay draws two cards with [Perilous Research].\r\n[14:02:47] Rfunay sacrifices [Seat of the Synod].\r\n[14:02:49] Rfunay plays [Seat of the Synod].\r\n[14:03:01] Rfunay casts [Krark-Clan Shaman].\r\n[14:03:13] Rfunay activates an ability of [Krark-Clan Shaman] ( Krark-Clan Shaman deals 1 damage to each creature without flying.).\r\n[14:03:16] Rfunay casts [Frogmite].\r\n[14:03:20] Turn 7: eso4455\r\n[14:03:30] eso4455 has conceded from the game.\r\nWinner: Rfunay\r\nGame 1 Completed.\r\n', 'start_time_utc': '1545188504', 'end_time_utc': '1545188610'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 162.158.154.123
Cf-Ray: 48b6a46babce35ba-LHR
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 1367
OperationalError
(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213047978, 5, 'PCT Round 3', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; OperationalError
500 error at /api/upload
(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213046693, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213046693', 'lines': 'PennyDreadful\r\npd league\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nKarnonthebcob,Seven47\r\n\r\n== Game 1 (655326252) ==\r\n[Time] 1545184287\r\n[12:51:27] PDBot has started watching.\r\n', 'start_time_utc': '1545184186', 'end_time_utc': '1545184287'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.98.138
Cf-Ray: 48b6b408291834b2-LHR
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 375
OperationalError
(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213046693, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; OperationalError
500 error at /api/upload
(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213046693, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213046693', 'lines': 'PennyDreadful\r\npd league\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nKarnonthebcob,Seven47\r\n\r\n== Game 1 (655326252) ==\r\n[Time] 1545184287\r\n[12:51:27] PDBot has started watching.\r\n', 'start_time_utc': '1545184186', 'end_time_utc': '1545184287'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.98.138
Cf-Ray: 48b6b0ff9cef3512-LHR
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 375
OperationalError
(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213046693, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; OperationalError
500 error at /api/upload
(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213046693, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213046693', 'lines': 'PennyDreadful\r\npd league\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nKarnonthebcob,Seven47\r\n\r\n== Game 1 (655326252) ==\r\n[Time] 1545184287\r\n[12:51:27] PDBot has started watching.\r\n', 'start_time_utc': '1545184186', 'end_time_utc': '1545184287'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.99.229
Cf-Ray: 48b6ae14ee0e357e-LHR
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 375
OperationalError
(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213046693, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; OperationalError
500 error at /api/upload
(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213046693, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213046693', 'lines': 'PennyDreadful\r\npd league\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nKarnonthebcob,Seven47\r\n\r\n== Game 1 (655326252) ==\r\n[Time] 1545184287\r\n[12:51:27] PDBot has started watching.\r\n', 'start_time_utc': '1545184186', 'end_time_utc': '1545184287'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.107.14
Cf-Ray: 48b6ab245d1a35ba-LHR
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 375
OperationalError
(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213046693, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; OperationalError
500 error at /api/upload
(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213046693, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213046693', 'lines': 'PennyDreadful\r\npd league\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nKarnonthebcob,Seven47\r\n\r\n== Game 1 (655326252) ==\r\n[Time] 1545184287\r\n[12:51:27] PDBot has started watching.\r\n', 'start_time_utc': '1545184186', 'end_time_utc': '1545184287'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.107.92
Cf-Ray: 48b6af933e553590-LHR
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 375
OperationalError
(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213046693, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; OperationalError
500 error at /api/upload
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213082038' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213082038, 4, 'CLL R3 vs Bandit Keith', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213082038', 'lines': "Legacy\r\nCLL R3 vs Bandit Keith\r\nTourney, BuggedCardObserver\r\nRedderTory,Bandit Keith\r\n\r\n== Game 1 (655464982) ==\r\n[Time] 1545275506\r\n[14:11:47] PDBot has started watching.\r\n[Gatherling] Event=Community Legacy League 6.51\r\n[Gatherling] Round=3\r\n[14:11:51] Bandit Keith chooses to play first.\r\n[14:12:34] Bandit Keith keeps this hand.\r\n[14:12:36] RedderTory mulligans to 6 cards.\r\n[14:12:37] RedderTory keeps this hand.\r\n[14:12:40] RedderTory puts 1 card on top of their library.\r\n[14:12:40] Turn 1: Bandit Keith\r\n[14:12:41] Bandit Keith skips their draw step.\r\n[14:12:46] Bandit Keith plays [Plains].\r\n[14:12:47] Bandit Keith casts [Mother of Runes].\r\n[14:12:49] Turn 1: RedderTory\r\n[14:12:51] RedderTory plays [Scalding Tarn].\r\n[14:12:53] RedderTory activates an ability of [Scalding Tarn] ( Search your library for an Island or Mountain card, put it onto the battlefield, then shuffle you...).\r\n[14:13:04] RedderTory casts [Forked Bolt] targeting Bandit Keith for 1, and [Mother of Runes] for 1.\r\n[14:13:05] Turn 2: Bandit Keith\r\n[14:14:43] Bandit Keith plays [Wasteland].\r\n[14:14:46] Bandit Keith activates an ability of [Wasteland] targeting [Volcanic Island] ( Destroy target nonbasic land.).\r\n[14:14:51] Turn 2: RedderTory\r\n[14:14:53] RedderTory plays [Underground Sea].\r\n[14:14:58] Turn 3: Bandit Keith\r\n[14:15:27] Bandit Keith plays [Wasteland].\r\n[14:15:29] Bandit Keith activates an ability of [Wasteland] targeting [Underground Sea] ( Destroy target nonbasic land.).\r\n[14:15:35] RedderTory casts [Brainstorm].\r\n[14:15:39] RedderTory returns [Underground Sea] to its owner's hand with with [Daze]'s ability.\r\n[14:15:39] RedderTory casts [Daze] using an alternate cost targeting [Brainstorm].\r\n[14:15:59] Bandit Keith's Wasteland is countered because it has no legal targets.\r\n[14:16:02] Bandit Keith casts [Mother of Runes].\r\n[14:16:07] RedderTory exiles [Brainstorm] with with [Force of Will]'s ability.\r\n[14:16:07] RedderTory casts [Force of Will] using an alternate cost targeting [Mother of Runes].\r\n[14:16:19] Turn 3: RedderTory\r\n[14:16:21] RedderTory plays [Underground Sea].\r\n[14:16:26] RedderTory casts [Gurmag Angler].\r\n[14:16:31] Turn 4: Bandit Keith\r\n[14:17:03] Bandit Keith plays [Rishadan Port].\r\n[14:17:16] Bandit Keith casts [Stoneforge Mystic].\r\n[14:17:18] Bandit Keith puts triggered ability from [Stoneforge Mystic] onto the stack (When Stoneforge Mystic enters the battlefield, you may search your library for an Equipment card, ...).\r\n[14:17:28] Bandit Keith reveals [Batterskull].\r\n[14:17:33] Turn 4: RedderTory\r\n[14:17:39] Bandit Keith is being attacked by [Gurmag Angler].\r\n[14:17:43] Turn 5: Bandit Keith\r\n[14:17:54] Bandit Keith plays [Plains].\r\n[14:18:28] Turn 5: RedderTory\r\n[14:18:32] Bandit Keith activates an ability of [Stoneforge Mystic] ( You may put an Equipment card from your hand onto the battlefield.).\r\n[14:18:35] Bandit Keith puts triggered ability from [Batterskull] onto the stack (Living weapon (When this Equipment enters the battlefield, create a 0/0 black Germ creature toke...).\r\n[14:18:38] Bandit Keith's [Batterskull] creates a Germ token.\r\n[14:18:45] RedderTory casts [Inquisition of Kozilek] targeting Bandit Keith.\r\n[14:18:56] Bandit Keith discards [Thalia, Guardian of Thraben].\r\n[14:18:56] Bandit Keith reveals their hand to [Inquisition of Kozilek], containing [Sword of War and Peace] and [Thalia, Heretic Cathar].\r\n[14:19:04] Bandit Keith is being attacked by [Gurmag Angler].\r\n[14:19:09] Turn 6: Bandit Keith\r\n[14:19:41] RedderTory is being attacked by [Germ] token and [Stoneforge Mystic].\r\n[14:19:48] Turn 6: RedderTory\r\n[14:19:54] Bandit Keith activates an ability of [Rishadan Port] targeting [Underground Sea] ( Tap target land.).\r\n[14:20:07] RedderTory plays [Wasteland].\r\n[14:20:09] RedderTory activates an ability of [Wasteland] targeting [Rishadan Port] ( Destroy target nonbasic land.).\r\n[14:20:26] Turn 7: Bandit Keith\r\n[14:20:34] Bandit Keith casts [Path to Exile] targeting [Gurmag Angler].\r\n[14:20:39] RedderTory has conceded from the game.\r\nWinner: Bandit Keith\r\nGame 1 Completed.\r\n== Game 2 (655466608) ==\r\n[Time] 1545276217\r\n[14:23:37] PDBot has started watching.\r\n[14:23:38] RedderTory keeps this hand.\r\n[14:23:42] Bandit Keith keeps this hand.\r\n[14:23:42] Turn 1: RedderTory\r\n[14:23:48] RedderTory skips their draw step.\r\n[14:23:48] RedderTory plays [Volcanic Island].\r\n[14:23:51] RedderTory casts [Delver of Secrets].\r\n[14:23:57] Turn 1: Bandit Keith\r\n[14:24:03] Bandit Keith plays [Plains].\r\n[14:24:52] Bandit Keith casts [Aether Vial].\r\n[14:25:02] Turn 2: RedderTory\r\n[14:25:02] RedderTory puts triggered ability from [Delver of Secrets] onto the stack (At the beginning of your upkeep, look at the top card of your library. You may reveal that card. I...).\r\n[14:25:11] RedderTory casts [Brainstorm].\r\n[14:25:14] RedderTory draws three cards with [Brainstorm].\r\n[14:25:20] RedderTory plays [Polluted Delta].\r\n[14:25:21] RedderTory activates an ability of [Polluted Delta] ( Search your library for an Island or Swamp card, put it onto the battlefield, then shuffle your l...).\r\n[14:25:29] RedderTory casts [Thoughtseize] targeting Bandit Keith.\r\n[14:25:34] Bandit Keith discards [Stoneforge Mystic].\r\n[14:25:35] Bandit Keith reveals their hand to [Thoughtseize], containing [Path to Exile], [Mother of Runes], [Rishadan Port], [Swords to Plowshares], and [Swords to Plowshares].\r\n[14:25:39] Bandit Keith is being attacked by [Delver of Secrets].\r\n[14:25:39] Turn 2: Bandit Keith\r\n[14:25:42] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:25:56] Bandit Keith plays [Plains].\r\n[14:25:59] Bandit Keith casts [Swords to Plowshares] targeting [Delver of Secrets].\r\n[14:26:09] Turn 3: RedderTory\r\n[14:26:13] RedderTory casts [Brainstorm].\r\n[14:26:15] RedderTory draws three cards with [Brainstorm].\r\n[14:26:23] RedderTory plays [Wasteland].\r\n[14:26:28] Bandit Keith activates an ability of [Aether Vial] ( You may put a creature card with converted mana cost equal to the number of charge counters on Ae...).\r\n[14:26:36] RedderTory casts [Lightning Bolt] targeting [Mother of Runes].\r\n[14:26:46] Turn 3: Bandit Keith\r\n[14:26:47] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:27:03] Bandit Keith plays [Rishadan Port].\r\n[14:27:14] RedderTory activates an ability of [Wasteland] targeting [Rishadan Port] ( Destroy target nonbasic land.).\r\n[14:27:20] Turn 4: RedderTory\r\n[14:27:27] RedderTory casts [Ponder].\r\n[14:27:33] RedderTory chooses to shuffle his or her library.\r\n[14:27:33] RedderTory draws a card with [Ponder].\r\n[14:27:46] RedderTory casts [Gurmag Angler].\r\n[14:28:04] Bandit Keith casts [Path to Exile] targeting [Gurmag Angler].\r\n[14:28:15] Turn 4: Bandit Keith\r\n[14:28:16] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:28:28] Bandit Keith plays [Plains].\r\n[14:28:29] Bandit Keith casts [Aether Vial].\r\n[14:28:33] Turn 5: RedderTory\r\n[14:28:39] RedderTory casts [True-Name Nemesis].\r\n[14:28:44] The chosen player is Bandit Keith.\r\n[14:28:56] Turn 5: Bandit Keith\r\n[14:28:57] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:28:58] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:29:07] Bandit Keith chooses not to use [Aether Vial]'s ability.\r\n[14:29:11] Bandit Keith plays [Wasteland].\r\n[14:29:19] Bandit Keith activates an ability of [Wasteland] targeting [Underground Sea] ( Destroy target nonbasic land.).\r\n[14:29:26] Turn 6: RedderTory\r\n[14:29:31] RedderTory plays [Underground Sea].\r\n[14:29:38] Bandit Keith is being attacked by [True-Name Nemesis].\r\n[14:29:42] Turn 6: Bandit Keith\r\n[14:29:43] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:29:44] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:29:54] Bandit Keith chooses not to use [Aether Vial]'s ability.\r\n[14:30:39] Turn 7: RedderTory\r\n[14:30:41] Bandit Keith activates an ability of [Aether Vial] ( You may put a creature card with converted mana cost equal to the number of charge counters on Ae...).\r\n[14:31:23] Bandit Keith chooses the number 1.\r\n[14:31:23] Bandit Keith is being attacked by [True-Name Nemesis].\r\n[14:31:23] Turn 7: Bandit Keith\r\n[14:31:26] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:31:27] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:31:35] Bandit Keith chooses not to use [Aether Vial]'s ability.\r\n[14:31:45] RedderTory is being attacked by [Sanctum Prelate].\r\n[14:31:49] RedderTory casts [Snapcaster Mage].\r\n[14:31:56] Bandit Keith activates an ability of [Aether Vial] ( You may put a creature card with converted mana cost equal to the number of charge counters on Ae...).\r\n[14:32:04] RedderTory puts triggered ability from [Snapcaster Mage] onto the stack targeting [Lightning Bolt] (When Snapcaster Mage enters the battlefield, target instant or sorcery card in your graveyard gain...).\r\n[14:32:15] Turn 8: RedderTory\r\n[14:32:26] Bandit Keith is being attacked by [True-Name Nemesis].\r\n[14:32:30] Turn 8: Bandit Keith\r\n[14:32:31] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:32:32] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:32:37] Bandit Keith chooses not to use [Aether Vial]'s ability.\r\n[14:32:54] RedderTory is being attacked by [Thalia, Heretic Cathar].\r\n[14:33:07] RedderTory casts [Snapcaster Mage].\r\n[14:33:11] RedderTory puts triggered ability from [Snapcaster Mage] onto the stack targeting [Lightning Bolt] (When Snapcaster Mage enters the battlefield, target instant or sorcery card in your graveyard gain...).\r\n[14:33:14] Turn 9: RedderTory\r\n[14:33:26] Bandit Keith is being attacked by [Snapcaster Mage], [Snapcaster Mage], and [True-Name Nemesis].\r\n[14:34:14] Bandit Keith activates an ability of [Aether Vial] ( You may put a creature card with converted mana cost equal to the number of charge counters on Ae...).\r\n[14:34:19] Bandit Keith puts triggered ability from [Stoneforge Mystic] onto the stack (When Stoneforge Mystic enters the battlefield, you may search your library for an Equipment card, ...).\r\n[14:35:20] Bandit Keith reveals [Umezawa's Jitte].\r\n[14:35:25] Turn 9: Bandit Keith\r\n[14:35:26] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:35:27] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:35:36] Bandit Keith chooses not to use [Aether Vial]'s ability.\r\n[14:36:38] RedderTory is being attacked by [Thalia, Heretic Cathar] and [Sanctum Prelate].\r\n[14:37:09] Turn 10: RedderTory\r\n[14:37:56] Bandit Keith is being attacked by [Snapcaster Mage], [Snapcaster Mage], and [True-Name Nemesis].\r\n[14:38:39] Bandit Keith has conceded from the game.\r\nWinner: RedderTory\r\nGame 2 Completed.\r\n== Game 3 (655468982) ==\r\n[Time] 1545277293\r\n[14:41:33] PDBot has started watching.\r\n[14:41:36] Bandit Keith keeps this hand.\r\n[14:41:39] RedderTory keeps this hand.\r\n[14:41:39] Turn 1: Bandit Keith\r\n[14:41:40] Bandit Keith skips their draw step.\r\n[14:41:41] Bandit Keith plays [Plains].\r\n[14:41:43] Bandit Keith casts [Mother of Runes].\r\n[14:41:47] Turn 1: RedderTory\r\n[14:41:51] RedderTory plays [Underground Sea].\r\n[14:41:54] RedderTory casts [Thoughtseize] targeting Bandit Keith.\r\n[14:42:05] Bandit Keith discards [Thalia, Guardian of Thraben].\r\n[14:42:05] Bandit Keith reveals their hand to [Thoughtseize], containing [Plains], [Flickerwisp], [Stoneforge Mystic], and [Stoneforge Mystic].\r\n[14:42:07] Turn 2: Bandit Keith\r\n[14:42:17] Bandit Keith plays [Plains].\r\n[14:42:19] Bandit Keith casts [Stoneforge Mystic].\r\n[14:42:20] Bandit Keith puts triggered ability from [Stoneforge Mystic] onto the stack (When Stoneforge Mystic enters the battlefield, you may search your library for an Equipment card, ...).\r\n[14:42:28] Bandit Keith reveals [Batterskull].\r\n[14:42:34] Turn 2: RedderTory\r\n[14:42:40] RedderTory casts [Brainstorm].\r\n[14:42:42] RedderTory draws three cards with [Brainstorm].\r\n[14:42:49] [CHAT] RedderTory: ggs\r\n[14:42:51] RedderTory has conceded from the game.\r\nWinner: Bandit Keith\r\nGame 3 Completed.\r\nMatch Winner: Bandit Keith: 2–1\r\n[14:42:56] RedderTory has left the game.\r\n", 'start_time_utc': '1545275506', 'end_time_utc': '1545277376'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.69.77
Cf-Ray: 48bf1b6e7e74a893-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 16529
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213082038' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213082038, 4, 'CLL R3 vs Bandit Keith', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; IntegrityError
500 error at /api/upload
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213082065' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213082065, 4, 'CLL R3 vs lovetapsmtg', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213082065', 'lines': "Legacy\r\nCLL R3 vs lovetapsmtg\r\nTourney, BuggedCardObserver\r\nkalcin66rocks,lovetapsmtg\r\n\r\n== Game 1 (655464292) ==\r\n[Time] 1545275226\r\n[14:07:06] PDBot has started watching.\r\n[Gatherling] Event=Community Legacy League 6.51\r\n[Gatherling] Round=3\r\n[14:07:14] lovetapsmtg chooses to play first.\r\n[14:07:27] lovetapsmtg keeps this hand.\r\n[14:07:29] kalcin66rocks mulligans to 6 cards.\r\n[14:07:31] kalcin66rocks keeps this hand.\r\n[14:07:33] kalcin66rocks puts 1 card on top of their library.\r\n[14:07:33] Turn 1: lovetapsmtg\r\n[14:07:35] lovetapsmtg skips their draw step.\r\n[14:07:59] lovetapsmtg plays [Ancient Tomb].\r\n[14:08:04] lovetapsmtg casts [Thorn of Amethyst].\r\n[14:08:06] Turn 1: kalcin66rocks\r\n[14:08:10] kalcin66rocks plays [Underground Sea].\r\n[14:08:12] Turn 2: lovetapsmtg\r\n[14:09:21] lovetapsmtg plays [Plains].\r\n[14:09:27] lovetapsmtg casts [Suppression Field].\r\n[14:09:31] Turn 2: kalcin66rocks\r\n[14:09:36] kalcin66rocks plays [Swamp].\r\n[14:09:40] kalcin66rocks casts [Thoughtseize] targeting lovetapsmtg.\r\n[14:09:57] lovetapsmtg discards [Enlistment Officer].\r\n[14:09:57] lovetapsmtg reveals their hand to [Thoughtseize], containing [Enlistment Officer], [Chrome Mox], and [City of Traitors].\r\n[14:10:01] Turn 3: lovetapsmtg\r\n[14:10:29] lovetapsmtg plays [City of Traitors].\r\n[14:10:45] lovetapsmtg casts [Enlistment Officer].\r\n[14:10:47] lovetapsmtg puts triggered ability from [Enlistment Officer] onto the stack (When Enlistment Officer enters the battlefield, reveal the top four cards of your library. Put all...).\r\n[14:10:50] lovetapsmtg reveals 4 cards with [Enlistment Officer]'s ability: [Baird, Steward of Argive], [Cavern of Souls], [Cavern of Souls], and [Preeminent Captain].\r\n[14:10:51] [CHAT] PDBot: [sU]Cavern of Souls[sU] has an unclassified bug.\nWhen casting a spell, if there is any mana already in the player's pool, the most recently produced colored mana is automatically applied to the spell first. For example, if a player taps a Cavern of Souls (naming Human), then an Island, then casts Delver of Secrets, the blue mana applied to the Delver's mana cost will be that from the Island. If the player tapped the Island, then the Cavern, the Cavern's mana would be applied to the spell, and it would be appropriately uncounterable.\r\nOur data about this bug is out of date. Please let us know if this card is still bugged (or if it's been fixed).\r\nYou can do so by PM'ing this bot, or by typing `!stillbugged Cavern of Souls` or `!notbugged Cavern of Souls`\r\n[14:10:56] lovetapsmtg puts [Preeminent Captain] and [Baird, Steward of Argive] into their hand with with [Enlistment Officer]'s ability.\r\n[14:11:00] lovetapsmtg put a card on the bottom of the library.\r\n[14:11:00] lovetapsmtg put a card on the bottom of the library.\r\n[14:11:13] lovetapsmtg casts [Chrome Mox].\r\n[14:11:15] lovetapsmtg puts triggered ability from [Chrome Mox] onto the stack (When Chrome Mox enters the battlefield, you may exile a nonartifact, nonland card from your hand.).\r\n[14:11:53] Turn 3: kalcin66rocks\r\n[14:11:55] kalcin66rocks plays [Swamp].\r\n[14:11:59] kalcin66rocks casts [Hymn to Tourach] targeting lovetapsmtg.\r\n[14:11:59] lovetapsmtg discards [Preeminent Captain].\r\n[14:11:59] lovetapsmtg discards [Thalia, Guardian of Thraben].\r\n[14:12:03] Turn 4: lovetapsmtg\r\n[14:12:15] kalcin66rocks is being attacked by [Enlistment Officer].\r\n[14:12:16] Turn 4: kalcin66rocks\r\n[14:12:28] kalcin66rocks plays [Verdant Catacombs].\r\n[14:12:31] kalcin66rocks activates an ability of [Verdant Catacombs] ( Search your library for a Swamp or Forest card, put it onto the battlefield, then shuffle your li...).\r\n[14:12:38] kalcin66rocks casts [Baleful Strix].\r\n[14:12:38] kalcin66rocks puts triggered ability from [Baleful Strix] onto the stack (When Baleful Strix enters the battlefield, draw a card.).\r\n[14:12:39] kalcin66rocks draws a card with [Baleful Strix]'s ability.\r\n[14:12:41] Turn 5: lovetapsmtg\r\n[14:13:00] lovetapsmtg casts [Thalia's Lieutenant].\r\n[14:13:02] lovetapsmtg puts triggered ability from [Thalia's Lieutenant] onto the stack (When Thalia's Lieutenant enters the battlefield, put a +1/+1 counter on each other Human you contr...).\r\n[14:13:13] kalcin66rocks is being attacked by [Enlistment Officer].\r\n[14:13:15] Turn 5: kalcin66rocks\r\n[14:13:20] kalcin66rocks plays [Underground Sea].\r\n[14:13:33] kalcin66rocks casts [True-Name Nemesis].\r\n[14:13:37] The chosen player is lovetapsmtg.\r\n[14:13:40] Turn 6: lovetapsmtg\r\n[14:14:10] lovetapsmtg casts [Daru Warchief].\r\n[14:14:16] kalcin66rocks exiles [Ponder] with with [Force of Will]'s ability.\r\n[14:14:16] kalcin66rocks casts [Force of Will] using an alternate cost targeting [Daru Warchief].\r\n[14:14:31] Turn 6: kalcin66rocks\r\n[14:14:36] kalcin66rocks plays [Island].\r\n[14:14:40] kalcin66rocks casts [Thoughtseize] targeting lovetapsmtg.\r\n[14:14:44] lovetapsmtg reveals their hand to [Thoughtseize], containing [Ancient Tomb].\r\n[14:14:47] lovetapsmtg is being attacked by [Baleful Strix].\r\n[14:14:50] Turn 7: lovetapsmtg\r\n[14:15:16] kalcin66rocks is being attacked by [Thalia's Lieutenant] and [Enlistment Officer].\r\n[14:15:22] [True-Name Nemesis] blocks [Enlistment Officer].\r\n[14:15:25] Turn 7: kalcin66rocks\r\n[14:15:35] Turn 8: lovetapsmtg\r\n[14:16:01] kalcin66rocks is being attacked by [Thalia's Lieutenant] and [Enlistment Officer].\r\n[14:16:06] [Baleful Strix] blocks [Enlistment Officer].\r\n[14:16:07] [True-Name Nemesis] blocks [Thalia's Lieutenant].\r\n[14:16:31] lovetapsmtg casts [Thorn of Amethyst].\r\n[14:16:35] Turn 8: kalcin66rocks\r\n[14:16:44] kalcin66rocks casts [Ponder].\r\n[14:16:50] kalcin66rocks chooses to shuffle his or her library.\r\n[14:16:50] kalcin66rocks draws a card with [Ponder].\r\n[14:16:59] kalcin66rocks casts [Unearth] targeting [Baleful Strix].\r\n[14:17:00] kalcin66rocks puts triggered ability from [Baleful Strix] onto the stack (When Baleful Strix enters the battlefield, draw a card.).\r\n[14:17:01] kalcin66rocks draws a card with [Baleful Strix]'s ability.\r\n[14:17:02] kalcin66rocks plays [Bayou].\r\n[14:17:05] lovetapsmtg is being attacked by [True-Name Nemesis].\r\n[14:17:25] Turn 9: lovetapsmtg\r\n[14:17:40] kalcin66rocks is being attacked by [Enlistment Officer].\r\n[14:17:43] [Baleful Strix] blocks [Enlistment Officer].\r\n[14:17:49] lovetapsmtg plays [Plains].\r\n[14:17:49] lovetapsmtg puts triggered ability from [City of Traitors] onto the stack (When you play another land, sacrifice City of Traitors.).\r\n[14:17:59] Turn 9: kalcin66rocks\r\n[14:18:06] kalcin66rocks casts [Unearth] targeting [Baleful Strix].\r\n[14:18:07] kalcin66rocks puts triggered ability from [Baleful Strix] onto the stack (When Baleful Strix enters the battlefield, draw a card.).\r\n[14:18:08] kalcin66rocks draws a card with [Baleful Strix]'s ability.\r\n[14:18:14] kalcin66rocks plays [Misty Rainforest].\r\n[14:18:18] lovetapsmtg is being attacked by [True-Name Nemesis].\r\n[14:18:20] Turn 10: lovetapsmtg\r\n[14:18:41] lovetapsmtg casts [Palace Jailer].\r\n[14:18:48] lovetapsmtg puts triggered ability from [Palace Jailer] onto the stack (When Palace Jailer enters the battlefield, you become the monarch.).\r\n[14:18:48] lovetapsmtg puts triggered ability from [Palace Jailer] onto the stack targeting [Baleful Strix] (When Palace Jailer enters the battlefield, exile target creature an opponent controls until an opp...).\r\n[14:19:02] kalcin66rocks is being attacked by [Enlistment Officer].\r\n[14:19:05] lovetapsmtg puts triggered ability from The Monarch's Emblem onto the stack (At the beginning of your end step, draw a card.).\r\n[14:19:05] Turn 10: kalcin66rocks\r\n[14:19:12] kalcin66rocks casts [Brainstorm].\r\n[14:19:15] kalcin66rocks draws three cards with [Brainstorm].\r\n[14:19:31] kalcin66rocks casts [True-Name Nemesis].\r\n[14:19:34] The chosen player is lovetapsmtg.\r\n[14:19:37] lovetapsmtg is being attacked by [True-Name Nemesis].\r\n[14:19:41] lovetapsmtg puts triggered ability from The Monarch's Emblem onto the stack (Whenever a creature deals combat damage to you, its controller becomes the monarch.).\r\n[14:19:43] kalcin66rocks puts triggered ability from [Baleful Strix] onto the stack (When Baleful Strix enters the battlefield, draw a card.).\r\n[14:19:44] kalcin66rocks draws a card with [Baleful Strix]'s ability.\r\n[14:19:46] kalcin66rocks puts triggered ability from The Monarch's Emblem onto the stack (At the beginning of your end step, draw a card.).\r\n[14:19:49] Turn 11: lovetapsmtg\r\n[14:19:55] lovetapsmtg has conceded from the game.\r\nWinner: kalcin66rocks\r\nGame 1 Completed.\r\n[14:20:04] kalcin66rocks has left the game.\r\n== Game 2 (655466372) ==\r\n[Time] 1545276117\r\n[14:21:57] PDBot has started watching.\r\n[14:21:57] lovetapsmtg chooses to play first.\r\n[14:22:06] lovetapsmtg keeps this hand.\r\n[14:22:08] kalcin66rocks keeps this hand.\r\n[14:22:08] Turn 1: lovetapsmtg\r\n[14:22:10] lovetapsmtg skips their draw step.\r\n[14:22:12] lovetapsmtg plays [Ancient Tomb].\r\n[14:22:16] lovetapsmtg casts [Thorn of Amethyst].\r\n[14:22:20] Turn 1: kalcin66rocks\r\n[14:22:23] kalcin66rocks plays [Island].\r\n[14:22:24] Turn 2: lovetapsmtg\r\n[14:22:32] lovetapsmtg plays [Plains].\r\n[14:22:46] Turn 2: kalcin66rocks\r\n[14:22:54] kalcin66rocks plays [Underground Sea].\r\n[14:23:00] Turn 3: lovetapsmtg\r\n[14:23:19] lovetapsmtg plays [City of Traitors].\r\n[14:23:34] lovetapsmtg casts [Enlistment Officer].\r\n[14:23:50] lovetapsmtg exiles [Force of Will] with with [Force of Will]'s ability.\r\n[14:23:50] kalcin66rocks casts [Force of Will] using an alternate cost targeting [Enlistment Officer].\r\n[14:24:00] Turn 3: kalcin66rocks\r\n[14:24:03] kalcin66rocks plays [Polluted Delta].\r\n[14:24:10] Turn 4: lovetapsmtg\r\n[14:25:23] lovetapsmtg casts [Chrome Mox].\r\n[14:25:29] lovetapsmtg puts triggered ability from [Chrome Mox] onto the stack (When Chrome Mox enters the battlefield, you may exile a nonartifact, nonland card from your hand.).\r\n[14:25:50] kalcin66rocks casts [Brainstorm].\r\n[14:25:52] kalcin66rocks draws three cards with [Brainstorm].\r\n[14:26:14] kalcin66rocks activates an ability of [Polluted Delta] ( Search your library for an Island or Swamp card, put it onto the battlefield, then shuffle your l...).\r\n[14:26:20] Turn 4: kalcin66rocks\r\n[14:26:31] kalcin66rocks casts [Brainstorm].\r\n[14:26:32] kalcin66rocks draws three cards with [Brainstorm].\r\n[14:26:49] kalcin66rocks plays [Forest].\r\n[14:26:55] Turn 5: lovetapsmtg\r\n[14:28:02] Turn 5: kalcin66rocks\r\n[14:28:05] kalcin66rocks plays [Verdant Catacombs].\r\n[14:28:10] kalcin66rocks casts [True-Name Nemesis].\r\n[14:28:15] The chosen player is lovetapsmtg.\r\n[14:28:24] Turn 6: lovetapsmtg\r\n[14:29:30] lovetapsmtg casts [Dawnbringer Charioteers].\r\n[14:29:54] kalcin66rocks activates an ability of [Verdant Catacombs] ( Search your library for a Swamp or Forest card, put it onto the battlefield, then shuffle your li...).\r\n[14:30:01] kalcin66rocks casts [Fatal Push] targeting [Dawnbringer Charioteers].\r\n[14:30:07] Turn 6: kalcin66rocks\r\n[14:30:10] kalcin66rocks plays [Misty Rainforest].\r\n[14:30:15] lovetapsmtg is being attacked by [True-Name Nemesis].\r\n[14:30:20] Turn 7: lovetapsmtg\r\n[14:31:50] lovetapsmtg plays [Plains].\r\n[14:31:50] lovetapsmtg puts triggered ability from [City of Traitors] onto the stack (When you play another land, sacrifice City of Traitors.).\r\n[14:32:02] lovetapsmtg casts [Dusk].\r\n[14:32:28] kalcin66rocks casts [Snapcaster Mage].\r\n[14:32:31] kalcin66rocks puts triggered ability from [Snapcaster Mage] onto the stack targeting [Brainstorm] (When Snapcaster Mage enters the battlefield, target instant or sorcery card in your graveyard gain...).\r\n[14:32:36] kalcin66rocks casts [Brainstorm] from the graveyard.\r\n[14:32:36] kalcin66rocks draws three cards with [Brainstorm].\r\n[14:32:46] kalcin66rocks activates an ability of [Misty Rainforest] ( Search your library for a Forest or Island card, put it onto the battlefield, then shuffle your l...).\r\n[14:32:51] Turn 7: kalcin66rocks\r\n[14:33:02] kalcin66rocks casts [Hymn to Tourach] targeting lovetapsmtg.\r\n[14:33:04] lovetapsmtg discards [Warping Wail].\r\n[14:33:04] lovetapsmtg discards [Holy Light].\r\n[14:33:24] kalcin66rocks casts [Baleful Strix].\r\n[14:33:25] kalcin66rocks puts triggered ability from [Baleful Strix] onto the stack (When Baleful Strix enters the battlefield, draw a card.).\r\n[14:33:26] kalcin66rocks draws a card with [Baleful Strix]'s ability.\r\n[14:33:29] lovetapsmtg is being attacked by [Snapcaster Mage].\r\n[14:33:31] Turn 8: lovetapsmtg\r\n[14:33:51] lovetapsmtg plays [Karakas].\r\n[14:34:05] lovetapsmtg casts [Dawn] from the graveyard.\r\n[14:34:06] lovetapsmtg returns [Dawnbringer Charioteers] and [Enlistment Officer] to their owner's hand with [Dawn].\r\n[14:34:16] Turn 8: kalcin66rocks\r\n[14:34:25] kalcin66rocks casts [Snapcaster Mage].\r\n[14:34:28] kalcin66rocks puts triggered ability from [Snapcaster Mage] onto the stack targeting [Hymn to Tourach] (When Snapcaster Mage enters the battlefield, target instant or sorcery card in your graveyard gain...).\r\n[14:34:34] kalcin66rocks casts [Hymn to Tourach] from the graveyard targeting lovetapsmtg.\r\n[14:34:34] lovetapsmtg discards [Suppression Field].\r\n[14:34:34] lovetapsmtg discards [Enlistment Officer].\r\n[14:34:39] lovetapsmtg is being attacked by [Baleful Strix] and [Snapcaster Mage].\r\n[14:34:42] Turn 9: lovetapsmtg\r\n[14:34:55] lovetapsmtg casts [Dawnbringer Charioteers].\r\n[14:35:01] Turn 9: kalcin66rocks\r\n[14:35:16] kalcin66rocks casts [Assassin's Trophy] targeting [Dawnbringer Charioteers].\r\n[14:35:27] lovetapsmtg is being attacked by [Snapcaster Mage], [Baleful Strix], and [Snapcaster Mage].\r\n[14:35:28] Turn 10: lovetapsmtg\r\n[14:35:34] Turn 10: kalcin66rocks\r\n[14:35:42] lovetapsmtg is being attacked by [Snapcaster Mage], [Baleful Strix], and [Snapcaster Mage].\r\nWinner: kalcin66rocks\r\nGame 2 Completed.\r\nMatch Winner: kalcin66rocks: 2–0\r\n[14:35:52] kalcin66rocks has left the game.\r\n", 'start_time_utc': '1545275226', 'end_time_utc': '1545276952'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 172.69.226.19
Cf-Ray: 48bf110d7adb3bc3-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 17305
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213082065' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213082065, 4, 'CLL R3 vs lovetapsmtg', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; IntegrityError
500 error at /api/upload
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213082038' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213082038, 4, 'CLL R3 vs Bandit Keith', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213082038', 'lines': "Legacy\r\nCLL R3 vs Bandit Keith\r\nTourney, BuggedCardObserver\r\nRedderTory,Bandit Keith\r\n\r\n== Game 1 (655464982) ==\r\n[Time] 1545275506\r\n[14:11:47] PDBot has started watching.\r\n[Gatherling] Event=Community Legacy League 6.51\r\n[Gatherling] Round=3\r\n[14:11:51] Bandit Keith chooses to play first.\r\n[14:12:34] Bandit Keith keeps this hand.\r\n[14:12:36] RedderTory mulligans to 6 cards.\r\n[14:12:37] RedderTory keeps this hand.\r\n[14:12:40] RedderTory puts 1 card on top of their library.\r\n[14:12:40] Turn 1: Bandit Keith\r\n[14:12:41] Bandit Keith skips their draw step.\r\n[14:12:46] Bandit Keith plays [Plains].\r\n[14:12:47] Bandit Keith casts [Mother of Runes].\r\n[14:12:49] Turn 1: RedderTory\r\n[14:12:51] RedderTory plays [Scalding Tarn].\r\n[14:12:53] RedderTory activates an ability of [Scalding Tarn] ( Search your library for an Island or Mountain card, put it onto the battlefield, then shuffle you...).\r\n[14:13:04] RedderTory casts [Forked Bolt] targeting Bandit Keith for 1, and [Mother of Runes] for 1.\r\n[14:13:05] Turn 2: Bandit Keith\r\n[14:14:43] Bandit Keith plays [Wasteland].\r\n[14:14:46] Bandit Keith activates an ability of [Wasteland] targeting [Volcanic Island] ( Destroy target nonbasic land.).\r\n[14:14:51] Turn 2: RedderTory\r\n[14:14:53] RedderTory plays [Underground Sea].\r\n[14:14:58] Turn 3: Bandit Keith\r\n[14:15:27] Bandit Keith plays [Wasteland].\r\n[14:15:29] Bandit Keith activates an ability of [Wasteland] targeting [Underground Sea] ( Destroy target nonbasic land.).\r\n[14:15:35] RedderTory casts [Brainstorm].\r\n[14:15:39] RedderTory returns [Underground Sea] to its owner's hand with with [Daze]'s ability.\r\n[14:15:39] RedderTory casts [Daze] using an alternate cost targeting [Brainstorm].\r\n[14:15:59] Bandit Keith's Wasteland is countered because it has no legal targets.\r\n[14:16:02] Bandit Keith casts [Mother of Runes].\r\n[14:16:07] RedderTory exiles [Brainstorm] with with [Force of Will]'s ability.\r\n[14:16:07] RedderTory casts [Force of Will] using an alternate cost targeting [Mother of Runes].\r\n[14:16:19] Turn 3: RedderTory\r\n[14:16:21] RedderTory plays [Underground Sea].\r\n[14:16:26] RedderTory casts [Gurmag Angler].\r\n[14:16:31] Turn 4: Bandit Keith\r\n[14:17:03] Bandit Keith plays [Rishadan Port].\r\n[14:17:16] Bandit Keith casts [Stoneforge Mystic].\r\n[14:17:18] Bandit Keith puts triggered ability from [Stoneforge Mystic] onto the stack (When Stoneforge Mystic enters the battlefield, you may search your library for an Equipment card, ...).\r\n[14:17:28] Bandit Keith reveals [Batterskull].\r\n[14:17:33] Turn 4: RedderTory\r\n[14:17:39] Bandit Keith is being attacked by [Gurmag Angler].\r\n[14:17:43] Turn 5: Bandit Keith\r\n[14:17:54] Bandit Keith plays [Plains].\r\n[14:18:28] Turn 5: RedderTory\r\n[14:18:32] Bandit Keith activates an ability of [Stoneforge Mystic] ( You may put an Equipment card from your hand onto the battlefield.).\r\n[14:18:35] Bandit Keith puts triggered ability from [Batterskull] onto the stack (Living weapon (When this Equipment enters the battlefield, create a 0/0 black Germ creature toke...).\r\n[14:18:38] Bandit Keith's [Batterskull] creates a Germ token.\r\n[14:18:45] RedderTory casts [Inquisition of Kozilek] targeting Bandit Keith.\r\n[14:18:56] Bandit Keith discards [Thalia, Guardian of Thraben].\r\n[14:18:56] Bandit Keith reveals their hand to [Inquisition of Kozilek], containing [Sword of War and Peace] and [Thalia, Heretic Cathar].\r\n[14:19:04] Bandit Keith is being attacked by [Gurmag Angler].\r\n[14:19:09] Turn 6: Bandit Keith\r\n[14:19:41] RedderTory is being attacked by [Germ] token and [Stoneforge Mystic].\r\n[14:19:48] Turn 6: RedderTory\r\n[14:19:54] Bandit Keith activates an ability of [Rishadan Port] targeting [Underground Sea] ( Tap target land.).\r\n[14:20:07] RedderTory plays [Wasteland].\r\n[14:20:09] RedderTory activates an ability of [Wasteland] targeting [Rishadan Port] ( Destroy target nonbasic land.).\r\n[14:20:26] Turn 7: Bandit Keith\r\n[14:20:34] Bandit Keith casts [Path to Exile] targeting [Gurmag Angler].\r\n[14:20:39] RedderTory has conceded from the game.\r\nWinner: Bandit Keith\r\nGame 1 Completed.\r\n== Game 2 (655466608) ==\r\n[Time] 1545276217\r\n[14:23:37] PDBot has started watching.\r\n[14:23:38] RedderTory keeps this hand.\r\n[14:23:42] Bandit Keith keeps this hand.\r\n[14:23:42] Turn 1: RedderTory\r\n[14:23:48] RedderTory skips their draw step.\r\n[14:23:48] RedderTory plays [Volcanic Island].\r\n[14:23:51] RedderTory casts [Delver of Secrets].\r\n[14:23:57] Turn 1: Bandit Keith\r\n[14:24:03] Bandit Keith plays [Plains].\r\n[14:24:52] Bandit Keith casts [Aether Vial].\r\n[14:25:02] Turn 2: RedderTory\r\n[14:25:02] RedderTory puts triggered ability from [Delver of Secrets] onto the stack (At the beginning of your upkeep, look at the top card of your library. You may reveal that card. I...).\r\n[14:25:11] RedderTory casts [Brainstorm].\r\n[14:25:14] RedderTory draws three cards with [Brainstorm].\r\n[14:25:20] RedderTory plays [Polluted Delta].\r\n[14:25:21] RedderTory activates an ability of [Polluted Delta] ( Search your library for an Island or Swamp card, put it onto the battlefield, then shuffle your l...).\r\n[14:25:29] RedderTory casts [Thoughtseize] targeting Bandit Keith.\r\n[14:25:34] Bandit Keith discards [Stoneforge Mystic].\r\n[14:25:35] Bandit Keith reveals their hand to [Thoughtseize], containing [Path to Exile], [Mother of Runes], [Rishadan Port], [Swords to Plowshares], and [Swords to Plowshares].\r\n[14:25:39] Bandit Keith is being attacked by [Delver of Secrets].\r\n[14:25:39] Turn 2: Bandit Keith\r\n[14:25:42] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:25:56] Bandit Keith plays [Plains].\r\n[14:25:59] Bandit Keith casts [Swords to Plowshares] targeting [Delver of Secrets].\r\n[14:26:09] Turn 3: RedderTory\r\n[14:26:13] RedderTory casts [Brainstorm].\r\n[14:26:15] RedderTory draws three cards with [Brainstorm].\r\n[14:26:23] RedderTory plays [Wasteland].\r\n[14:26:28] Bandit Keith activates an ability of [Aether Vial] ( You may put a creature card with converted mana cost equal to the number of charge counters on Ae...).\r\n[14:26:36] RedderTory casts [Lightning Bolt] targeting [Mother of Runes].\r\n[14:26:46] Turn 3: Bandit Keith\r\n[14:26:47] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:27:03] Bandit Keith plays [Rishadan Port].\r\n[14:27:14] RedderTory activates an ability of [Wasteland] targeting [Rishadan Port] ( Destroy target nonbasic land.).\r\n[14:27:20] Turn 4: RedderTory\r\n[14:27:27] RedderTory casts [Ponder].\r\n[14:27:33] RedderTory chooses to shuffle his or her library.\r\n[14:27:33] RedderTory draws a card with [Ponder].\r\n[14:27:46] RedderTory casts [Gurmag Angler].\r\n[14:28:04] Bandit Keith casts [Path to Exile] targeting [Gurmag Angler].\r\n[14:28:15] Turn 4: Bandit Keith\r\n[14:28:16] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:28:28] Bandit Keith plays [Plains].\r\n[14:28:29] Bandit Keith casts [Aether Vial].\r\n[14:28:33] Turn 5: RedderTory\r\n[14:28:39] RedderTory casts [True-Name Nemesis].\r\n[14:28:44] The chosen player is Bandit Keith.\r\n[14:28:56] Turn 5: Bandit Keith\r\n[14:28:57] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:28:58] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:29:07] Bandit Keith chooses not to use [Aether Vial]'s ability.\r\n[14:29:11] Bandit Keith plays [Wasteland].\r\n[14:29:19] Bandit Keith activates an ability of [Wasteland] targeting [Underground Sea] ( Destroy target nonbasic land.).\r\n[14:29:26] Turn 6: RedderTory\r\n[14:29:31] RedderTory plays [Underground Sea].\r\n[14:29:38] Bandit Keith is being attacked by [True-Name Nemesis].\r\n[14:29:42] Turn 6: Bandit Keith\r\n[14:29:43] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:29:44] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:29:54] Bandit Keith chooses not to use [Aether Vial]'s ability.\r\n[14:30:39] Turn 7: RedderTory\r\n[14:30:41] Bandit Keith activates an ability of [Aether Vial] ( You may put a creature card with converted mana cost equal to the number of charge counters on Ae...).\r\n[14:31:23] Bandit Keith chooses the number 1.\r\n[14:31:23] Bandit Keith is being attacked by [True-Name Nemesis].\r\n[14:31:23] Turn 7: Bandit Keith\r\n[14:31:26] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:31:27] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:31:35] Bandit Keith chooses not to use [Aether Vial]'s ability.\r\n[14:31:45] RedderTory is being attacked by [Sanctum Prelate].\r\n[14:31:49] RedderTory casts [Snapcaster Mage].\r\n[14:31:56] Bandit Keith activates an ability of [Aether Vial] ( You may put a creature card with converted mana cost equal to the number of charge counters on Ae...).\r\n[14:32:04] RedderTory puts triggered ability from [Snapcaster Mage] onto the stack targeting [Lightning Bolt] (When Snapcaster Mage enters the battlefield, target instant or sorcery card in your graveyard gain...).\r\n[14:32:15] Turn 8: RedderTory\r\n[14:32:26] Bandit Keith is being attacked by [True-Name Nemesis].\r\n[14:32:30] Turn 8: Bandit Keith\r\n[14:32:31] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:32:32] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:32:37] Bandit Keith chooses not to use [Aether Vial]'s ability.\r\n[14:32:54] RedderTory is being attacked by [Thalia, Heretic Cathar].\r\n[14:33:07] RedderTory casts [Snapcaster Mage].\r\n[14:33:11] RedderTory puts triggered ability from [Snapcaster Mage] onto the stack targeting [Lightning Bolt] (When Snapcaster Mage enters the battlefield, target instant or sorcery card in your graveyard gain...).\r\n[14:33:14] Turn 9: RedderTory\r\n[14:33:26] Bandit Keith is being attacked by [Snapcaster Mage], [Snapcaster Mage], and [True-Name Nemesis].\r\n[14:34:14] Bandit Keith activates an ability of [Aether Vial] ( You may put a creature card with converted mana cost equal to the number of charge counters on Ae...).\r\n[14:34:19] Bandit Keith puts triggered ability from [Stoneforge Mystic] onto the stack (When Stoneforge Mystic enters the battlefield, you may search your library for an Equipment card, ...).\r\n[14:35:20] Bandit Keith reveals [Umezawa's Jitte].\r\n[14:35:25] Turn 9: Bandit Keith\r\n[14:35:26] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:35:27] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[14:35:36] Bandit Keith chooses not to use [Aether Vial]'s ability.\r\n[14:36:38] RedderTory is being attacked by [Thalia, Heretic Cathar] and [Sanctum Prelate].\r\n[14:37:09] Turn 10: RedderTory\r\n[14:37:56] Bandit Keith is being attacked by [Snapcaster Mage], [Snapcaster Mage], and [True-Name Nemesis].\r\n[14:38:39] Bandit Keith has conceded from the game.\r\nWinner: RedderTory\r\nGame 2 Completed.\r\n", 'start_time_utc': '1545275506', 'end_time_utc': '1545277119'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 172.69.226.85
Cf-Ray: 48bf1544fec23c05-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 14708
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213082038' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213082038, 4, 'CLL R3 vs Bandit Keith', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; IntegrityError
500 error at /api/upload
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213095545' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213095545, 9, '', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213095545', 'lines': "Modern\r\n\r\nBuggedCardObserver\r\nWhiteRyder,silasary\r\n\r\n== Game 1 (655518666) ==\r\n[Time] 1545311485\r\n[00:11:25] PDBot has started watching.\r\n[00:11:34] silasary chooses to play first.\r\n[00:11:50] silasary keeps this hand.\r\n[00:11:52] WhiteRyder keeps this hand.\r\n[00:11:52] Turn 1: silasary\r\n[00:11:52] silasary skips their draw step.\r\n[00:11:55] silasary plays [Mountain].\r\n[00:11:57] Turn 1: WhiteRyder\r\n[00:11:59] WhiteRyder plays [Plains].\r\n[00:12:01] Turn 2: silasary\r\n[00:12:03] silasary plays [Mountain].\r\n[00:12:05] Turn 2: WhiteRyder\r\n[00:12:07] WhiteRyder plays [Plains].\r\n[00:12:09] WhiteRyder casts [Knight of the Holy Nimbus].\r\n[00:12:12] Turn 3: silasary\r\n[00:12:15] silasary plays [Mountain].\r\n[00:12:18] silasary casts [Hell's Thunder].\r\n[00:12:26] WhiteRyder is being attacked by [Hell's Thunder].\r\n[00:12:30] silasary puts triggered ability from [Hell's Thunder] onto the stack (At the beginning of the end step, sacrifice Hell's Thunder.).\r\n[00:12:33] Turn 3: WhiteRyder\r\n[00:12:35] WhiteRyder plays [Plains].\r\n[00:12:37] WhiteRyder casts [Knight Exemplar].\r\n[00:12:40] silasary is being attacked by [Knight of the Holy Nimbus].\r\n[00:12:43] Turn 4: silasary\r\n[00:12:47] silasary plays [Mountain].\r\n[00:12:49] silasary casts [Pyretic Ritual].\r\n[00:12:53] silasary casts [Confusion in the Ranks].\r\n[00:12:53] No legal targets to choose for [Confusion in the Ranks]'s triggered ability.\r\n[00:12:54] Turn 4: WhiteRyder\r\n[00:13:17] WhiteRyder plays [Plains].\r\n[00:13:20] WhiteRyder casts [Knight Exemplar].\r\n[00:13:23] silasary puts triggered ability from [Confusion in the Ranks] onto the stack (Whenever an artifact, creature, or enchantment enters the battlefield, its controller chooses targ...).\r\n[00:13:24] @Asilasary's Triggered ability from Confusion in the Ranks has no available targets.\r\n[00:13:27] silasary is being attacked by [Knight Exemplar] and [Knight of the Holy Nimbus].\r\n[00:13:32] Turn 5: silasary\r\n[00:13:35] silasary plays [Mountain].\r\n[00:13:49] silasary casts [Spark Elemental].\r\n[00:13:57] silasary puts triggered ability from [Confusion in the Ranks] onto the stack targeting [Knight of the Holy Nimbus] (Whenever an artifact, creature, or enchantment enters the battlefield, its controller chooses targ...).\r\n[00:14:07] silasary casts [Blood Moon].\r\n[00:14:09] No legal targets to choose for [Confusion in the Ranks]'s triggered ability.\r\n[00:14:12] WhiteRyder puts triggered ability from [Spark Elemental] onto the stack (At the beginning of the end step, sacrifice Spark Elemental.).\r\n[00:14:18] Turn 5: WhiteRyder\r\n[00:14:30] WhiteRyder plays [Plains].\r\n[00:14:33] WhiteRyder casts [Knight Exemplar].\r\n[00:14:38] silasary puts triggered ability from [Confusion in the Ranks] onto the stack (Whenever an artifact, creature, or enchantment enters the battlefield, its controller chooses targ...).\r\n[00:14:44] WhiteRyder targets [Knight of the Holy Nimbus] for Triggered ability from Confusion in the Ranks.\r\n[00:14:55] silasary is being attacked by [Knight Exemplar] and [Knight Exemplar].\r\n[00:15:04] Turn 6: silasary\r\n[00:15:12] silasary plays [Mountain].\r\n[00:15:16] silasary activates an ability of [Hell's Thunder] (Unearth for {4R}).\r\n[00:15:26] silasary puts triggered ability from [Confusion in the Ranks] onto the stack targeting [Knight Exemplar] (Whenever an artifact, creature, or enchantment enters the battlefield, its controller chooses targ...).\r\n[00:15:40] WhiteRyder puts triggered ability from [Hell's Thunder] onto the stack (Exile the unearthed creature.).\r\n[00:15:40] WhiteRyder puts triggered ability from [Hell's Thunder] onto the stack (At the beginning of the end step, sacrifice Hell's Thunder.).\r\n[00:15:48] Turn 6: WhiteRyder\r\n[00:15:51] WhiteRyder plays [Plains].\r\n[00:16:10] Turn 7: silasary\r\n[00:16:13] silasary plays [Mountain].\r\n[00:16:19] Turn 7: WhiteRyder\r\n[00:16:30] Turn 8: silasary\r\n[00:16:34] silasary casts [Blood Moon].\r\n[00:16:36] No legal targets to choose for [Confusion in the Ranks]'s triggered ability.\r\n[00:16:40] Turn 8: WhiteRyder\r\n[00:16:54] Turn 9: silasary\r\n[00:17:13] silasary casts [Act of Aggression] targeting [Knight of the Holy Nimbus].\r\n[00:17:32] WhiteRyder is being attacked by [Knight of the Holy Nimbus].\r\n[00:17:35] Turn 9: WhiteRyder\r\n[00:17:38] WhiteRyder plays [Plains].\r\n[00:17:43] Turn 10: silasary\r\n[00:17:48] silasary casts [Spawning Breath] targeting WhiteRyder.\r\n[00:17:56] silasary's [Spawning Breath] creates an Eldrazi Spawn token.\r\n[00:17:59] silasary puts triggered ability from [Confusion in the Ranks] onto the stack targeting [Knight Exemplar] (Whenever an artifact, creature, or enchantment enters the battlefield, its controller chooses targ...).\r\n[00:18:11] WhiteRyder is being attacked by [Knight Exemplar].\r\n[00:18:15] Turn 10: WhiteRyder\r\n[00:18:20] WhiteRyder casts [Gideon, Ally of Zendikar].\r\n[00:18:24] WhiteRyder activates an ability of [Gideon, Ally of Zendikar] ( Create a 2/2 white Knight Ally creature token.).\r\n[00:18:26] WhiteRyder's [Gideon, Ally of Zendikar] creates a Knight Ally token.\r\n[00:18:30] silasary puts triggered ability from [Confusion in the Ranks] onto the stack (Whenever an artifact, creature, or enchantment enters the battlefield, its controller chooses targ...).\r\n[00:18:31] WhiteRyder targets [Knight Exemplar] for Triggered ability from Confusion in the Ranks.\r\n[00:18:47] Turn 11: silasary\r\n[00:18:49] silasary plays [Mountain].\r\n[00:19:09] Turn 11: WhiteRyder\r\n[00:19:16] WhiteRyder activates an ability of [Gideon, Ally of Zendikar] ( Create a 2/2 white Knight Ally creature token.).\r\n[00:19:17] WhiteRyder's [Gideon, Ally of Zendikar] creates a Knight Ally token.\r\n[00:19:20] silasary puts triggered ability from [Confusion in the Ranks] onto the stack (Whenever an artifact, creature, or enchantment enters the battlefield, its controller chooses targ...).\r\n[00:19:21] WhiteRyder targets [Knight Exemplar] for Triggered ability from Confusion in the Ranks.\r\n[00:19:37] Turn 12: silasary\r\n[00:19:41] silasary casts [Spark Elemental].\r\n[00:19:50] silasary puts triggered ability from [Confusion in the Ranks] onto the stack targeting [Knight Exemplar] (Whenever an artifact, creature, or enchantment enters the battlefield, its controller chooses targ...).\r\n[00:20:00] WhiteRyder puts triggered ability from [Spark Elemental] onto the stack (At the beginning of the end step, sacrifice Spark Elemental.).\r\n[00:20:03] Turn 12: WhiteRyder\r\n[00:20:07] WhiteRyder activates an ability of [Gideon, Ally of Zendikar] ( Create a 2/2 white Knight Ally creature token.).\r\n[00:20:08] WhiteRyder's [Gideon, Ally of Zendikar] creates a Knight Ally token.\r\n[00:20:11] silasary puts triggered ability from [Confusion in the Ranks] onto the stack (Whenever an artifact, creature, or enchantment enters the battlefield, its controller chooses targ...).\r\n[00:20:13] WhiteRyder targets [Knight Exemplar] for Triggered ability from Confusion in the Ranks.\r\n[00:20:31] WhiteRyder casts [Knight of Meadowgrain].\r\n[00:20:35] silasary puts triggered ability from [Confusion in the Ranks] onto the stack (Whenever an artifact, creature, or enchantment enters the battlefield, its controller chooses targ...).\r\n[00:20:36] WhiteRyder targets [Knight Exemplar] for Triggered ability from Confusion in the Ranks.\r\n[00:20:51] silasary is being attacked by [Knight Exemplar] and [Knight of the Holy Nimbus].\r\n[00:21:01] [Knight of Meadowgrain] blocks [Knight of the Holy Nimbus].\r\n[00:21:03] [Knight Ally] token blocks [Knight Exemplar].\r\n[00:21:08] WhiteRyder puts triggered ability from [Knight of the Holy Nimbus] onto the stack (Flanking (Whenever this creature becomes blocked by a creature without flanking, the blocking cr...).\r\n[00:21:16] Turn 13: silasary\r\n[00:21:29] silasary casts [Lightning Bolt] targeting WhiteRyder.\r\n[00:21:39] Turn 13: WhiteRyder\r\n[00:22:07] silasary is being attacked by [Knight Exemplar], [Knight Exemplar], [Knight Exemplar], and [Knight of the Holy Nimbus].\r\n[00:22:08] silasary has conceded from the game.\r\nWinner: WhiteRyder\r\nGame 1 Completed.\r\n== Game 2 (655519680) ==\r\n[Time] 1545312236\r\n[00:23:56] PDBot has started watching.\r\n[00:24:00] silasary chooses to play first.\r\n[00:24:05] silasary mulligans to 6 cards.\r\n[00:24:07] WhiteRyder keeps this hand.\r\n[00:24:08] silasary keeps this hand.\r\n[00:24:11] silasary puts 1 card on the bottom of their library.\r\n[00:24:11] Turn 1: silasary\r\n[00:24:11] silasary skips their draw step.\r\n[00:24:13] silasary plays [Mountain].\r\n[00:24:17] Turn 1: WhiteRyder\r\n[00:24:25] WhiteRyder plays [Plains].\r\n[00:24:28] Turn 2: silasary\r\n[00:24:30] silasary plays [Mountain].\r\n[00:24:33] Turn 2: WhiteRyder\r\n[00:24:38] WhiteRyder plays [Sunpetal Grove].\r\n[00:24:41] WhiteRyder casts [Knight of Meadowgrain].\r\n[00:24:48] silasary casts [Lightning Bolt] targeting [Knight of Meadowgrain].\r\n[00:24:50] Turn 3: silasary\r\n[00:24:55] Turn 3: WhiteRyder\r\n[00:25:03] WhiteRyder plays [Razorverge Thicket].\r\n[00:25:06] WhiteRyder casts [Knight of the White Orchid].\r\n[00:25:21] Turn 4: silasary\r\n[00:25:25] Turn 4: WhiteRyder\r\n[00:25:57] WhiteRyder plays [Stirring Wildwood].\r\n[00:25:58] silasary is being attacked by [Knight of the White Orchid].\r\n[00:25:58] silasary casts [Lightning Bolt] targeting [Knight of the White Orchid].\r\n[00:25:58] WhiteRyder casts [Path to Exile] targeting [Knight of the White Orchid].\r\n[00:26:27] silasary's [Lightning Bolt] is countered because it has no legal targets.\r\n[00:26:48] Turn 5: silasary\r\n[00:26:54] silasary casts [Desperate Ritual].\r\n[00:26:57] silasary casts [Pilgrim's Eye].\r\n[00:27:00] silasary puts triggered ability from [Pilgrim's Eye] onto the stack (When Pilgrim's Eye enters the battlefield, you may search your library for a basic land card, reve...).\r\n[00:27:11] silasary reveals [Mountain].\r\n[00:27:14] silasary plays [Mountain].\r\n[00:27:17] Turn 5: WhiteRyder\r\n[00:27:58] WhiteRyder casts [Knight of Autumn].\r\n[00:28:09] WhiteRyder puts triggered ability from [Knight of Autumn] onto the stack (Put two +1/+1 counters on Knight of Autumn.).\r\n[00:28:21] WhiteRyder plays [Razorverge Thicket].\r\n[00:28:28] Turn 6: silasary\r\n[00:28:30] silasary plays [Mountain].\r\n[00:28:38] silasary casts [Murderous Redcap].\r\n[00:28:50] silasary puts triggered ability from [Murderous Redcap] onto the stack targeting WhiteRyder (When Murderous Redcap enters the battlefield, it deals damage equal to its power to any target.).\r\n[00:29:15] WhiteRyder is being attacked by [Pilgrim's Eye].\r\n[00:29:38] WhiteRyder casts [Path to Exile] targeting [Murderous Redcap].\r\n[00:29:52] Turn 6: WhiteRyder\r\n[00:30:00] WhiteRyder plays [Plains].\r\n[00:30:06] WhiteRyder activates an ability of [Stirring Wildwood] ( Until end of turn, Stirring Wildwood becomes a 3/4 green and white Elemental creature with reach....).\r\n[00:30:13] silasary is being attacked by [Knight of Autumn] and [Stirring Wildwood].\r\n[00:30:18] Turn 7: silasary\r\n[00:30:33] silasary casts [Spawning Breath] targeting [Knight of Autumn].\r\n[00:30:42] silasary's [Spawning Breath] creates an Eldrazi Spawn token.\r\n[00:30:52] silasary casts [Murderous Redcap].\r\n[00:31:26] silasary puts triggered ability from [Murderous Redcap] onto the stack targeting [Knight of Autumn] (When Murderous Redcap enters the battlefield, it deals damage equal to its power to any target.).\r\n[00:31:36] WhiteRyder casts [Dromoka's Command] targeting silasary, and [Knight of Autumn] (+1/+1 counter) (Target player sacrifices an enchantment. Put a +1/+1 counter on target creature.).\r\n[00:31:53] Turn 7: WhiteRyder\r\n[00:32:03] WhiteRyder activates an ability of [Stirring Wildwood] ( Until end of turn, Stirring Wildwood becomes a 3/4 green and white Elemental creature with reach....).\r\n[00:32:28] silasary is being attacked by [Knight of Autumn] and [Stirring Wildwood].\r\n[00:32:46] [Murderous Redcap] blocks [Knight of Autumn].\r\n[00:32:47] [Pilgrim's Eye] blocks [Knight of Autumn].\r\n[00:32:50] Blockers for [Knight of Autumn] are ordered as follows: [Pilgrim's Eye], [Murderous Redcap]\r\n[00:32:54] silasary puts triggered ability from [Murderous Redcap] onto the stack (Persist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefiel...).\r\n[00:33:00] silasary puts triggered ability from [Murderous Redcap] onto the stack targeting [Knight of Autumn] (When Murderous Redcap enters the battlefield, it deals damage equal to its power to any target.).\r\n[00:33:07] WhiteRyder plays [Sunpetal Grove].\r\n[00:33:37] Turn 8: silasary\r\n[00:33:51] silasary plays [Mountain].\r\n[00:33:56] silasary casts [Hell's Thunder].\r\n[00:34:03] WhiteRyder is being attacked by [Hell's Thunder].\r\n[00:34:06] silasary puts triggered ability from [Hell's Thunder] onto the stack (At the beginning of the end step, sacrifice Hell's Thunder.).\r\n[00:34:18] Turn 8: WhiteRyder\r\n[00:34:21] WhiteRyder plays [Gavony Township].\r\n[00:34:38] Turn 9: silasary\r\n[00:34:47] silasary activates an ability of [Hell's Thunder] (Unearth for {4R}).\r\n[00:34:54] WhiteRyder is being attacked by [Hell's Thunder].\r\n[00:35:02] WhiteRyder activates an ability of [Stirring Wildwood] ( Until end of turn, Stirring Wildwood becomes a 3/4 green and white Elemental creature with reach....).\r\n[00:35:19] [Stirring Wildwood] blocks [Hell's Thunder].\r\n[00:35:30] [Stirring Wildwood] stops blocking.\r\n[00:35:44] WhiteRyder activates an ability of [Gavony Township] ( Put a +1/+1 counter on each creature you control.).\r\n[00:35:53] silasary puts triggered ability from [Hell's Thunder] onto the stack (Exile the unearthed creature.).\r\n[00:35:53] silasary puts triggered ability from [Hell's Thunder] onto the stack (At the beginning of the end step, sacrifice Hell's Thunder.).\r\n[00:35:58] Turn 9: WhiteRyder\r\n[00:36:33] WhiteRyder activates an ability of [Stirring Wildwood] ( Until end of turn, Stirring Wildwood becomes a 3/4 green and white Elemental creature with reach....).\r\n[00:37:27] silasary is being attacked by [Stirring Wildwood].\r\n[00:37:31] [Murderous Redcap] blocks [Stirring Wildwood].\r\n[00:37:43] WhiteRyder activates an ability of [Gavony Township] ( Put a +1/+1 counter on each creature you control.).\r\n[00:37:52] WhiteRyder plays [Plains].\r\n[00:37:54] Turn 10: silasary\r\n[00:38:09] Turn 10: WhiteRyder\r\n[00:38:17] WhiteRyder activates an ability of [Stirring Wildwood] ( Until end of turn, Stirring Wildwood becomes a 3/4 green and white Elemental creature with reach....).\r\n[00:38:27] silasary is being attacked by [Stirring Wildwood].\r\n[00:38:31] silasary casts [Spawning Breath] targeting WhiteRyder.\r\n[00:38:44] silasary's [Spawning Breath] creates an Eldrazi Spawn token.\r\n[00:38:54] [Eldrazi Spawn] token blocks [Stirring Wildwood].\r\n[00:39:04] WhiteRyder casts [Knight Exemplar].\r\n[00:39:09] Turn 11: silasary\r\n[00:39:20] silasary casts [Confusion in the Ranks].\r\n[00:39:22] No legal targets to choose for [Confusion in the Ranks]'s triggered ability.\r\n[00:39:26] Turn 11: WhiteRyder\r\n[00:39:32] WhiteRyder plays [Plains].\r\n[00:39:40] WhiteRyder activates an ability of [Stirring Wildwood] ( Until end of turn, Stirring Wildwood becomes a 3/4 green and white Elemental creature with reach....).\r\n[00:39:54] silasary is being attacked by [Knight Exemplar] and [Stirring Wildwood].\r\n[00:40:03] WhiteRyder activates an ability of [Gavony Township] ( Put a +1/+1 counter on each creature you control.).\r\n[00:40:08] Turn 12: silasary\r\n[00:40:13] silasary plays [Mountain].\r\n[00:40:17] Turn 12: WhiteRyder\r\n[00:40:24] WhiteRyder activates an ability of [Stirring Wildwood] ( Until end of turn, Stirring Wildwood becomes a 3/4 green and white Elemental creature with reach....).\r\n[00:40:36] silasary is being attacked by [Knight Exemplar] and [Stirring Wildwood].\r\n[00:40:44] silasary casts [Act of Aggression] targeting [Stirring Wildwood].\r\n[00:41:00] [Stirring Wildwood] blocks [Knight Exemplar].\r\n[00:41:19] WhiteRyder casts [Gideon, Ally of Zendikar].\r\n[00:41:56] Turn 13: silasary\r\n[00:41:58] silasary plays [Mountain].\r\n[00:42:03] Turn 13: WhiteRyder\r\n[00:42:09] WhiteRyder activates an ability of [Gideon, Ally of Zendikar] ( Until end of turn, Gideon, Ally of Zendikar becomes a 5/5 Human Soldier Ally creature with indest...).\r\n[00:42:10] silasary has conceded from the game.\r\nWinner: WhiteRyder\r\nGame 2 Completed.\r\nMatch Winner: WhiteRyder: 2–0\r\n", 'start_time_utc': '1545311485', 'end_time_utc': '1545313331'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.69.65
Cf-Ray: 48c2895d39ccbd65-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 20408
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213095545' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213095545, 9, '', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; IntegrityError
500 error at /api/upload
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213096620' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213096620, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213096620', 'lines': 'PennyDreadful\r\npd league\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nkarakusk,silasary\r\n\r\n== Game 1 (655522894) ==\r\n[Time] 1545314393\r\n[00:59:53] PDBot has started watching.\r\n[00:59:53] karakusk joined the game.\r\n[League] Dimir Breakfast by karakusk (30671) vs "Mono Black" Curses by silasary (30334)\r\n[00:59:58] [CHAT] PDBot: [sD] Good luck in your League match!\r\n[01:00:00] karakusk chooses to play first.\r\n[01:00:08] karakusk mulligans to 6 cards.\r\n[01:00:11] silasary keeps this hand.\r\n[01:00:13] karakusk mulligans to 5 cards.\r\n[01:00:16] karakusk mulligans to 4 cards.\r\n[01:00:18] karakusk keeps this hand.\r\n[01:00:20] karakusk puts 1 card on the bottom of their library.\r\n[01:00:20] Turn 1: karakusk\r\n[01:00:20] karakusk skips their draw step.\r\n[01:00:22] karakusk plays [Choked Estuary].\r\n[01:00:25] karakusk casts [Shuko].\r\n[01:00:29] Turn 1: silasary\r\n[01:00:43] silasary plays [Swamp].\r\n[01:00:47] Turn 2: karakusk\r\n[01:00:51] karakusk plays [Island].\r\n[01:00:56] Turn 2: silasary\r\n[01:01:01] silasary plays [Swamp].\r\n[01:01:04] Turn 3: karakusk\r\n[01:01:07] karakusk plays [Swamp].\r\n[01:01:15] Turn 3: silasary\r\n[01:01:23] silasary plays [Lake of the Dead].\r\n[01:01:25] silasary sacrifices [Swamp].\r\n[01:01:34] silasary casts [Curse of Misfortunes] targeting karakusk.\r\n[01:01:35] cotton2431 has started watching.\r\n[01:01:37] karakusk casts [Anticipate].\r\n[01:01:45] cotton2431 has stopped watching.\r\n[01:02:00] Turn 4: karakusk\r\n[01:02:02] karakusk plays [Island].\r\n[01:02:04] Turn 4: silasary\r\n[01:02:05] silasary puts triggered ability from [Curse of Misfortunes] onto the stack (At the beginning of your upkeep, you may search your library for a Curse card that doesn\'t have th...).\r\n[01:02:20] silasary plays [Swamp].\r\n[01:02:24] Turn 5: karakusk\r\n[01:02:28] karakusk plays [Island].\r\n[01:02:39] Turn 5: silasary\r\n[01:02:39] silasary puts triggered ability from [Curse of Misfortunes] onto the stack (At the beginning of your upkeep, you may search your library for a Curse card that doesn\'t have th...).\r\n[01:02:50] silasary plays [Spawning Pool].\r\n[01:02:52] Turn 6: karakusk\r\n[01:02:52] silasary puts triggered ability from [Cruel Reality] onto the stack (At the beginning of enchanted player\'s upkeep, that player sacrifices a creature or planeswalker. ...).\r\n[01:03:02] karakusk plays [Swamp].\r\n[01:03:12] Turn 6: silasary\r\n[01:03:12] silasary puts triggered ability from [Curse of Misfortunes] onto the stack (At the beginning of your upkeep, you may search your library for a Curse card that doesn\'t have th...).\r\n[01:03:32] silasary plays [Swamp].\r\n[01:03:36] silasary casts [Accursed Witch].\r\n[01:03:37] Turn 7: karakusk\r\n[01:03:37] silasary puts triggered ability from [Cruel Reality] onto the stack (At the beginning of enchanted player\'s upkeep, that player sacrifices a creature or planeswalker. ...).\r\n[01:03:48] karakusk casts [Consign] targeting [Curse of Death\'s Hold].\r\n[01:03:49] silasary puts triggered ability from [Curse of Echoes] onto the stack (Whenever enchanted player casts an instant or sorcery spell, each other player may copy that spell...).\r\n[01:04:01] silasary puts a copy of [Consign] on the stack.\r\n[01:04:03] silasary changes targets of [Consign] to [Shuko].\r\n[01:04:05] silasary returns [Shuko] to its owner\'s hand with [Consign].\r\n[01:04:08] karakusk returns [Curse of Death\'s Hold] to its owner\'s hand with [Consign].\r\n[01:04:12] karakusk casts [Cephalid Illusionist].\r\n[01:04:15] karakusk casts [Shuko].\r\n[01:04:17] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:04:17] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:04:28] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:04:29] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:04:32] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:04:32] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:04:35] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:04:35] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:04:39] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:04:39] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:04:39] karakusk puts triggered ability from [Narcomoeba] onto the stack (When Narcomoeba is put into your graveyard from your library, you may put it onto the battlefield.).\r\n[01:04:46] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:04:46] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:04:46] karakusk puts triggered ability from [Narcomoeba] onto the stack (When Narcomoeba is put into your graveyard from your library, you may put it onto the battlefield.).\r\n[01:04:56] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:04:57] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:05:01] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:05:01] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:05:03] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:05:03] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:05:05] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:05:05] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:05:05] karakusk puts triggered ability from [Narcomoeba] onto the stack (When Narcomoeba is put into your graveyard from your library, you may put it onto the battlefield.).\r\n[01:05:18] karakusk casts [Dread Return] from the graveyard targeting [Flayer of the Hatebound].\r\n[01:05:18] silasary puts triggered ability from [Curse of Echoes] onto the stack (Whenever enchanted player casts an instant or sorcery spell, each other player may copy that spell...).\r\n[01:05:34] silasary puts a copy of [Dread Return] on the stack.\r\n[01:05:34] Dread Return (currently targetting [Flayer of the Hatebound]) has no other legal targets.\r\n[01:05:37] silasary\'s [Dread Return] is countered because it has no legal targets.\r\n[01:05:43] karakusk puts triggered ability from [Flayer of the Hatebound] onto the stack targeting silasary (Whenever Flayer of the Hatebound or another creature enters the battlefield from your graveyard, t...).\r\n[01:05:47] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:05:47] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:05:51] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:05:51] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:05:58] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:05:58] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:06:02] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:06:02] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:06:08] karakusk activates an ability of [Dregscape Zombie] (Unearth for {B}).\r\n[01:06:11] karakusk puts triggered ability from [Flayer of the Hatebound] onto the stack targeting silasary (Whenever Flayer of the Hatebound or another creature enters the battlefield from your graveyard, t...).\r\n[01:06:20] karakusk casts [Dread Return] from the graveyard targeting [Psychatog].\r\n[01:06:20] karakusk puts triggered ability from [Flayer of the Hatebound] onto the stack (Undying (When this creature dies, if it had no +1/+1 counters on it, return it to the battlefiel...).\r\n[01:06:20] silasary puts triggered ability from [Curse of Echoes] onto the stack (Whenever enchanted player casts an instant or sorcery spell, each other player may copy that spell...).\r\n[01:06:26] silasary puts a copy of [Dread Return] on the stack.\r\n[01:06:26] Dread Return (currently targetting [Psychatog]) has no other legal targets.\r\n[01:06:29] silasary\'s [Dread Return] is countered because it has no legal targets.\r\n[01:06:34] karakusk puts triggered ability from [Flayer of the Hatebound] onto the stack targeting silasary (Whenever Flayer of the Hatebound or another creature enters the battlefield from your graveyard, t...).\r\n[01:06:42] karakusk puts triggered ability from [Flayer of the Hatebound] onto the stack targeting silasary (Whenever Flayer of the Hatebound or another creature enters the battlefield from your graveyard, t...).\r\n[01:06:49] karakusk exiles [Cephalid Illusionist] and [Shuko] with with [Psychatog]\'s ability.\r\n[01:06:49] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:06:53] karakusk discards [Dread Return].\r\n[01:06:53] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:06:59] karakusk exiles [Forbid] and [Dread Return] with with [Psychatog]\'s ability.\r\n[01:06:59] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:07:03] karakusk exiles [Swamp] and [Island] with with [Psychatog]\'s ability.\r\n[01:07:04] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:07:13] karakusk exiles [Island] and [Swamp] with with [Psychatog]\'s ability.\r\n[01:07:13] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:07:17] karakusk exiles [Swamp] and [Shuko] with with [Psychatog]\'s ability.\r\n[01:07:17] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:07:22] karakusk exiles [Early Frost] and [Anticipate] with with [Psychatog]\'s ability.\r\n[01:07:22] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:07:31] karakusk exiles [Island] and [Island] with with [Psychatog]\'s ability.\r\n[01:07:31] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\nWinner: karakusk\r\nGame 1 Completed.\r\n[01:07:41] silasary has left the game.\r\n== Game 2 (655523610) ==\r\n[Time] 1545314890\r\n[01:08:10] PDBot has started watching.\r\n[01:08:21] silasary chooses to play first.\r\n[01:08:25] silasary keeps this hand.\r\n[01:09:19] karakusk keeps this hand.\r\n[01:09:19] Turn 1: silasary\r\n[01:09:20] silasary skips their draw step.\r\n[01:09:27] silasary plays [Swamp].\r\n[01:09:29] Turn 1: karakusk\r\n[01:09:31] karakusk plays [Choked Estuary].\r\n[01:09:36] karakusk casts [Shuko].\r\n[01:09:40] Turn 2: silasary\r\n[01:09:48] silasary plays [Lake of the Dead].\r\n[01:09:50] silasary sacrifices [Swamp].\r\n[01:09:53] silasary casts [Yixlid Jailer].\r\n[01:09:54] Turn 2: karakusk\r\n[01:09:58] karakusk plays [Island].\r\n[01:10:01] karakusk casts [Narcomoeba].\r\n[01:10:05] karakusk activates an ability of [Shuko] targeting [Narcomoeba] (Equip {0}).\r\n[01:10:07] Turn 3: silasary\r\n[01:10:11] silasary plays [Spawning Pool].\r\n[01:10:18] Turn 3: karakusk\r\n[01:10:20] karakusk plays [Island].\r\n[01:10:26] silasary is being attacked by [Narcomoeba].\r\n[01:10:31] Turn 4: silasary\r\n[01:10:38] silasary casts [Trespasser\'s Curse] targeting karakusk.\r\n[01:10:55] karakusk casts [Anticipate].\r\n[01:11:06] Turn 4: karakusk\r\n[01:11:11] karakusk plays [Swamp].\r\n[01:11:16] karakusk casts [Consign] targeting [Yixlid Jailer].\r\n[01:11:16] karakusk returns [Yixlid Jailer] to its owner\'s hand with [Consign].\r\n[01:11:24] karakusk casts [Cephalid Illusionist].\r\n[01:11:24] silasary puts triggered ability from [Trespasser\'s Curse] onto the stack (Whenever a creature enters the battlefield under enchanted player\'s control, that player loses 1 l...).\r\n[01:11:31] silasary is being attacked by [Narcomoeba].\r\n[01:11:38] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:11:39] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:11:48] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:11:48] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:11:50] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:11:50] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:11:52] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:11:52] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:11:54] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:11:54] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:11:55] karakusk puts triggered ability from [Narcomoeba] onto the stack (When Narcomoeba is put into your graveyard from your library, you may put it onto the battlefield.).\r\n[01:11:59] silasary puts triggered ability from [Trespasser\'s Curse] onto the stack (Whenever a creature enters the battlefield under enchanted player\'s control, that player loses 1 l...).\r\n[01:12:05] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:12:05] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:12:07] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:12:07] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:12:09] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:12:09] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:12:12] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:12:12] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:12:14] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:12:14] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:12:16] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:12:16] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:12:16] karakusk puts triggered ability from [Narcomoeba] onto the stack (When Narcomoeba is put into your graveyard from your library, you may put it onto the battlefield.).\r\n[01:12:21] silasary puts triggered ability from [Trespasser\'s Curse] onto the stack (Whenever a creature enters the battlefield under enchanted player\'s control, that player loses 1 l...).\r\n[01:12:25] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:12:26] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:12:28] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:12:28] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:12:31] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:12:31] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:12:31] karakusk puts triggered ability from [Narcomoeba] onto the stack (When Narcomoeba is put into your graveyard from your library, you may put it onto the battlefield.).\r\n[01:12:35] silasary puts triggered ability from [Trespasser\'s Curse] onto the stack (Whenever a creature enters the battlefield under enchanted player\'s control, that player loses 1 l...).\r\n[01:12:40] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:12:40] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:12:43] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:12:43] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:12:45] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[01:12:45] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[01:12:53] karakusk casts [Dread Return] from the graveyard targeting [Flayer of the Hatebound].\r\n[01:12:57] karakusk puts triggered ability from [Flayer of the Hatebound] onto the stack targeting silasary (Whenever Flayer of the Hatebound or another creature enters the battlefield from your graveyard, t...).\r\n[01:12:57] silasary puts triggered ability from [Trespasser\'s Curse] onto the stack (Whenever a creature enters the battlefield under enchanted player\'s control, that player loses 1 l...).\r\n[01:13:14] karakusk casts [Dread Return] from the graveyard targeting [Psychatog].\r\n[01:13:14] karakusk puts triggered ability from [Flayer of the Hatebound] onto the stack (Undying (When this creature dies, if it had no +1/+1 counters on it, return it to the battlefiel...).\r\n[01:13:20] karakusk puts triggered ability from [Flayer of the Hatebound] onto the stack targeting silasary (Whenever Flayer of the Hatebound or another creature enters the battlefield from your graveyard, t...).\r\n[01:13:20] silasary puts triggered ability from [Trespasser\'s Curse] onto the stack (Whenever a creature enters the battlefield under enchanted player\'s control, that player loses 1 l...).\r\n[01:13:30] karakusk puts triggered ability from [Flayer of the Hatebound] onto the stack targeting silasary (Whenever Flayer of the Hatebound or another creature enters the battlefield from your graveyard, t...).\r\n[01:13:30] silasary puts triggered ability from [Trespasser\'s Curse] onto the stack (Whenever a creature enters the battlefield under enchanted player\'s control, that player loses 1 l...).\r\n[01:13:37] karakusk discards [Shuko].\r\n[01:13:37] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:13:44] karakusk discards [Flayer of the Hatebound].\r\n[01:13:44] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:13:47] karakusk discards [Power Sink].\r\n[01:13:47] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:13:55] karakusk exiles [Swamp] and [Swamp] with with [Psychatog]\'s ability.\r\n[01:13:55] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:14:03] karakusk exiles [Narcomoeba] and [Shuko] with with [Psychatog]\'s ability.\r\n[01:14:03] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:14:12] karakusk exiles [Swamp] and [Island] with with [Psychatog]\'s ability.\r\n[01:14:12] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:14:16] karakusk exiles [Island] and [Shuko] with with [Psychatog]\'s ability.\r\n[01:14:16] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:14:20] karakusk exiles [Island] and [Island] with with [Psychatog]\'s ability.\r\n[01:14:20] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:14:25] karakusk exiles [Island] and [Compulsive Research] with with [Psychatog]\'s ability.\r\n[01:14:25] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:14:25] [CHAT] PDBot: [sU]Compulsive Research[sU] has an advantageous bug.\nDredging rather than drawing can let you avoid discarding\r\nOur data about this bug is out of date. Please let us know if this card is still bugged (or if it\'s been fixed).\r\nYou can do so by PM\'ing this bot, or by typing `!stillbugged Compulsive Research` or `!notbugged Compulsive Research`\r\n[01:14:28] karakusk exiles [Compulsive Research] and [Power Sink] with with [Psychatog]\'s ability.\r\n[01:14:28] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:14:34] karakusk exiles [Early Frost] and [Flayer of the Hatebound] with with [Psychatog]\'s ability.\r\n[01:14:34] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:14:39] karakusk exiles [Cephalid Illusionist] and [Anticipate] with with [Psychatog]\'s ability.\r\n[01:14:39] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:14:42] karakusk exiles [Shuko] and [Treasure Cruise] with with [Psychatog]\'s ability.\r\n[01:14:42] karakusk activates an ability of [Psychatog] ( Psychatog gets +1/+1 until end of turn.).\r\n[01:14:46] silasary has conceded from the game.\r\nWinner: karakusk\r\nGame 2 Completed.\r\nMatch Winner: karakusk: 2–0\r\n[01:14:57] karakusk has left the game.\r\n', 'start_time_utc': '1545314393', 'end_time_utc': '1545315297'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 108.162.229.186
Cf-Ray: 48c2b9123ae1b7e9-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 29081
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213096620' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213096620, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; IntegrityError
500 error at /api/upload
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213197751' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213197751, 1, 'PD League', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213197751', 'lines': "PennyDreadful\r\nPD League\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nPixywing,spe3\r\n\r\n== Game 1 (655938060) ==\r\n[Time] 1545527332\r\n[12:08:53] PDBot has started watching.\r\n[12:08:57] [CHAT] spe3: gl hf!\r\n[League] Mardu Value 1 3 by pixywing (30438) vs 4c Counter Ghazi (16) by spe3 (30133)\r\n[12:08:59] [CHAT] PDBot: [sD] Good luck in your League match!\r\n[12:09:02] [CHAT] Pixywing: gl\r\n[12:09:02] spe3 chooses to play first.\r\n[12:09:06] spe3 keeps this hand.\r\n[12:09:28] Pixywing keeps this hand.\r\n[12:09:28] Turn 1: spe3\r\n[12:09:30] spe3 skips their draw step.\r\n[12:09:32] spe3 plays [Choked Estuary].\r\n[12:09:35] Turn 1: Pixywing\r\n[12:09:37] Pixywing plays [Nomad Outpost].\r\n[12:09:41] Turn 2: spe3\r\n[12:09:43] spe3 plays [Swamp].\r\n[12:09:45] Turn 2: Pixywing\r\n[12:09:48] Pixywing plays [Mountain].\r\n[12:09:54] Turn 3: spe3\r\n[12:09:58] spe3 plays [Island].\r\n[12:10:02] Turn 3: Pixywing\r\n[12:10:06] Pixywing plays [Mountain].\r\n[12:10:08] Pixywing casts [Goblin Assault].\r\n[12:10:14] spe3 casts [Void Shatter] targeting [Goblin Assault].\r\n[12:10:16] Turn 4: spe3\r\n[12:10:18] spe3 plays [Thawing Glaciers].\r\n[12:10:20] Turn 4: Pixywing\r\n[12:10:24] Pixywing casts [Goblin Assault].\r\n[12:10:31] spe3 discards [Bile Blight].\r\n[12:10:31] spe3 discards [Putrefy].\r\n[12:10:31] spe3 casts [Forbid] with buyback targeting [Goblin Assault].\r\n[12:10:34] Turn 5: spe3\r\n[12:10:37] spe3 plays [Encroaching Wastes].\r\n[12:10:39] Turn 5: Pixywing\r\n[12:10:47] Pixywing casts [Read the Bones].\r\n[12:10:57] Pixywing puts 2 cards on top of their library.\r\n[12:10:57] Pixywing draws two cards with [Read the Bones].\r\n[12:10:58] Pixywing plays [Nomad Outpost].\r\n[12:11:02] spe3 activates an ability of [Thawing Glaciers] ( Search your library for a basic land card, put that card onto the battlefield tapped, then shuffl...).\r\n[12:11:07] spe3 puts triggered ability from [Thawing Glaciers] onto the stack (Return Thawing Glaciers to its owner's hand at the beginning of the next cleanup step.).\r\n[12:11:09] Turn 6: spe3\r\n[12:11:12] spe3 plays [Thawing Glaciers].\r\n[12:11:15] Turn 6: Pixywing\r\n[12:11:19] Pixywing casts [Goblin Assault].\r\n[12:11:30] spe3 discards [Thawing Glaciers].\r\n[12:11:30] spe3 discards [Vitu-Ghazi, the City-Tree].\r\n[12:11:30] spe3 casts [Forbid] with buyback targeting [Goblin Assault].\r\n[12:11:36] Turn 7: spe3\r\n[12:11:57] Turn 7: Pixywing\r\n[12:11:59] Pixywing plays [Foreboding Ruins].\r\n[12:12:08] spe3 casts [Jace's Ingenuity].\r\n[12:12:08] spe3 draws three cards with [Jace's Ingenuity].\r\n[12:12:09] Turn 8: spe3\r\n[12:12:19] spe3 plays [Sandsteppe Citadel].\r\n[12:12:22] Turn 8: Pixywing\r\n[12:12:28] Pixywing casts [Goblin Dark-Dwellers].\r\n[12:12:40] spe3 discards [Moment of Craving].\r\n[12:12:40] spe3 discards [Moment of Craving].\r\n[12:12:40] spe3 casts [Forbid] with buyback targeting [Goblin Dark-Dwellers].\r\n[12:12:44] spe3 activates an ability of [Thawing Glaciers] ( Search your library for a basic land card, put that card onto the battlefield tapped, then shuffl...).\r\n[12:12:47] spe3 puts triggered ability from [Thawing Glaciers] onto the stack (Return Thawing Glaciers to its owner's hand at the beginning of the next cleanup step.).\r\n[12:12:49] Turn 9: spe3\r\n[12:12:51] spe3 plays [Thawing Glaciers].\r\n[12:12:53] Turn 9: Pixywing\r\n[12:13:11] Pixywing plays [Vivid Meadow].\r\n[12:13:14] Turn 10: spe3\r\n[12:13:18] spe3 activates an ability of [Thawing Glaciers] ( Search your library for a basic land card, put that card onto the battlefield tapped, then shuffl...).\r\n[12:13:22] spe3 plays [Opulent Palace].\r\n[12:13:23] spe3 puts triggered ability from [Thawing Glaciers] onto the stack (Return Thawing Glaciers to its owner's hand at the beginning of the next cleanup step.).\r\n[12:13:24] Turn 10: Pixywing\r\n[12:13:33] Pixywing casts [Magister of Worth].\r\n[12:13:36] Pixywing puts triggered ability from [Magister of Worth] onto the stack (When Magister of Worth enters the battlefield, starting with you, each player votes for grace or c...).\r\n[12:13:41] Pixywing votes for Grace\r\n[12:13:45] spe3 votes for Condemnation\r\n[12:13:48] Pixywing plays [Foreboding Ruins].\r\n[12:13:52] Turn 11: spe3\r\n[12:13:54] spe3 casts [Wretched Banquet] targeting [Magister of Worth].\r\n[12:13:56] spe3 plays [Thawing Glaciers].\r\n[12:13:58] Turn 11: Pixywing\r\n[12:14:02] Pixywing plays [Swamp].\r\n[12:14:10] Pixywing casts [Magister of Worth].\r\n[12:14:17] spe3 discards [Thawing Glaciers].\r\n[12:14:17] spe3 discards [Vivid Marsh].\r\n[12:14:17] spe3 casts [Forbid] with buyback targeting [Magister of Worth].\r\n[12:14:24] Turn 12: spe3\r\n[12:14:28] spe3 activates an ability of [Thawing Glaciers] ( Search your library for a basic land card, put that card onto the battlefield tapped, then shuffl...).\r\n[12:14:35] spe3 puts triggered ability from [Thawing Glaciers] onto the stack (Return Thawing Glaciers to its owner's hand at the beginning of the next cleanup step.).\r\n[12:14:36] Turn 12: Pixywing\r\n[12:14:45] Pixywing casts [Magister of Worth].\r\n[12:14:55] spe3 discards [Vivid Meadow].\r\n[12:14:55] spe3 discards [Thawing Glaciers].\r\n[12:14:55] spe3 casts [Forbid] with buyback targeting [Magister of Worth].\r\n[12:15:02] Turn 13: spe3\r\n[12:15:12] Turn 13: Pixywing\r\n[12:15:18] Turn 14: spe3\r\n[12:15:23] spe3 casts [Trail of Evidence].\r\n[12:15:26] Turn 14: Pixywing\r\n[12:15:28] Pixywing plays [Vivid Meadow].\r\n[12:15:37] spe3 casts [Sultai Charm] (Draw two cards, then discard a card.).\r\n[12:15:37] spe3 puts triggered ability from [Trail of Evidence] onto the stack (Whenever you cast an instant or sorcery spell, investigate.).\r\n[12:15:38] spe3's [Trail of Evidence] creates a Clue token.\r\n[12:15:39] spe3 draws two cards with [Sultai Charm].\r\n[12:15:41] spe3 discards [Choked Estuary].\r\n[12:15:44] spe3 activates an ability of [Clue] token ( Draw a card.).\r\n[12:15:44] spe3 draws a card with [Clue] token's ability.\r\n[12:15:46] Turn 15: spe3\r\n[12:15:56] spe3 casts [Oona, Queen of the Fae].\r\n[12:16:16] Pixywing casts [Bile Blight] targeting [Oona, Queen of the Fae].\r\n[12:16:20] Pixywing casts [Electrostatic Bolt] targeting [Oona, Queen of the Fae].\r\n[12:16:26] Turn 15: Pixywing\r\n[12:16:29] Pixywing plays [Nomad Outpost].\r\n[12:16:32] Turn 16: spe3\r\n[12:16:35] Turn 16: Pixywing\r\n[12:16:40] Turn 17: spe3\r\n[12:16:43] Turn 17: Pixywing\r\n[12:16:48] Pixywing plays [Vivid Meadow].\r\n[12:16:51] Turn 18: spe3\r\n[12:16:55] Turn 18: Pixywing\r\n[12:17:01] Turn 19: spe3\r\n[12:17:04] spe3 plays [Opulent Palace].\r\n[12:17:07] Turn 19: Pixywing\r\n[12:17:12] Turn 20: spe3\r\n[12:17:16] spe3 plays [Sandsteppe Citadel].\r\n[12:17:19] Turn 20: Pixywing\r\n[12:17:23] Pixywing discards [Smother].\r\n[12:17:23] Turn 21: spe3\r\n[12:17:28] spe3 casts [Trail of Evidence].\r\n[12:17:31] Turn 21: Pixywing\r\n[12:17:34] Pixywing casts [Read the Bones].\r\n[12:17:40] Pixywing puts 1 card on the bottom of their library and 1 card on top of their library.\r\n[12:17:41] Pixywing draws two cards with [Read the Bones].\r\n[12:17:44] Pixywing casts [Read the Bones].\r\n[12:17:49] Pixywing puts 2 cards on top of their library.\r\n[12:17:49] Pixywing draws two cards with [Read the Bones].\r\n[12:17:53] Pixywing casts [Distress] targeting spe3.\r\n[12:18:02] spe3 casts [Power Sink] targeting [Distress]. (X is 4).\r\n[12:18:02] spe3 puts triggered ability from [Trail of Evidence] onto the stack (Whenever you cast an instant or sorcery spell, investigate.).\r\n[12:18:02] spe3 puts triggered ability from [Trail of Evidence] onto the stack (Whenever you cast an instant or sorcery spell, investigate.).\r\n[12:18:05] spe3's [Trail of Evidence] creates a Clue token.\r\n[12:18:07] spe3's [Trail of Evidence] creates a Clue token.\r\n[12:18:20] Pixywing plays [Foreboding Ruins].\r\n[12:18:26] spe3 activates an ability of [Clue] token ( Draw a card.).\r\n[12:18:27] spe3 draws a card with [Clue] token's ability.\r\n[12:18:33] Pixywing discards [Smother].\r\n[12:18:33] Turn 22: spe3\r\n[12:18:37] spe3 discards [Consume the Meek].\r\n[12:18:37] Turn 22: Pixywing\r\n[12:18:46] Pixywing casts [Read the Bones].\r\n[12:18:51] Pixywing puts 2 cards on the bottom of their library.\r\n[12:18:51] Pixywing draws two cards with [Read the Bones].\r\n[12:18:54] Pixywing plays [Swamp].\r\n[12:18:59] Pixywing discards [Mountain].\r\n[12:18:59] Turn 23: spe3\r\n[12:19:02] spe3 plays [Opulent Palace].\r\n[12:19:07] Turn 23: Pixywing\r\n[12:19:09] Pixywing casts [Distress] targeting spe3.\r\n[12:19:16] spe3 discards [Consume the Meek].\r\n[12:19:16] spe3 discards [Bile Blight].\r\n[12:19:16] spe3 casts [Forbid] with buyback targeting [Distress].\r\n[12:19:16] spe3 puts triggered ability from [Trail of Evidence] onto the stack (Whenever you cast an instant or sorcery spell, investigate.).\r\n[12:19:16] spe3 puts triggered ability from [Trail of Evidence] onto the stack (Whenever you cast an instant or sorcery spell, investigate.).\r\n[12:19:20] spe3's [Trail of Evidence] creates a Clue token.\r\n[12:19:21] spe3's [Trail of Evidence] creates a Clue token.\r\n[12:19:25] spe3 activates an ability of [Clue] token ( Draw a card.).\r\n[12:19:26] spe3 draws a card with [Clue] token's ability.\r\n[12:19:28] spe3 activates an ability of [Clue] token ( Draw a card.).\r\n[12:19:28] spe3 draws a card with [Clue] token's ability.\r\n[12:19:31] spe3 activates an ability of [Clue] token ( Draw a card.).\r\n[12:19:31] spe3 draws a card with [Clue] token's ability.\r\n[12:19:32] Turn 24: spe3\r\n[12:19:35] spe3 plays [Opulent Palace].\r\n[12:19:40] spe3 discards [Choked Estuary].\r\n[12:19:40] Turn 24: Pixywing\r\n[12:19:43] Pixywing plays [Swamp].\r\n[12:19:46] Turn 25: spe3\r\n[12:19:49] spe3 plays [Plains].\r\n[12:19:52] Turn 25: Pixywing\r\n[12:19:59] Pixywing discards [Fiery Impulse].\r\n[12:19:59] Turn 26: spe3\r\n[12:20:03] spe3 plays [Encroaching Wastes].\r\n[12:20:06] Turn 26: Pixywing\r\n[12:20:13] Pixywing discards [Fiery Impulse].\r\n[12:20:13] Turn 27: spe3\r\n[12:20:14] spe3 plays [Choked Estuary].\r\n[12:20:18] Turn 27: Pixywing\r\n[12:20:25] Pixywing discards [Fiery Impulse].\r\n[12:20:25] Turn 28: spe3\r\n[12:20:27] spe3 plays [Urza's Factory].\r\n[12:20:32] Turn 28: Pixywing\r\n[12:20:35] Pixywing plays [Mountain].\r\n[12:20:41] spe3 activates an ability of [Urza's Factory] ( Create a 2/2 colorless Assembly-Worker artifact creature token.).\r\n[12:20:44] spe3's [Urza's Factory] creates an Assembly-Worker token.\r\n[12:20:45] Turn 29: spe3\r\n[12:20:54] Pixywing casts [Fiery Impulse] targeting [Assembly-Worker] token.\r\n[12:21:00] spe3 plays [Vivid Grove].\r\n[12:21:02] Turn 29: Pixywing\r\n[12:21:06] Pixywing casts [Goblin Dark-Dwellers].\r\n[12:21:14] spe3 discards [Wretched Banquet].\r\n[12:21:14] spe3 discards [Tribute to Hunger].\r\n[12:21:14] spe3 casts [Forbid] with buyback targeting [Goblin Dark-Dwellers].\r\n[12:21:14] spe3 puts triggered ability from [Trail of Evidence] onto the stack (Whenever you cast an instant or sorcery spell, investigate.).\r\n[12:21:14] spe3 puts triggered ability from [Trail of Evidence] onto the stack (Whenever you cast an instant or sorcery spell, investigate.).\r\n[12:21:17] spe3's [Trail of Evidence] creates a Clue token.\r\n[12:21:19] spe3's [Trail of Evidence] creates a Clue token.\r\n[12:21:26] spe3 activates an ability of [Urza's Factory] ( Create a 2/2 colorless Assembly-Worker artifact creature token.).\r\n[12:21:28] spe3's [Urza's Factory] creates an Assembly-Worker token.\r\n[12:21:31] spe3 activates an ability of [Clue] token ( Draw a card.).\r\n[12:21:32] spe3 draws a card with [Clue] token's ability.\r\n[12:21:36] spe3 activates an ability of [Clue] token ( Draw a card.).\r\n[12:21:37] spe3 draws a card with [Clue] token's ability.\r\n[12:21:38] Turn 30: spe3\r\n[12:21:42] Pixywing is being attacked by [Assembly-Worker] token.\r\n[12:21:48] spe3 discards [Moment of Craving].\r\n[12:21:48] Turn 30: Pixywing\r\n[12:21:51] Pixywing plays [Vivid Meadow].\r\n[12:21:56] Pixywing casts [Flaying Tendrils].\r\n[12:22:05] spe3 activates an ability of [Urza's Factory] ( Create a 2/2 colorless Assembly-Worker artifact creature token.).\r\n[12:22:06] spe3's [Urza's Factory] creates an Assembly-Worker token.\r\n[12:22:10] Turn 31: spe3\r\n[12:22:13] Pixywing casts [Bile Blight] targeting [Assembly-Worker] token.\r\n[12:22:20] spe3 discards [Bile Blight].\r\n[12:22:20] Turn 31: Pixywing\r\n[12:22:26] Pixywing casts [Magister of Worth].\r\n[12:22:34] spe3 discards [Power Sink].\r\n[12:22:34] spe3 discards [Putrefy].\r\n[12:22:34] spe3 casts [Forbid] with buyback targeting [Magister of Worth].\r\n[12:22:34] spe3 puts triggered ability from [Trail of Evidence] onto the stack (Whenever you cast an instant or sorcery spell, investigate.).\r\n[12:22:34] spe3 puts triggered ability from [Trail of Evidence] onto the stack (Whenever you cast an instant or sorcery spell, investigate.).\r\n[12:22:37] spe3's [Trail of Evidence] creates a Clue token.\r\n[12:22:38] spe3's [Trail of Evidence] creates a Clue token.\r\n[12:22:46] spe3 activates an ability of [Urza's Factory] ( Create a 2/2 colorless Assembly-Worker artifact creature token.).\r\n[12:22:46] spe3's [Urza's Factory] creates an Assembly-Worker token.\r\n[12:22:48] spe3 activates an ability of [Clue] token ( Draw a card.).\r\n[12:22:49] spe3 draws a card with [Clue] token's ability.\r\n[12:22:51] spe3 activates an ability of [Clue] token ( Draw a card.).\r\n[12:22:58] Pixywing casts [Utter End] targeting [Assembly-Worker] token.\r\n[12:23:02] spe3 draws a card with [Clue] token's ability.\r\n[12:23:04] Turn 32: spe3\r\n[12:23:07] spe3 plays [Vitu-Ghazi, the City-Tree].\r\n[12:23:12] Turn 32: Pixywing\r\n[12:23:16] Pixywing casts [Goblin Dark-Dwellers].\r\n[12:23:23] spe3 discards [Power Sink].\r\n[12:23:23] spe3 discards [Wretched Banquet].\r\n[12:23:23] spe3 casts [Forbid] with buyback targeting [Goblin Dark-Dwellers].\r\n[12:23:23] spe3 puts triggered ability from [Trail of Evidence] onto the stack (Whenever you cast an instant or sorcery spell, investigate.).\r\n[12:23:24] spe3 puts triggered ability from [Trail of Evidence] onto the stack (Whenever you cast an instant or sorcery spell, investigate.).\r\n[12:23:25] spe3's [Trail of Evidence] creates a Clue token.\r\n[12:23:27] spe3's [Trail of Evidence] creates a Clue token.\r\n[12:23:34] spe3 activates an ability of [Vitu-Ghazi, the City-Tree] ( Create a 1/1 green Saproling creature token.).\r\n[12:23:37] spe3's [Vitu-Ghazi, the City-Tree] creates a Saproling token.\r\n[12:23:44] spe3 activates an ability of [Urza's Factory] ( Create a 2/2 colorless Assembly-Worker artifact creature token.).\r\n[12:23:47] spe3's [Urza's Factory] creates an Assembly-Worker token.\r\n[12:23:51] Pixywing casts [Utter End] targeting [Assembly-Worker] token.\r\n[12:23:57] spe3 activates an ability of [Clue] token ( Draw a card.).\r\n[12:23:57] spe3 draws a card with [Clue] token's ability.\r\n[12:24:00] Turn 33: spe3\r\n[12:24:03] Pixywing is being attacked by [Saproling] token.\r\n[12:24:10] spe3 casts [Elixir of Immortality].\r\n[12:24:12] Turn 33: Pixywing\r\n[12:24:18] Pixywing casts [Flaying Tendrils].\r\n[12:24:25] spe3 activates an ability of [Elixir of Immortality] ( You gain 5 life. Shuffle Elixir of Immortality and your graveyard into their owner's library.).\r\n[12:24:33] spe3 activates an ability of [Vitu-Ghazi, the City-Tree] ( Create a 1/1 green Saproling creature token.).\r\n[12:24:33] spe3's [Vitu-Ghazi, the City-Tree] creates a Saproling token.\r\n[12:24:40] spe3 activates an ability of [Urza's Factory] ( Create a 2/2 colorless Assembly-Worker artifact creature token.).\r\n[12:24:40] spe3's [Urza's Factory] creates an Assembly-Worker token.\r\n[12:24:42] Turn 34: spe3\r\n[12:24:46] Pixywing is being attacked by [Assembly-Worker] token and [Saproling] token.\r\n[12:24:50] Turn 34: Pixywing\r\n[12:24:54] Pixywing casts [Distress] targeting spe3.\r\n[12:24:59] spe3 casts [Forbid] targeting [Distress].\r\n[12:24:59] spe3 puts triggered ability from [Trail of Evidence] onto the stack (Whenever you cast an instant or sorcery spell, investigate.).\r\n[12:24:59] spe3 puts triggered ability from [Trail of Evidence] onto the stack (Whenever you cast an instant or sorcery spell, investigate.).\r\n[12:25:01] spe3's [Trail of Evidence] creates a Clue token.\r\n[12:25:03] spe3's [Trail of Evidence] creates a Clue token.\r\n[12:25:08] Pixywing casts [Radiant Flames] (with 3 colors).\r\n[12:25:16] spe3 activates an ability of [Vitu-Ghazi, the City-Tree] ( Create a 1/1 green Saproling creature token.).\r\n[12:25:16] spe3's [Vitu-Ghazi, the City-Tree] creates a Saproling token.\r\n[12:25:22] spe3 activates an ability of [Urza's Factory] ( Create a 2/2 colorless Assembly-Worker artifact creature token.).\r\n[12:25:22] spe3's [Urza's Factory] creates an Assembly-Worker token.\r\n[12:25:23] Turn 35: spe3\r\n[12:25:27] Pixywing is being attacked by [Assembly-Worker] token and [Saproling] token.\r\n[12:25:31] spe3 plays [Thawing Glaciers].\r\n[12:25:32] Turn 35: Pixywing\r\n[12:25:37] Pixywing casts [Goblin Assault].\r\n[12:25:49] spe3 casts [Sultai Charm] targeting [Goblin Assault] (Destroy target artifact or enchantment.).\r\n[12:25:49] spe3 puts triggered ability from [Trail of Evidence] onto the stack (Whenever you cast an instant or sorcery spell, investigate.).\r\n[12:25:49] spe3 puts triggered ability from [Trail of Evidence] onto the stack (Whenever you cast an instant or sorcery spell, investigate.).\r\n[12:25:50] spe3's [Trail of Evidence] creates a Clue token.\r\n[12:25:53] spe3's [Trail of Evidence] creates a Clue token.\r\n[12:25:59] spe3 activates an ability of [Vitu-Ghazi, the City-Tree] ( Create a 1/1 green Saproling creature token.).\r\n[12:25:59] spe3's [Vitu-Ghazi, the City-Tree] creates a Saproling token.\r\n[12:26:01] Turn 36: spe3\r\n[12:26:04] Pixywing is being attacked by [Saproling] token, [Assembly-Worker] token, and [Saproling] token.\r\nWinner: spe3\r\nGame 1 Completed.\r\n== Game 2 (655940846) ==\r\n[Time] 1545528514\r\n[12:28:35] PDBot has started watching.\r\n[12:28:50] Pixywing chooses to play first.\r\n[12:28:52] Pixywing keeps this hand.\r\n[12:28:55] spe3 keeps this hand.\r\n[12:28:55] Turn 1: Pixywing\r\n[12:28:55] Pixywing skips their draw step.\r\n[12:28:58] Pixywing plays [Swamp].\r\n[12:29:00] Turn 1: spe3\r\n[12:29:06] spe3 plays [Sandsteppe Citadel].\r\n[12:29:09] Turn 2: Pixywing\r\n[12:29:12] Pixywing plays [Swamp].\r\n[12:29:14] Pixywing casts [Distress] targeting spe3.\r\n[12:29:20] spe3 discards [Power Sink].\r\n[12:29:20] spe3 reveals their hand to [Distress], containing [Wretched Banquet], [Jace's Ingenuity], [Choked Estuary], [Choked Estuary], [Island], and [Thawing Glaciers].\r\n[12:29:23] Turn 2: spe3\r\n[12:29:26] spe3 plays [Opulent Palace].\r\n[12:29:28] Turn 3: Pixywing\r\n[12:29:31] Pixywing plays [Nomad Outpost].\r\n[12:29:34] Pixywing casts [Distress] targeting spe3.\r\n[12:29:39] spe3 discards [Jace's Ingenuity].\r\n[12:29:39] spe3 reveals their hand to [Distress], containing [Wretched Banquet], [Choked Estuary], [Choked Estuary], [Island], and [Thawing Glaciers].\r\n[12:29:41] Turn 3: spe3\r\n[12:29:44] spe3 plays [Choked Estuary].\r\n[12:29:46] Turn 4: Pixywing\r\n[12:29:51] Pixywing casts [Goblin Assault].\r\n[12:30:00] spe3 discards [Thawing Glaciers].\r\n[12:30:00] spe3 discards [Choked Estuary].\r\n[12:30:00] spe3 casts [Forbid] with buyback targeting [Goblin Assault].\r\n[12:30:01] Pixywing plays [Foreboding Ruins].\r\n[12:30:05] Turn 4: spe3\r\n[12:30:08] spe3 plays [Island].\r\n[12:30:10] Turn 5: Pixywing\r\n[12:30:13] Pixywing plays [Nomad Outpost].\r\n[12:30:16] Pixywing casts [Memoricide] targeting spe3.\r\n[12:30:26] spe3 discards [Island].\r\n[12:30:26] spe3 discards [Wretched Banquet].\r\n[12:30:26] spe3 casts [Forbid] with buyback targeting [Memoricide].\r\n[12:30:28] Turn 5: spe3\r\n[12:30:33] Turn 6: Pixywing\r\n[12:30:38] Pixywing casts [Goblin Dark-Dwellers].\r\n[12:30:44] Pixywing puts triggered ability from [Goblin Dark-Dwellers] onto the stack targeting [Distress] (When Goblin Dark-Dwellers enters the battlefield, you may cast target instant or sorcery card with...).\r\n[12:30:48] spe3 has conceded from the game.\r\nWinner: Pixywing\r\nGame 2 Completed.\r\n== Game 3 (655941182) ==\r\n[Time] 1545528664\r\n[12:31:05] PDBot has started watching.\r\n[12:31:06] spe3 mulligans to 6 cards.\r\n[12:31:07] Pixywing keeps this hand.\r\n[12:31:09] spe3 keeps this hand.\r\n[12:31:11] spe3 puts 1 card on the bottom of their library.\r\n[12:31:11] Turn 1: spe3\r\n[12:31:11] spe3 skips their draw step.\r\n[12:31:12] spe3 plays [Choked Estuary].\r\n[12:31:16] Turn 1: Pixywing\r\n[12:31:18] Pixywing plays [Foreboding Ruins].\r\n[12:31:22] Turn 2: spe3\r\n[12:31:25] spe3 plays [Thawing Glaciers].\r\n[12:31:27] Turn 2: Pixywing\r\n[12:31:29] Pixywing plays [Swamp].\r\n[12:31:31] Turn 3: spe3\r\n[12:31:34] spe3 plays [Island].\r\n[12:31:37] Turn 3: Pixywing\r\n[12:31:40] Pixywing plays [Vivid Meadow].\r\n[12:31:44] spe3 activates an ability of [Thawing Glaciers] ( Search your library for a basic land card, put that card onto the battlefield tapped, then shuffl...).\r\n[12:31:47] spe3 puts triggered ability from [Thawing Glaciers] onto the stack (Return Thawing Glaciers to its owner's hand at the beginning of the next cleanup step.).\r\n", 'start_time_utc': '1545527332', 'end_time_utc': '1545528707'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 172.69.226.115
Cf-Ray: 48d7121eeca7b76b-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 27022
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213197751' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213197751, 1, 'PD League', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; IntegrityError
500 error at /api/upload
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213890563' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213890563, 1, 'Penny Dreadful League', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213890563', 'lines': "PennyDreadful\r\nPenny Dreadful League\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\niiborn,Cluislp\r\n\r\n== Game 1 (658736616) ==\r\n[Time] 1547126160\r\n[00:16:01] PDBot has started watching.\r\n[League] Esper Blink by iiborn (31125) vs White Weenie by cluislp (31132)\r\n[00:16:07] [CHAT] PDBot: [sD] Good luck in your League match!\r\n[00:16:08] [CHAT] Cluislp: gl\r\n[00:16:10] Cluislp chooses to play first.\r\n[00:16:14] Cluislp keeps this hand.\r\n[00:16:16] iiborn keeps this hand.\r\n[00:16:16] Turn 1: Cluislp\r\n[00:16:25] Cluislp skips their draw step.\r\n[00:16:28] Cluislp plays [Plains].\r\n[00:16:45] Turn 1: iiborn\r\n[00:16:48] iiborn plays [Dimir Guildgate].\r\n[00:16:52] Turn 2: Cluislp\r\n[00:16:57] Cluislp plays [Plains].\r\n[00:16:59] Cluislp casts [Consul's Lieutenant].\r\n[00:17:06] Turn 2: iiborn\r\n[00:17:09] iiborn plays [Choked Estuary].\r\n[00:17:14] iiborn exiles [Riftwing Cloudskate] with 3 time counters.\r\n[00:17:24] Turn 3: Cluislp\r\n[00:17:28] Cluislp plays [Ruins of Trokair].\r\n[00:17:31] Cluislp casts [Squadron Hawk].\r\n[00:17:31] Cluislp puts triggered ability from [Squadron Hawk] onto the stack (When Squadron Hawk enters the battlefield, you may search your library for up to three cards named...).\r\n[00:17:44] Cluislp reveals [Squadron Hawk].\r\n[00:17:44] Cluislp reveals [Squadron Hawk].\r\n[00:17:45] Cluislp reveals [Squadron Hawk].\r\n[00:17:49] iiborn is being attacked by [Consul's Lieutenant].\r\n[00:17:54] Cluislp puts triggered ability from [Consul's Lieutenant] onto the stack (Renown 1 (When this creature deals combat damage to a player, if it isn't renowned, put a +1/+1 ...).\r\n[00:17:59] Turn 3: iiborn\r\n[00:17:59] iiborn puts triggered ability from [Riftwing Cloudskate] onto the stack (Suspend (At the beginning of your upkeep, remove a time counter.)).\r\n[00:18:06] iiborn plays [Azorius Guildgate].\r\n[00:18:11] Turn 4: Cluislp\r\n[00:18:28] Cluislp casts [Knight of the White Orchid].\r\n[00:18:28] Cluislp puts triggered ability from [Knight of the White Orchid] onto the stack (When Knight of the White Orchid enters the battlefield, if an opponent controls more lands than yo...).\r\n[00:18:35] Cluislp casts [Spear of Heliod].\r\n[00:18:39] iiborn is being attacked by [Squadron Hawk] and [Consul's Lieutenant].\r\n[00:18:39] Cluislp puts triggered ability from [Consul's Lieutenant] onto the stack (Whenever Consul's Lieutenant attacks, if it's renowned, other attacking creatures you control get ...).\r\n[00:18:48] Turn 4: iiborn\r\n[00:18:48] iiborn puts triggered ability from [Riftwing Cloudskate] onto the stack (Suspend (At the beginning of your upkeep, remove a time counter.)).\r\n[00:18:57] iiborn plays [Island].\r\n[00:19:01] iiborn casts [Whirler Rogue].\r\n[00:19:03] iiborn puts triggered ability from [Whirler Rogue] onto the stack (When Whirler Rogue enters the battlefield, create two 1/1 colorless Thopter artifact creature toke...).\r\n[00:19:07] iiborn's [Whirler Rogue] creates two Thopter tokens.\r\n[00:19:15] Turn 5: Cluislp\r\n[00:19:19] Cluislp plays [Plains].\r\n[00:19:22] Cluislp casts [Bygone Bishop].\r\n[00:19:35] iiborn is being attacked by [Knight of the White Orchid], [Squadron Hawk], and [Consul's Lieutenant].\r\n[00:19:35] Cluislp puts triggered ability from [Consul's Lieutenant] onto the stack (Whenever Consul's Lieutenant attacks, if it's renowned, other attacking creatures you control get ...).\r\n[00:19:45] [Whirler Rogue] blocks [Consul's Lieutenant].\r\n[00:19:47] [Thopter] token blocks [Squadron Hawk].\r\n[00:19:48] [Thopter] token blocks [Knight of the White Orchid].\r\n[00:20:00] Turn 5: iiborn\r\n[00:20:00] iiborn puts triggered ability from [Riftwing Cloudskate] onto the stack (Suspend (At the beginning of your upkeep, remove a time counter.)).\r\n[00:20:03] iiborn puts triggered ability from [Riftwing Cloudskate] onto the stack (Suspend (When the last time counter is removed from the suspended card, cast it without paying i...).\r\n[00:20:09] iiborn casts [Riftwing Cloudskate].\r\n[00:20:18] iiborn puts triggered ability from [Riftwing Cloudskate] onto the stack targeting [Spear of Heliod] (When Riftwing Cloudskate enters the battlefield, return target permanent to its owner's hand.).\r\n[00:20:21] iiborn returns [Spear of Heliod] to its owner's hand with [Riftwing Cloudskate]'s ability.\r\n[00:20:28] iiborn plays [Island].\r\n[00:20:34] iiborn casts [Stormfront Riders].\r\n[00:20:36] iiborn puts triggered ability from [Stormfront Riders] onto the stack (When Stormfront Riders enters the battlefield, return two creatures you control to their owner's h...).\r\n[00:20:42] iiborn returns [Stormfront Riders] and [Riftwing Cloudskate] to their owner's hand with [Stormfront Riders]'s ability.\r\n[00:20:42] iiborn puts triggered ability from [Stormfront Riders] onto the stack (Whenever Stormfront Riders or another creature is returned to your hand from the battlefield, crea...).\r\n[00:20:42] iiborn puts triggered ability from [Stormfront Riders] onto the stack (Whenever Stormfront Riders or another creature is returned to your hand from the battlefield, crea...).\r\n[00:20:45] iiborn's [Stormfront Riders] creates a Soldier token.\r\n[00:20:48] iiborn's [Stormfront Riders] creates a Soldier token.\r\n[00:20:51] Turn 6: Cluislp\r\n[00:20:55] Cluislp plays [Plains].\r\n[00:20:58] Cluislp casts [Spear of Heliod].\r\n[00:21:01] Cluislp casts [Squadron Hawk].\r\n[00:21:01] Cluislp puts triggered ability from [Bygone Bishop] onto the stack (Whenever you cast a creature spell with converted mana cost 3 or less, investigate.).\r\n[00:21:03] Cluislp's [Bygone Bishop] creates a Clue token.\r\n[00:21:05] Cluislp puts triggered ability from [Squadron Hawk] onto the stack (When Squadron Hawk enters the battlefield, you may search your library for up to three cards named...).\r\n[00:21:07] Cluislp chooses not to use [Squadron Hawk]'s ability.\r\n[00:21:11] iiborn is being attacked by [Bygone Bishop], [Knight of the White Orchid], [Squadron Hawk], and [Consul's Lieutenant].\r\n[00:21:11] Cluislp puts triggered ability from [Consul's Lieutenant] onto the stack (Whenever Consul's Lieutenant attacks, if it's renowned, other attacking creatures you control get ...).\r\n[00:21:16] [Soldier] token blocks [Knight of the White Orchid].\r\n[00:21:18] [Soldier] token blocks [Consul's Lieutenant].\r\n[00:21:25] Turn 6: iiborn\r\n[00:21:28] iiborn plays [Plains].\r\n[00:21:34] iiborn casts [Magister of Worth].\r\n[00:21:38] iiborn puts triggered ability from [Magister of Worth] onto the stack (When Magister of Worth enters the battlefield, starting with you, each player votes for grace or c...).\r\n[00:21:44] iiborn votes for Condemnation\r\n[00:21:47] Cluislp votes for Condemnation\r\n[00:21:56] Turn 7: Cluislp\r\n[00:22:08] Cluislp casts [Immortal Servitude]. (X is 2).\r\n[00:22:25] Cluislp puts triggered ability from [Squadron Hawk] onto the stack (When Squadron Hawk enters the battlefield, you may search your library for up to three cards named...).\r\n[00:22:25] Cluislp puts triggered ability from [Squadron Hawk] onto the stack (When Squadron Hawk enters the battlefield, you may search your library for up to three cards named...).\r\n[00:22:25] Cluislp puts triggered ability from [Knight of the White Orchid] onto the stack (When Knight of the White Orchid enters the battlefield, if an opponent controls more lands than yo...).\r\n[00:22:25] Cluislp fails to find a Cards named Squadron Hawk.\r\n[00:22:25] Cluislp chooses not to use [Squadron Hawk]'s ability.\r\n[00:22:27] Cluislp casts [Savannah Lions].\r\n[00:22:30] Turn 7: iiborn\r\n[00:22:45] iiborn plays [Swamp].\r\n[00:23:29] iiborn exiles [Riftwing Cloudskate] with 3 time counters.\r\n[00:23:37] Turn 8: Cluislp\r\n[00:23:44] Cluislp activates an ability of [Clue] token ( Draw a card.).\r\n[00:23:46] Cluislp draws a card with [Clue] token's ability.\r\n[00:23:49] Cluislp casts [Always Watching].\r\n[00:24:05] iiborn is being attacked by [Savannah Lions], [Squadron Hawk], [Knight of the White Orchid], [Squadron Hawk], and [Consul's Lieutenant].\r\n[00:24:24] iiborn casts [Makeshift Mannequin] targeting [Whirler Rogue].\r\n[00:24:27] iiborn returns [Whirler Rogue] to the battlefield with [Makeshift Mannequin]'s ability\r\n[00:24:28] iiborn puts triggered ability from [Whirler Rogue] onto the stack (When Whirler Rogue enters the battlefield, create two 1/1 colorless Thopter artifact creature toke...).\r\n[00:24:31] iiborn's [Whirler Rogue] creates two Thopter tokens.\r\n[00:24:46] [Whirler Rogue] blocks [Savannah Lions].\r\n[00:24:48] [Whirler Rogue] stops blocking.\r\n[00:24:50] [Magister of Worth] blocks [Savannah Lions].\r\n[00:24:51] [Thopter] token blocks [Consul's Lieutenant].\r\n[00:24:56] [Whirler Rogue] blocks [Knight of the White Orchid].\r\n[00:24:57] [Thopter] token blocks [Squadron Hawk].\r\n[00:25:12] Turn 8: iiborn\r\n[00:25:12] iiborn puts triggered ability from [Riftwing Cloudskate] onto the stack (Suspend (At the beginning of your upkeep, remove a time counter.)).\r\n[00:25:23] iiborn casts [Magister of Worth].\r\n[00:25:26] iiborn puts triggered ability from [Magister of Worth] onto the stack (When Magister of Worth enters the battlefield, starting with you, each player votes for grace or c...).\r\n[00:25:31] iiborn votes for Condemnation\r\n[00:25:33] Cluislp votes for Grace\r\n[00:25:39] Turn 9: Cluislp\r\n[00:25:52] Cluislp casts [Immortal Servitude]. (X is 2).\r\n[00:25:55] Cluislp puts triggered ability from [Squadron Hawk] onto the stack (When Squadron Hawk enters the battlefield, you may search your library for up to three cards named...).\r\n[00:25:57] Cluislp puts triggered ability from [Squadron Hawk] onto the stack (When Squadron Hawk enters the battlefield, you may search your library for up to three cards named...).\r\n[00:25:57] Cluislp puts triggered ability from [Knight of the White Orchid] onto the stack (When Knight of the White Orchid enters the battlefield, if an opponent controls more lands than yo...).\r\n[00:26:02] Cluislp chooses not to use [Squadron Hawk]'s ability.\r\n[00:26:03] Cluislp chooses not to use [Squadron Hawk]'s ability.\r\n[00:26:05] Cluislp casts [Squadron Hawk].\r\n[00:26:05] Cluislp puts triggered ability from [Squadron Hawk] onto the stack (When Squadron Hawk enters the battlefield, you may search your library for up to three cards named...).\r\n[00:26:07] Cluislp chooses not to use [Squadron Hawk]'s ability.\r\n[00:26:11] Turn 9: iiborn\r\n[00:26:11] iiborn puts triggered ability from [Riftwing Cloudskate] onto the stack (Suspend (At the beginning of your upkeep, remove a time counter.)).\r\n[00:26:31] iiborn has conceded from the game.\r\nWinner: Cluislp\r\nGame 1 Completed.\r\n== Game 2 (658737378) ==\r\n[Time] 1547126846\r\n[00:27:27] PDBot has started watching.\r\n[00:27:30] iiborn chooses to play first.\r\n[00:27:33] iiborn keeps this hand.\r\n[00:27:35] Cluislp keeps this hand.\r\n[00:27:35] Turn 1: iiborn\r\n[00:27:35] iiborn skips their draw step.\r\n[00:27:37] iiborn plays [Dimir Guildgate].\r\n[00:27:41] Turn 1: Cluislp\r\n[00:27:45] Cluislp plays [Ruins of Trokair].\r\n[00:27:53] Turn 2: iiborn\r\n[00:27:55] iiborn plays [Evolving Wilds].\r\n[00:28:00] Turn 2: Cluislp\r\n[00:28:07] Cluislp casts [Knight of the White Orchid].\r\n[00:28:09] Cluislp puts triggered ability from [Knight of the White Orchid] onto the stack (When Knight of the White Orchid enters the battlefield, if an opponent controls more lands than yo...).\r\n[00:28:16] Cluislp plays [Plains].\r\n[00:28:18] Cluislp casts [Savannah Lions].\r\n[00:28:21] Cluislp casts [Benevolent Bodyguard].\r\n[00:28:32] iiborn activates an ability of [Evolving Wilds] ( Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your ...).\r\n[00:28:53] Turn 3: iiborn\r\n[00:28:55] iiborn plays [Island].\r\n[00:29:01] Turn 3: Cluislp\r\n[00:29:08] iiborn is being attacked by [Benevolent Bodyguard], [Savannah Lions], and [Knight of the White Orchid].\r\n[00:29:13] Cluislp casts [Savannah Lions].\r\n[00:29:14] Cluislp casts [Expedition Envoy].\r\n[00:29:16] Turn 4: iiborn\r\n[00:29:18] iiborn plays [Island].\r\n[00:29:22] iiborn casts [Mournwhelk] for its evoke cost.\r\n[00:29:30] iiborn puts triggered ability from [Mournwhelk] onto the stack targeting Cluislp (When Mournwhelk enters the battlefield, target player discards two cards.).\r\n[00:29:30] iiborn puts triggered ability from [Mournwhelk] onto the stack (Evoke (When this creature enters the battlefield, sacrifice it if it was cast for its evoke cost...).\r\n[00:29:40] Cluislp discards [Bygone Bishop].\r\n[00:29:40] Cluislp discards [Consul's Lieutenant].\r\n[00:29:43] Turn 4: Cluislp\r\n[00:29:45] Cluislp plays [Plains].\r\n[00:29:48] Cluislp casts [Always Watching].\r\n[00:29:51] iiborn is being attacked by [Expedition Envoy], [Savannah Lions], [Benevolent Bodyguard], [Savannah Lions], and [Knight of the White Orchid].\r\n[00:29:57] Turn 5: iiborn\r\n[00:30:00] iiborn has conceded from the game.\r\nWinner: Cluislp\r\nGame 2 Completed.\r\nMatch Winner: Cluislp: 2–0\r\n", 'start_time_utc': '1547126160', 'end_time_utc': '1547127000'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.69.107
Cf-Ray: 496f8063c8afa87b-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
Cdn-Loop: cloudflare
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 16028
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213890563' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213890563, 1, 'Penny Dreadful League', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; IntegrityError
500 error at /api/upload
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213890702' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213890702, 4, '', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213890702', 'lines': "Legacy\r\n\r\nBuggedCardObserver\r\nEndmae,Nikodemos\r\n\r\n== Game 1 (658736846) ==\r\n[Time] 1547126381\r\n[00:19:41] PDBot has started watching.\r\n[00:19:43] [CHAT] Nikodemos: glhf\r\n[00:19:46] Nikodemos chooses to play first.\r\n[00:20:04] Nikodemos mulligans to 6 cards.\r\n[00:20:07] Endmae keeps this hand.\r\n[00:20:13] Nikodemos keeps this hand.\r\n[00:20:15] Nikodemos puts 1 card on top of their library.\r\n[00:20:15] Turn 1: Nikodemos\r\n[00:20:19] Nikodemos skips their draw step.\r\n[00:20:21] Nikodemos plays [Bloodstained Mire].\r\n[00:20:24] Nikodemos activates an ability of [Bloodstained Mire] ( Search your library for a Swamp or Mountain card, put it onto the battlefield, then shuffle your ...).\r\n[00:20:32] Nikodemos casts [Thoughtseize] targeting Endmae.\r\n[00:21:14] [CHAT] Endmae: thanks\r\n[00:21:21] Endmae discards [Terminus].\r\n[00:21:21] Endmae reveals their hand to [Thoughtseize], containing [Tundra], [Brainstorm], [Brainstorm], [Predict], [Force of Will], and [Island].\r\n[00:21:21] [CHAT] PDBot: [sU]Terminus[sU] has an unclassified bug.\nCards with the miracle mechanic such as Terminus incorrectly retain their miracle blue text reminder when they are not cast.\r\n[00:21:32] Turn 1: Endmae\r\n[00:21:38] Endmae plays [Island].\r\n[00:21:46] Turn 2: Nikodemos\r\n[00:21:54] Nikodemos plays [Wasteland].\r\n[00:22:06] Nikodemos discards [Toxic Deluge].\r\n[00:22:06] Nikodemos casts [Collective Brutality] targeting Endmae, and Endmae (Target opponent reveals their hand. You choose an instant or sorcery card from it. That player dis...).\r\n[00:22:25] Endmae casts [Brainstorm].\r\n[00:22:25] Endmae draws three cards with [Brainstorm].\r\n[00:22:55] Endmae discards [Predict].\r\n[00:22:55] Endmae reveals their hand to [Collective Brutality], containing [Brainstorm], [Swords to Plowshares], [Tundra], [Brainstorm], and [Force of Will].\r\n[00:23:01] Turn 2: Endmae\r\n[00:23:13] Endmae plays [Tundra].\r\n[00:23:20] Turn 3: Nikodemos\r\n[00:23:26] Nikodemos plays [Plains].\r\n[00:23:38] Endmae casts [Brainstorm].\r\n[00:23:43] Endmae draws three cards with [Brainstorm].\r\n[00:23:51] Turn 3: Endmae\r\n[00:23:55] Nikodemos activates an ability of [Wasteland] targeting [Tundra] ( Destroy target nonbasic land.).\r\n[00:24:11] Endmae casts [Ponder].\r\n[00:24:24] Endmae chooses to not shuffle his or her library.\r\n[00:24:24] Endmae draws a card with [Ponder].\r\n[00:24:26] Endmae plays [Tundra].\r\n[00:24:30] Turn 4: Nikodemos\r\n[00:24:37] Nikodemos plays [Karakas].\r\n[00:24:42] Turn 4: Endmae\r\n[00:24:47] Endmae casts [Brainstorm].\r\n[00:24:48] Endmae draws three cards with [Brainstorm].\r\n[00:25:06] Endmae casts [Portent] targeting Endmae.\r\n[00:25:12] Endmae put a card on top of Endmae's library.\r\n[00:25:13] Endmae put a card on top of Endmae's library.\r\n[00:25:16] Endmae put a card on top of Endmae's library.\r\n[00:25:23] Turn 5: Nikodemos\r\n[00:25:23] Endmae puts triggered ability from [Portent] onto the stack (Draw a card at the beginning of the next turn's upkeep.).\r\n[00:25:25] Endmae draws a card with [Portent]'s ability.\r\n[00:25:34] Turn 5: Endmae\r\n[00:25:38] Endmae plays [Island].\r\n[00:25:42] Turn 6: Nikodemos\r\n[00:25:47] Nikodemos casts [Stoneforge Mystic].\r\n[00:25:52] Nikodemos puts triggered ability from [Stoneforge Mystic] onto the stack (When Stoneforge Mystic enters the battlefield, you may search your library for an Equipment card, ...).\r\n[00:25:59] Nikodemos reveals [Sword of Fire and Ice].\r\n[00:26:07] Endmae casts [Swords to Plowshares] targeting [Stoneforge Mystic].\r\n[00:26:11] Turn 6: Endmae\r\n[00:26:16] Endmae casts [Snapcaster Mage].\r\n[00:26:22] Endmae puts triggered ability from [Snapcaster Mage] onto the stack targeting [Ponder] (When Snapcaster Mage enters the battlefield, target instant or sorcery card in your graveyard gain...).\r\n[00:26:29] Endmae casts [Ponder] from the graveyard.\r\n[00:26:39] Endmae chooses to not shuffle his or her library.\r\n[00:26:39] Endmae draws a card with [Ponder].\r\n[00:26:41] Endmae plays [Scalding Tarn].\r\n[00:26:49] Nikodemos casts [Swords to Plowshares] targeting [Snapcaster Mage].\r\n[00:26:55] Turn 7: Nikodemos\r\n[00:27:00] Nikodemos plays [Swamp].\r\n[00:27:02] Nikodemos casts [Hymn to Tourach] targeting Endmae.\r\n[00:27:05] Endmae activates an ability of [Scalding Tarn] ( Search your library for an Island or Mountain card, put it onto the battlefield, then shuffle you...).\r\n[00:27:21] Endmae exiles [Force of Will] with with [Force of Will]'s ability.\r\n[00:27:21] Endmae casts [Force of Will] using an alternate cost targeting [Hymn to Tourach].\r\n[00:27:29] Turn 7: Endmae\r\n[00:27:40] Endmae casts [Jace, the Mind Sculptor].\r\n[00:27:44] Endmae activates an ability of [Jace, the Mind Sculptor] ( Draw three cards, then put two cards from your hand on top of your library in any order.).\r\n[00:27:46] Endmae draws three cards with [Jace, the Mind Sculptor]'s ability.\r\n[00:28:00] Endmae plays [Volcanic Island].\r\n[00:28:07] Turn 8: Nikodemos\r\n[00:28:13] Nikodemos casts [Dark Confidant].\r\n[00:28:20] Turn 8: Endmae\r\n[00:28:28] Endmae activates an ability of [Jace, the Mind Sculptor] ( Draw three cards, then put two cards from your hand on top of your library in any order.).\r\n[00:28:29] Endmae draws three cards with [Jace, the Mind Sculptor]'s ability.\r\n[00:28:41] Endmae casts [Swords to Plowshares] targeting [Dark Confidant].\r\n[00:28:48] Endmae casts [Counterbalance].\r\n[00:28:56] Nikodemos has conceded from the game.\r\nWinner: Endmae\r\nGame 1 Completed.\r\n[00:29:01] Nikodemos has left the game.\r\n", 'start_time_utc': '1547126381', 'end_time_utc': '1547126941'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 108.162.229.222
Cf-Ray: 496f7ed18c7fa893-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
Cdn-Loop: cloudflare
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 7085
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213890702' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213890702, 4, '', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; IntegrityError
500 error at /api/upload
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213957206' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213957206, 1, 'PD League', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213957206', 'lines': "PennyDreadful\r\nPD League\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nNASCA,Cluislp\r\n\r\n== Game 1 (659000580) ==\r\n[Time] 1547300185\r\n[00:36:25] PDBot has started watching.\r\n[League] Tempered Steel by nasca (31161) vs White Weenie by cluislp (31132)\r\n[00:36:29] [CHAT] PDBot: [sD] Good luck in your League match!\r\n[00:36:33] Cluislp chooses to play first.\r\n[00:36:36] Cluislp keeps this hand.\r\n[00:36:38] NASCA keeps this hand.\r\n[00:36:38] Turn 1: Cluislp\r\n[00:36:38] Cluislp skips their draw step.\r\n[00:36:40] Cluislp plays [Plains].\r\n[00:36:42] Cluislp casts [Savannah Lions].\r\n[00:36:58] Turn 1: NASCA\r\n[00:37:00] NASCA plays [Plains].\r\n[00:37:02] [CHAT] Cluislp: gl hf\r\n[00:37:07] Turn 2: Cluislp\r\n[00:37:08] Cluislp plays [Ruins of Trokair].\r\n[00:37:10] Cluislp casts [Dragon Hunter].\r\n[00:37:42] NASCA is being attacked by [Savannah Lions].\r\n[00:37:53] Turn 2: NASCA\r\n[00:37:56] NASCA plays [Plains].\r\n[00:38:00] NASCA casts [Servo Exhibition].\r\n[00:38:02] NASCA's [Servo Exhibition] creates two Servo tokens.\r\n[00:38:11] Turn 3: Cluislp\r\n[00:38:12] Cluislp plays [Plains].\r\n[00:38:17] Cluislp casts [Spear of Heliod].\r\n[00:38:26] Cluislp casts [Elite Vanguard].\r\n[00:38:43] NASCA is being attacked by [Dragon Hunter] and [Savannah Lions].\r\n[00:38:59] Turn 3: NASCA\r\n[00:39:03] NASCA plays [Plains].\r\n[00:39:06] NASCA casts [Tempered Steel].\r\n[00:39:06] [CHAT] PDBot: [sU]Tempered Steel[sU] has a graphical bug.\nFleetwheel Cruiser does not correctly display changes in power and toughness with Tempered Steel.\r\n[00:39:19] Turn 4: Cluislp\r\n[00:39:20] Cluislp plays [Plains].\r\n[00:39:29] NASCA is being attacked by [Elite Vanguard], [Dragon Hunter], and [Savannah Lions].\r\n[00:39:38] [Servo] token blocks [Dragon Hunter].\r\n[00:39:46] [Servo] token blocks [Savannah Lions].\r\n[00:39:58] Cluislp casts [Expedition Envoy].\r\n[00:40:04] Turn 4: NASCA\r\n[00:40:07] NASCA plays [Plains].\r\n[00:40:23] NASCA casts [Servo Exhibition].\r\n[00:40:26] NASCA's [Servo Exhibition] creates two Servo tokens.\r\n[00:40:31] NASCA casts [Glint Hawk Idol].\r\n[00:40:44] Turn 5: Cluislp\r\n[00:40:46] Cluislp plays [Plains].\r\n[00:41:00] NASCA is being attacked by [Expedition Envoy] and [Elite Vanguard].\r\n[00:41:18] [Servo] token blocks [Expedition Envoy].\r\n[00:41:21] [Servo] token blocks [Elite Vanguard].\r\n[00:41:37] Turn 5: NASCA\r\n[00:41:45] NASCA plays [Dread Statuary].\r\n[00:41:51] NASCA casts [Glint Hawk Idol].\r\n[00:41:52] NASCA puts triggered ability from [Glint Hawk Idol] onto the stack (Whenever another artifact enters the battlefield under your control, you may have Glint Hawk Idol ...).\r\n[00:42:01] NASCA casts [Watchers of the Dead].\r\n[00:42:02] NASCA puts triggered ability from [Glint Hawk Idol] onto the stack (Whenever another artifact enters the battlefield under your control, you may have Glint Hawk Idol ...).\r\n[00:42:02] NASCA puts triggered ability from [Glint Hawk Idol] onto the stack (Whenever another artifact enters the battlefield under your control, you may have Glint Hawk Idol ...).\r\n[00:42:07] NASCA chooses not to use [Glint Hawk Idol]'s ability.\r\n[00:42:10] NASCA chooses not to use [Glint Hawk Idol]'s ability.\r\n[00:42:26] Cluislp is being attacked by [Glint Hawk Idol].\r\n[00:42:43] Cluislp activates an ability of [Spear of Heliod] targeting [Glint Hawk Idol] ( Destroy target creature that dealt damage to you this turn.).\r\n[00:42:51] Turn 6: Cluislp\r\n[00:42:53] Cluislp plays [Plains].\r\n[00:43:01] Turn 6: NASCA\r\n[00:43:20] NASCA casts [Court Homunculus].\r\n[00:43:28] NASCA puts triggered ability from [Glint Hawk Idol] onto the stack (Whenever another artifact enters the battlefield under your control, you may have Glint Hawk Idol ...).\r\n[00:43:41] Cluislp is being attacked by [Watchers of the Dead] and [Glint Hawk Idol].\r\n[00:44:00] Cluislp activates an ability of [Spear of Heliod] targeting [Watchers of the Dead] ( Destroy target creature that dealt damage to you this turn.).\r\n[00:44:08] Turn 7: Cluislp\r\n[00:44:10] Cluislp plays [Plains].\r\n[00:44:13] Cluislp has conceded from the game.\r\nWinner: NASCA\r\nGame 1 Completed.\r\n== Game 2 (659001402) ==\r\n[Time] 1547300780\r\n[00:46:20] PDBot has started watching.\r\n[00:46:20] Cluislp chooses to play first.\r\n[00:46:22] Cluislp keeps this hand.\r\n[00:46:33] NASCA keeps this hand.\r\n[00:46:33] Turn 1: Cluislp\r\n[00:46:33] Cluislp skips their draw step.\r\n[00:46:35] Cluislp plays [Ruins of Trokair].\r\n[00:47:04] Turn 1: NASCA\r\n[00:47:07] NASCA plays [Plains].\r\n[00:47:10] NASCA casts [Toolcraft Exemplar].\r\n[00:47:29] Turn 2: Cluislp\r\n[00:47:30] Cluislp plays [Plains].\r\n[00:47:34] Cluislp casts [Always Watching].\r\n[00:48:01] Turn 2: NASCA\r\n[00:48:03] NASCA plays [Plains].\r\n[00:48:34] NASCA casts [Sundering Growth] targeting [Always Watching].\r\n[00:48:37] NASCA has no creature tokens to copy.\r\n[00:48:45] Cluislp is being attacked by [Toolcraft Exemplar].\r\n[00:48:59] Turn 3: Cluislp\r\n[00:49:03] Cluislp has conceded from the game.\r\nWinner: NASCA\r\nGame 2 Completed.\r\nMatch Winner: NASCA: 2–0\r\n[00:49:06] Cluislp has left the game.\r\n", 'start_time_utc': '1547300185', 'end_time_utc': '1547300946'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 172.69.226.145
Cf-Ray: 498017088dc0b7b9-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
Cdn-Loop: cloudflare
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 6674
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213957206' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213957206, 1, 'PD League', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; IntegrityError
500 error at /api/upload
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213995853' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213995853, 1, 'PD League', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '213995853', 'lines': "PennyDreadful\r\nPD League\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nNASCA,Certini\r\n\r\n== Game 1 (659155502) ==\r\n[Time] 1547385054\r\n[00:10:54] PDBot has started watching.\r\n[00:10:54] NASCA joined the game.\r\n[00:10:54] Certini joined the game.\r\n[League] Tempered Steel by nasca (31161) vs Woohoo Nice Deck by certini (31168)\r\n[00:10:59] [CHAT] PDBot: [sD] Good luck in your League match!\r\n[00:11:01] Certini chooses to play first.\r\n[00:11:06] Certini mulligans to 6 cards.\r\n[00:11:19] NASCA keeps this hand.\r\n[00:11:26] Certini keeps this hand.\r\n[00:11:31] Certini puts 1 card on top of their library.\r\n[00:11:31] Turn 1: Certini\r\n[00:11:31] Certini skips their draw step.\r\n[00:11:33] Certini plays [Plains].\r\n[00:11:34] Certini casts [Expedition Envoy].\r\n[00:11:57] Turn 1: NASCA\r\n[00:12:00] NASCA plays [Plains].\r\n[00:12:09] Turn 2: Certini\r\n[00:12:11] Certini plays [Ally Encampment].\r\n[00:12:16] Certini casts [Captain's Claws].\r\n[00:12:37] NASCA is being attacked by [Expedition Envoy].\r\n[00:12:50] Turn 2: NASCA\r\n[00:12:52] NASCA plays [Plains].\r\n[00:12:56] NASCA casts [Servo Exhibition].\r\n[00:12:59] NASCA's [Servo Exhibition] creates two Servo tokens.\r\n[00:13:11] Turn 3: Certini\r\n[00:13:20] Certini casts [Kor Bladewhirl].\r\n[00:13:35] Certini puts triggered ability from [Kor Bladewhirl] onto the stack (Whenever Kor Bladewhirl or another Ally enters the battlefield under your control, creatures you c...).\r\n[00:14:05] NASCA is being attacked by [Expedition Envoy].\r\n[00:14:26] Turn 3: NASCA\r\n[00:14:29] NASCA plays [Plains].\r\n[00:14:39] NASCA casts [Declaration in Stone] targeting [Kor Bladewhirl].\r\n[00:14:41] NASCA's [Declaration in Stone] creates a Clue token under Certini's control.\r\n[00:14:47] NASCA casts [Toolcraft Exemplar].\r\n[00:14:53] NASCA puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[00:15:05] Certini is being attacked by [Servo] token and [Servo] token.\r\n[00:15:15] Turn 4: Certini\r\n[00:15:17] Certini plays [Nomad Outpost].\r\n[00:15:33] Certini casts [Kalastria Healer].\r\n[00:15:48] Certini puts triggered ability from [Kalastria Healer] onto the stack (Whenever Kalastria Healer or another Ally enters the battlefield under your control, each opponent...).\r\n[00:16:18] Turn 4: NASCA\r\n[00:16:24] NASCA plays [Dread Statuary].\r\n[00:16:34] NASCA casts [Sram's Expertise].\r\n[00:16:47] NASCA's [Sram's Expertise] creates three Servo tokens.\r\n[00:16:50] NASCA casts [Spined Thopter] with [Sram's Expertise].\r\n[00:16:58] NASCA puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[00:17:16] Certini is being attacked by [Toolcraft Exemplar].\r\n[00:17:27] Turn 5: Certini\r\n[00:17:37] Certini casts [Kor Bladewhirl].\r\n[00:17:44] Certini puts triggered ability from [Kor Bladewhirl] onto the stack (Whenever Kor Bladewhirl or another Ally enters the battlefield under your control, creatures you c...).\r\n[00:17:44] Certini puts triggered ability from [Kalastria Healer] onto the stack (Whenever Kalastria Healer or another Ally enters the battlefield under your control, each opponent...).\r\n[00:17:54] Certini activates an ability of [Captain's Claws] targeting [Kalastria Healer] (Equip {1}).\r\n[00:18:12] NASCA is being attacked by [Kalastria Healer] and [Expedition Envoy].\r\n[00:18:12] Certini puts triggered ability from [Captain's Claws] onto the stack (Whenever equipped creature attacks, create a 1/1 white Kor Ally creature token that's tapped and a...).\r\n[00:18:21] Certini's [Captain's Claws] creates a Kor Ally token.\r\n[00:18:21] Certini puts [Kor Ally] token onto the battlefield attacking NASCA\r\n[00:18:23] Certini puts triggered ability from [Kor Bladewhirl] onto the stack (Whenever Kor Bladewhirl or another Ally enters the battlefield under your control, creatures you c...).\r\n[00:18:23] Certini puts triggered ability from [Kalastria Healer] onto the stack (Whenever Kalastria Healer or another Ally enters the battlefield under your control, each opponent...).\r\n[00:18:43] [Servo] token blocks [Expedition Envoy].\r\n[00:18:46] [Servo] token blocks [Expedition Envoy].\r\n[00:18:50] [Servo] token blocks [Kor Ally] token.\r\n[00:18:53] [Servo] token blocks [Kor Ally] token.\r\n[00:19:02] [Servo] token blocks [Expedition Envoy].\r\n[00:19:10] Blockers for [Kor Ally] token are ordered as follows: [Servo] token, [Servo] token\r\n[00:19:11] Blockers for [Expedition Envoy] are ordered as follows: [Servo] token, [Servo] token, [Servo] token\r\n[00:19:35] Turn 5: NASCA\r\n[00:19:50] NASCA casts [Tempered Steel].\r\n[00:19:50] [CHAT] PDBot: [sU]Tempered Steel[sU] has a graphical bug.\nFleetwheel Cruiser does not correctly display changes in power and toughness with Tempered Steel.\r\n[00:20:04] NASCA puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[00:20:23] Certini is being attacked by [Spined Thopter], [Servo] token, [Servo] token, and [Toolcraft Exemplar].\r\n[00:20:35] Turn 6: Certini\r\n[00:20:38] Certini plays [Swamp].\r\n[00:20:41] Certini activates an ability of [Clue] token ( Draw a card.).\r\n[00:20:44] Certini draws a card with [Clue] token's ability.\r\n[00:20:54] Certini casts [Kalastria Healer].\r\n[00:20:58] Certini puts triggered ability from [Kor Bladewhirl] onto the stack (Whenever Kor Bladewhirl or another Ally enters the battlefield under your control, creatures you c...).\r\n[00:20:58] Certini puts triggered ability from [Kalastria Healer] onto the stack (Whenever Kalastria Healer or another Ally enters the battlefield under your control, each opponent...).\r\n[00:20:58] Certini puts triggered ability from [Kalastria Healer] onto the stack (Whenever Kalastria Healer or another Ally enters the battlefield under your control, each opponent...).\r\n[00:21:24] NASCA is being attacked by [Kalastria Healer].\r\n[00:21:24] Certini puts triggered ability from [Captain's Claws] onto the stack (Whenever equipped creature attacks, create a 1/1 white Kor Ally creature token that's tapped and a...).\r\n[00:21:27] Certini's [Captain's Claws] creates a Kor Ally token.\r\n[00:21:27] Certini puts [Kor Ally] token onto the battlefield attacking NASCA\r\n[00:21:30] Certini puts triggered ability from [Kor Bladewhirl] onto the stack (Whenever Kor Bladewhirl or another Ally enters the battlefield under your control, creatures you c...).\r\n[00:21:30] Certini puts triggered ability from [Kalastria Healer] onto the stack (Whenever Kalastria Healer or another Ally enters the battlefield under your control, each opponent...).\r\n[00:21:30] Certini puts triggered ability from [Kalastria Healer] onto the stack (Whenever Kalastria Healer or another Ally enters the battlefield under your control, each opponent...).\r\n[00:22:00] Turn 6: NASCA\r\n[00:22:09] NASCA casts [Fleetwheel Cruiser].\r\n[00:22:09] [CHAT] PDBot: [sU]Fleetwheel Cruiser[sU] has a graphical bug.\nFleetwheel Cruiser does not correctly display changes in power and toughness with Tempered Steel.\r\n[00:22:13] Certini has conceded from the game.\r\nWinner: NASCA\r\nGame 1 Completed.\r\n== Game 2 (659156502) ==\r\n[Time] 1547385809\r\n[00:23:30] PDBot has started watching.\r\n[00:23:36] Certini chooses to play first.\r\n[00:23:40] Certini keeps this hand.\r\n[00:23:42] NASCA keeps this hand.\r\n[00:23:42] Turn 1: Certini\r\n[00:23:42] Certini skips their draw step.\r\n[00:23:45] Certini plays [Plains].\r\n[00:23:47] Certini casts [Hada Freeblade].\r\n[00:23:47] [CHAT] PDBot: [sU]Hada Freeblade[sU] has a graphical bug.\nCertain cards, such as Hada Freeblade, do not display a legality error for the Pauper format in the collection scene.\r\nOur data about this bug is out of date. Please let us know if this card is still bugged (or if it's been fixed).\r\nYou can do so by PM'ing this bot, or by typing `!stillbugged Hada Freeblade` or `!notbugged Hada Freeblade`\r\n[00:23:55] Certini puts triggered ability from [Hada Freeblade] onto the stack (Whenever Hada Freeblade or another Ally enters the battlefield under your control, you may put a +...).\r\n[00:24:21] Turn 1: NASCA\r\n[00:24:25] NASCA plays [Plains].\r\n[00:24:35] Turn 2: Certini\r\n[00:24:40] Certini plays [Nomad Outpost].\r\n[00:24:42] Certini casts [Expedition Envoy].\r\n[00:24:46] Certini puts triggered ability from [Hada Freeblade] onto the stack (Whenever Hada Freeblade or another Ally enters the battlefield under your control, you may put a +...).\r\n[00:24:59] NASCA is being attacked by [Hada Freeblade].\r\n[00:25:24] Turn 2: NASCA\r\n[00:25:26] NASCA plays [Plains].\r\n[00:25:39] NASCA casts [Declaration in Stone] targeting [Hada Freeblade].\r\n[00:25:41] NASCA's [Declaration in Stone] creates a Clue token under Certini's control.\r\n[00:25:51] Turn 3: Certini\r\n[00:25:53] Certini plays [Mountain].\r\n[00:25:56] Certini casts [Akoum Battlesinger].\r\n[00:26:05] Certini puts triggered ability from [Akoum Battlesinger] onto the stack (Whenever Akoum Battlesinger or another Ally enters the battlefield under your control, you may hav...).\r\n[00:26:27] NASCA is being attacked by [Akoum Battlesinger] and [Expedition Envoy].\r\n[00:26:46] Turn 3: NASCA\r\n[00:26:49] NASCA plays [Dread Statuary].\r\n[00:26:59] NASCA casts [Celestial Purge] targeting [Akoum Battlesinger].\r\n[00:27:09] Turn 4: Certini\r\n[00:27:11] Certini plays [Ally Encampment].\r\n[00:27:15] Certini activates an ability of [Clue] token ( Draw a card.).\r\n[00:27:18] Certini draws a card with [Clue] token's ability.\r\n[00:27:27] Certini casts [Bojuka Brigand].\r\n[00:27:35] Certini puts triggered ability from [Bojuka Brigand] onto the stack (Whenever Bojuka Brigand or another Ally enters the battlefield under your control, you may put a +...).\r\n[00:27:48] NASCA is being attacked by [Expedition Envoy].\r\n[00:28:12] Turn 4: NASCA\r\n[00:28:14] NASCA plays [Plains].\r\n[00:28:44] NASCA casts [Fleetwheel Cruiser].\r\n[00:28:47] NASCA puts triggered ability from [Fleetwheel Cruiser] onto the stack (When Fleetwheel Cruiser enters the battlefield, it becomes an artifact creature until end of turn.).\r\n[00:28:59] Certini is being attacked by [Fleetwheel Cruiser].\r\n[00:29:10] Turn 5: Certini\r\n[00:29:13] Certini plays [Mountain].\r\n[00:29:23] Certini casts [Kor Bladewhirl].\r\n[00:29:30] Certini puts triggered ability from [Kor Bladewhirl] onto the stack (Whenever Kor Bladewhirl or another Ally enters the battlefield under your control, creatures you c...).\r\n[00:29:30] Certini puts triggered ability from [Bojuka Brigand] onto the stack (Whenever Bojuka Brigand or another Ally enters the battlefield under your control, you may put a +...).\r\n[00:29:41] NASCA has conceded from the game.\r\nWinner: Certini\r\nGame 2 Completed.\r\n== Game 3 (659157096) ==\r\n[Time] 1547386240\r\n[00:30:41] PDBot has started watching.\r\n", 'start_time_utc': '1547385054', 'end_time_utc': '1547386241'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.88.120
Cf-Ray: 4988380cb908a89f-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
Cdn-Loop: cloudflare
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 13575
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213995853' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213995853, 1, 'PD League', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; IntegrityError
500 error at /api/upload
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '214051194' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (214051194, 1, 'PDM R3 vs. karakusk', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Reported on logsite by logged_out
--------------------------------------------------------------------------------
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '214051194', 'lines': "PennyDreadful\r\nPDM R3 vs. karakusk\r\nTourney, BuggedCardObserver, PennyDreadfulLegality\r\nnanaiper,karakusk\r\n\r\n== Game 1 (659373910) ==\r\n[Time] 1547515227\r\n[12:20:27] PDBot has started watching.\r\n[12:20:27] nanaiper joined the game.\r\n[12:20:27] karakusk joined the game.\r\n[Gatherling] Event=Penny Dreadful Mondays 10.15\r\n[Gatherling] Round=3\r\n[12:20:38] karakusk chooses to play first.\r\n[12:20:55] karakusk keeps this hand.\r\n[12:20:59] nanaiper keeps this hand.\r\n[12:20:59] Turn 1: karakusk\r\n[12:20:59] karakusk skips their draw step.\r\n[12:21:01] karakusk plays [Choked Estuary].\r\n[12:21:07] Turn 1: nanaiper\r\n[12:21:09] nanaiper plays [Jwar Isle Refuge].\r\n[12:21:09] nanaiper puts triggered ability from [Jwar Isle Refuge] onto the stack (When Jwar Isle Refuge enters the battlefield, you gain 1 life.).\r\n[12:21:11] Turn 2: karakusk\r\n[12:21:13] karakusk plays [Choked Estuary].\r\n[12:21:17] karakusk casts [Cephalid Illusionist].\r\n[12:21:20] Turn 2: nanaiper\r\n[12:21:22] nanaiper plays [Choked Estuary].\r\n[12:21:32] nanaiper casts [Wretched Banquet] targeting [Cephalid Illusionist].\r\n[12:21:32] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:21:34] Turn 3: karakusk\r\n[12:21:38] karakusk plays [Island].\r\n[12:21:40] karakusk casts [Cephalid Illusionist].\r\n[12:21:43] karakusk casts [Shuko].\r\n[12:21:45] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:21:45] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:21:53] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:21:53] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:21:55] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:21:55] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:21:57] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:21:57] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:21:58] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:21:58] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:21:58] karakusk puts triggered ability from [Narcomoeba] onto the stack (When Narcomoeba is put into your graveyard from your library, you may put it onto the battlefield.).\r\n[12:22:04] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:05] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:05] karakusk puts triggered ability from [Narcomoeba] onto the stack (When Narcomoeba is put into your graveyard from your library, you may put it onto the battlefield.).\r\n[12:22:09] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:09] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:09] karakusk puts triggered ability from [Narcomoeba] onto the stack (When Narcomoeba is put into your graveyard from your library, you may put it onto the battlefield.).\r\n[12:22:18] karakusk casts [Dread Return] from the graveyard targeting [Flayer of the Hatebound].\r\n[12:22:21] karakusk puts triggered ability from [Flayer of the Hatebound] onto the stack targeting nanaiper (Whenever Flayer of the Hatebound or another creature enters the battlefield from your graveyard, t...).\r\n[12:22:26] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:26] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:28] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:28] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:29] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:29] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:31] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:31] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:33] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:33] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:35] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:35] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:37] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:37] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:39] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:39] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:41] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:41] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:41] karakusk puts triggered ability from [Narcomoeba] onto the stack (When Narcomoeba is put into your graveyard from your library, you may put it onto the battlefield.).\r\n[12:22:45] nanaiper has conceded from the game.\r\nWinner: karakusk\r\nGame 1 Completed.\r\n== Game 2 (659374274) ==\r\n[Time] 1547515423\r\n[12:23:44] PDBot has started watching.\r\n[12:23:46] nanaiper chooses to play first.\r\n[12:23:48] nanaiper keeps this hand.\r\n[12:23:52] karakusk mulligans to 6 cards.\r\n[12:23:55] karakusk keeps this hand.\r\n[12:23:59] karakusk puts 1 card on the bottom of their library.\r\n[12:23:59] Turn 1: nanaiper\r\n[12:24:02] nanaiper skips their draw step.\r\n[12:24:03] nanaiper plays [Choked Estuary].\r\n[12:24:06] nanaiper casts [Scrabbling Claws].\r\n[12:24:08] Turn 1: karakusk\r\n[12:24:09] karakusk plays [Island].\r\n[12:24:12] Turn 2: nanaiper\r\n[12:24:15] nanaiper plays [Choked Estuary].\r\n[12:24:17] Turn 2: karakusk\r\n[12:24:19] karakusk plays [Island].\r\n[12:24:21] karakusk casts [Narcomoeba].\r\n[12:24:22] Turn 3: nanaiper\r\n[12:24:26] nanaiper plays [Swamp].\r\n[12:24:28] Turn 3: karakusk\r\n[12:24:29] karakusk plays [Choked Estuary].\r\n[12:24:36] nanaiper is being attacked by [Narcomoeba].\r\n[12:24:40] Turn 4: nanaiper\r\n[12:24:44] nanaiper plays [Jwar Isle Refuge].\r\n[12:24:44] nanaiper puts triggered ability from [Jwar Isle Refuge] onto the stack (When Jwar Isle Refuge enters the battlefield, you gain 1 life.).\r\n[12:24:50] Turn 4: karakusk\r\n[12:24:53] karakusk plays [Island].\r\n[12:24:57] nanaiper is being attacked by [Narcomoeba].\r\n[12:25:01] Turn 5: nanaiper\r\n[12:25:05] nanaiper plays [Choked Estuary].\r\n[12:25:12] Turn 5: karakusk\r\n[12:25:20] nanaiper is being attacked by [Narcomoeba].\r\n[12:25:27] Turn 6: nanaiper\r\n[12:25:30] nanaiper plays [Swamp].\r\n[12:25:34] Turn 6: karakusk\r\n[12:25:55] karakusk plays [Island].\r\n[12:25:55] nanaiper is being attacked by [Narcomoeba].\r\n[12:25:57] Turn 7: nanaiper\r\n[12:25:57] nanaiper plays [Island].\r\n[12:25:58] Turn 7: karakusk\r\n[12:25:59] karakusk plays [Island].\r\n[12:26:03] nanaiper is being attacked by [Narcomoeba].\r\n[12:26:08] Turn 8: nanaiper\r\n[12:26:10] nanaiper plays [Urza's Factory].\r\n[12:26:16] Turn 8: karakusk\r\n[12:26:23] nanaiper is being attacked by [Narcomoeba].\r\n[12:26:33] nanaiper activates an ability of [Urza's Factory] ( Create a 2/2 colorless Assembly-Worker artifact creature token.).\r\n[12:26:37] karakusk casts [Perilous Voyage] targeting [Scrabbling Claws].\r\n[12:26:39] karakusk returns [Scrabbling Claws] to its owner's hand with [Perilous Voyage].\r\n[12:26:44] karakusk puts 2 cards on the bottom of their library.\r\n[12:26:48] nanaiper's [Urza's Factory] creates an Assembly-Worker token.\r\n[12:26:49] Turn 9: nanaiper\r\n[12:26:52] nanaiper plays [Forest].\r\n[12:26:57] karakusk is being attacked by [Assembly-Worker] token.\r\n[12:27:08] nanaiper casts [Scrabbling Claws].\r\n[12:27:16] Turn 9: karakusk\r\n[12:27:18] karakusk plays [Choked Estuary].\r\n[12:27:24] nanaiper is being attacked by [Narcomoeba].\r\n[12:27:35] nanaiper activates an ability of [Urza's Factory] ( Create a 2/2 colorless Assembly-Worker artifact creature token.).\r\n[12:27:36] nanaiper's [Urza's Factory] creates an Assembly-Worker token.\r\n[12:27:40] nanaiper activates an ability of [Scrabbling Claws] targeting karakusk ( Target player exiles a card from their graveyard.).\r\n[12:27:43] karakusk exiles [Perilous Voyage].\r\n[12:27:44] Turn 10: nanaiper\r\n[12:27:49] karakusk is being attacked by [Assembly-Worker] token and [Assembly-Worker] token.\r\n[12:27:53] Turn 10: karakusk\r\n[12:27:58] karakusk has conceded from the game.\r\nWinner: nanaiper\r\nGame 2 Completed.\r\n[12:28:00] karakusk draws their next card.\r\n[12:28:00] karakusk draws their next card.\r\n[12:28:02] nanaiper has left the game.\r\n[12:28:02] karakusk draws their next card.\r\n[12:28:03] karakusk draws their next card.\r\n== Game 3 (659374822) ==\r\n[Time] 1547515695\r\n[12:28:16] PDBot has started watching.\r\n[12:28:16] nanaiper joined the game.\r\n[12:28:22] karakusk chooses to play first.\r\n[12:28:25] karakusk mulligans to 6 cards.\r\n[12:28:27] nanaiper keeps this hand.\r\n[12:28:28] karakusk keeps this hand.\r\n[12:28:30] karakusk puts 1 card on the bottom of their library.\r\n[12:28:30] Turn 1: karakusk\r\n[12:28:30] karakusk skips their draw step.\r\n[12:28:31] karakusk plays [Island].\r\n[12:28:33] karakusk casts [Shuko].\r\n[12:28:35] Turn 1: nanaiper\r\n[12:28:39] nanaiper plays [Jwar Isle Refuge].\r\n[12:28:40] nanaiper puts triggered ability from [Jwar Isle Refuge] onto the stack (When Jwar Isle Refuge enters the battlefield, you gain 1 life.).\r\n[12:28:41] Turn 2: karakusk\r\n[12:28:43] karakusk plays [Swamp].\r\n[12:28:45] karakusk casts [Anticipate].\r\n[12:28:53] Turn 2: nanaiper\r\n[12:28:55] nanaiper plays [Choked Estuary].\r\n", 'start_time_utc': '1547515227', 'end_time_utc': '1547515735'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.88.54
Cf-Ray: 49949193dceeb7d7-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
Cdn-Loop: cloudflare
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 14556
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '214051194' for key 'PRIMARY'") [SQL: 'INSERT INTO match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (214051194, 1, 'PDM R3 vs. karakusk', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./logsite/api.py", line 26, in upload
importing.import_log(lines.split('\n'), match_id)
File "./logsite/importing.py", line 30, in import_log
local = import_header(lines, match_id)
File "./logsite/importing.py", line 75, in import_header
local = match.create_match(match_id, format_name, comment, modules, players)
File "./logsite/data/match.py", line 69, in create_match
db.commit()
File "./logsite/db.py", line 52, in commit
return DB.session.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
self.transaction.commit()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
self._flush(objects)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
transaction.rollback(_capture_exception=True)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
flush_context.execute()
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
uow
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
execute(statement, multiparams)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
Labels: logsite; IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212880506' for key 'PRIMARY'") [SQL: 'INSERT INTO
match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212880506, 1, 'PDT R3 vs.mynameiseg', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)Reported on logsite by logged_out
IntegrityError (_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212880506' for key 'PRIMARY'") [SQL: 'INSERT INTO
match
(id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212880506, 1, 'PDT R3 vs.mynameiseg', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj) Stack Trace:Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39