-
Notifications
You must be signed in to change notification settings - Fork 41
Description
Hi again,
I have another problem, when I try to edit the taxon tree (not the other trees), I have an error:
"Table 'taxontreedef' was not locked with LOCK TABLES"
In the logs I found:
field "_tableName" does not exist in <class 'specifyweb.specify.models.Taxon'>I cannot reproduce this error in my test database, it seems that the taxon tree is not locked correctly ? I checked using specify6 and it doesn’t look locked by another user (don’t know how to get this info in the database)
https://discourse.specifysoftware.org/t/error-when-editing-taxon-tree-in-specify7/1359
Describe the bug
The problem is occurring as a result of how Specify 7 handles auto-incrementing fields in a UIFormatter while creating a new tree record which has a field formatted as auto-incrementing.
More specifically, it is occurring because during the time that the new record is being created, Specify is locking the table (Taxon in this case), and all tables which have foreign keys which reference the main table.
However, to determine which tree to insert the Taxon record into, Specify does a SQL Inner Join on the discipline and taxontreedef tables while the Taxon (and related) tables are locked.
From MariaDB Lock Tables Documentation
While a connection holds an explicit lock on a table, it cannot access a non-locked table. If you try, the following error will be produced:
ERROR 1100 (HY000): Table 'tab_name' was not locked with LOCK TABLES
To Reproduce
To reproduce the error, a UIFormatter on the Taxon table must be established with a numeric, autoincrementing/autonumbering field.
For example, the following is a formatter for the text1 field which has the pattern TAX-###, where # will be any digit which is supposed to be automatically set.
<format system="false" name="TEST_TAXON_INCR" class="edu.ku.brc.specify.datamodel.Taxon" fieldname="text1">
<autonumber>edu.ku.brc.af.core.db.AutoNumberGeneric</autonumber>
<field type="constant" size="3" value="TAX"/>
<field type="separator" size="1" value="-"/>
<field type="numeric" size="3" inc="true"/>
</format>Once the format has been established, attempting to create any Taxon record will result in the OperationalError: Table 'taxontreedef' was not locked with LOCK TABLES.
*Editing Taxon records did not raise the error.
Desktop:
- OS: Ubuntu 22.04.3
- Browser: Chrome
- Specify 7 Version: v7.9.1
Notes
sanitized_Specify_7_Crash_Report.txt
Reported By
Institut de Recherche pour le Développement
Metadata
Metadata
Assignees
Labels
Type
Projects
Status