pyfa-org / Pyfa

Python fitting assistant, cross-platform fitting tool for EVE Online
GNU General Public License v3.0
1.6k stars 406 forks source link

Error when opening existing fit on Windows #2395

Closed CameronHudson8 closed 2 years ago

CameronHudson8 commented 2 years ago

Bug Report

When I clicked on an existing fit in the left pane in order to display it in the main pane, an error window was displayed requesting that I report the issue.

Expected behavior:

A fit is displayed in the main pane.

Actual behavior:

An error window appears. After closing the error window, the main pain remains empty until I click on a different fit in the left pane, and then click back on the desired fit.

Detailed steps to reproduce:

So far I haven't been able to reproduce it.

Fits involved in EFT format (Edit > To Clipboard > EFT):

[Praxis, Winter Nexus 0.1.2 armor]

Large Armor Repairer II
Large Armor Repairer II
Large Armor Repairer II
Reactive Armor Hardener
Ballistic Control System II
Capacitor Power Relay II
Capacitor Power Relay II

Stasis Webifier II
Large Cap Battery II
Cap Recharger II
Cap Recharger II
Cap Recharger II
Missile Guidance Computer II, Missile Precision Script
Large Cap Battery II

'Arbalest' Rapid Heavy Missile Launcher I, Caldari Navy Mjolnir Heavy Missile
'Arbalest' Rapid Heavy Missile Launcher I, Caldari Navy Mjolnir Heavy Missile
'Arbalest' Rapid Heavy Missile Launcher I, Caldari Navy Mjolnir Heavy Missile
'Arbalest' Rapid Heavy Missile Launcher I, Caldari Navy Mjolnir Heavy Missile
'Arbalest' Rapid Heavy Missile Launcher I, Caldari Navy Mjolnir Heavy Missile
'Arbalest' Rapid Heavy Missile Launcher I, Caldari Navy Mjolnir Heavy Missile
Small Tractor Beam I

Large Auxiliary Nano Pump I
Large Capacitor Control Circuit I
Large Capacitor Control Circuit I

Praetor I x4
Praetor I x4
Salvage Drone I x5

Caldari Navy Mjolnir Heavy Missile x14400

Release or development git branch? Please note the release version or commit hash:

v2.39.1

Operating system and version (eg: Windows 10, OS X 10.9, OS X 10.11, Ubuntu 16.10):

Windows 10

Other relevant information:

pyfa v2.39.1
EVE Data Version: 1978193 (2021-12-09 09:05:58)

OS version: Windows-10-10.0.19041-SP0
Python version: 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:58:18) [MSC v.1900 64 bit (AMD64)]
wxPython version: 4.0.6 (wxWidgets 3.0.5)
SQLAlchemy version: 1.3.23
Logbook version: 1.5.3
Requests version: 2.26.0
Dateutil version: 2.8.2

####################

Traceback (most recent call last):
  File "site-packages\sqlalchemy\engine\base.py", line 1257, in _execute_context
  File "site-packages\sqlalchemy\engine\default.py", line 605, in do_executemany
sqlite3.IntegrityError: UNIQUE constraint failed: characterSkills.characterID, characterSkills.itemID

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "eos\db\saveddata\queries.py", line 562, in commit
  File "site-packages\sqlalchemy\orm\session.py", line 1046, in commit
  File "site-packages\sqlalchemy\orm\session.py", line 504, in commit
  File "site-packages\sqlalchemy\orm\session.py", line 483, in _prepare_impl
  File "site-packages\sqlalchemy\orm\session.py", line 2540, in flush
  File "site-packages\sqlalchemy\orm\session.py", line 2682, in _flush
  File "site-packages\sqlalchemy\util\langhelpers.py", line 70, in __exit__
  File "site-packages\sqlalchemy\util\compat.py", line 182, in raise_
  File "site-packages\sqlalchemy\orm\session.py", line 2642, in _flush
  File "site-packages\sqlalchemy\orm\unitofwork.py", line 422, in execute
  File "site-packages\sqlalchemy\orm\unitofwork.py", line 589, in execute
  File "site-packages\sqlalchemy\orm\persistence.py", line 245, in save_obj
  File "site-packages\sqlalchemy\orm\persistence.py", line 1083, in _emit_insert_statements
  File "site-packages\sqlalchemy\engine\base.py", line 1011, in execute
  File "site-packages\sqlalchemy\sql\elements.py", line 298, in _execute_on_connection
  File "site-packages\sqlalchemy\engine\base.py", line 1130, in _execute_clauseelement
  File "site-packages\sqlalchemy\engine\base.py", line 1317, in _execute_context
  File "site-packages\sqlalchemy\engine\base.py", line 1511, in _handle_dbapi_exception
  File "site-packages\sqlalchemy\util\compat.py", line 182, in raise_
  File "site-packages\sqlalchemy\engine\base.py", line 1257, in _execute_context
  File "site-packages\sqlalchemy\engine\default.py", line 605, in do_executemany
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: characterSkills.characterID, characterSkills.itemID
[SQL: INSERT INTO "characterSkills" ("characterID", "itemID", "_Skill__level", created, modified) VALUES (?, ?, ?, ?, ?)]
[parameters: ((4, 22536, None, '2021-12-28 06:23:00.972828', None), (4, 22541, None, '2021-12-28 06:23:00.972828', None), (4, 20494, None, '2021-12-28 06:23:00.972828', None), (4, 20495, None, '2021-12-28 06:23:00.972828', None), (4, 22551, None, '2021-12-28 06:23:00.972828', None), (4, 22552, None, '2021-12-28 06:23:00.972828', None), (4, 32797, None, '2021-12-28 06:23:00.972828', None), (4, 24606, None, '2021-12-28 06:23:00.972828', None)  ... displaying 10 of 316 total bound parameter sets ...  (4, 28667, None, '2021-12-28 06:23:00.972828', None), (4, 24572, None, '2021-12-28 06:23:00.972828', None))]
(Background on this error at: http://sqlalche.me/e/13/gkpj)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "gui\builtinViews\fittingView.py", line 92, in fitSelected
  File "gui\builtinViews\fittingView.py", line 347, in fitSelected
  File "gui\builtinViews\fittingView.py", line 595, in slotsChanged
  File "gui\builtinViews\fittingView.py", line 543, in generateMods
  File "service\fit.py", line 361, in getFit
  File "eos\db\saveddata\queries.py", line 568, in commit
TypeError: __init__() missing 2 required positional arguments: 'params' and 'orig'
blitzmann commented 2 years ago

sqlite3.IntegrityError: UNIQUE constraint failed: characterSkills.characterID, characterSkills.itemID

I looks like something happened that caused pyfa to want to insert data into the character's skills that was already there. Just simply opening a fit shouldn't cause this, as that shouldn't modify the characters skills at all.

Sometimes weird database integrity issues like this happen when you run two instances at the same time. This could lead to one instance of pyfa not knowing what the other instance did. If that's not the case here, then I would chaulk it up to a fluke unless it happens again, in which case please reopen the ticket and provide the log file (you can find the path to the log filr in Preferences > Logging)