Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
When Better Select is enabled, it interferes with adding taxonomy terms. Taxonomy will report that the new term has been added, but when you go and list the terms, the term you just added will not be there.
To reproduce:
- Enable Better Select module
- Add a term to a vocabulary (admin/structure/taxonomy//add) - after adding, you will see a message that the term is successfully added
- List the terms in the vocabulary (admin/structure/taxonomy/) - you'll see that the newly added term is not there
Comment | File | Size | Author |
---|---|---|---|
#5 | betterselect-fix-taxonomy-parent-2097513-5.patch | 656 bytes | ximo |
#3 | betterselect-fix-taxonomy-parent-2097513-3.patch | 665 bytes | joelstein |
Comments
Comment #1
ChristophWeber CreditAttribution: ChristophWeber commentedConfirmed, but I got a PDOexception error and no new taxonomy term at all. The workaround is to disable betterselect, add terms, and then re-enable betterselect. This is on 7.23.
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '94-0' for key 'PRIMARY': INSERT INTO {taxonomy_term_hierarchy} (tid, parent) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1), (:db_insert_placeholder_2, :db_insert_placeholder_3), (:db_insert_placeholder_4, :db_insert_placeholder_5), (:db_insert_placeholder_6, :db_insert_placeholder_7), (:db_insert_placeholder_8, :db_insert_placeholder_9), (:db_insert_placeholder_10, :db_insert_placeholder_11), (:db_insert_placeholder_12, :db_insert_placeholder_13), (:db_insert_placeholder_14, :db_insert_placeholder_15), (:db_insert_placeholder_16, :db_insert_placeholder_17), (:db_insert_placeholder_18, :db_insert_placeholder_19), (:db_insert_placeholder_20, :db_insert_placeholder_21), (:db_insert_placeholder_22, :db_insert_placeholder_23), (:db_insert_placeholder_24, :db_insert_placeholder_25), (:db_insert_placeholder_26, :db_insert_placeholder_27), (:db_insert_placeholder_28, :db_insert_placeholder_29), (:db_insert_placeholder_30, :db_insert_placeholder_31), (:db_insert_placeholder_32, :db_insert_placeholder_33), (:db_insert_placeholder_34, :db_insert_placeholder_35), (:db_insert_placeholder_36, :db_insert_placeholder_37), (:db_insert_placeholder_38, :db_insert_placeholder_39), (:db_insert_placeholder_40, :db_insert_placeholder_41), (:db_insert_placeholder_42, :db_insert_placeholder_43), (:db_insert_placeholder_44, :db_insert_placeholder_45), (:db_insert_placeholder_46, :db_insert_placeholder_47), (:db_insert_placeholder_48, :db_insert_placeholder_49), (:db_insert_placeholder_50, :db_insert_placeholder_51), (:db_insert_placeholder_52, :db_insert_placeholder_53), (:db_insert_placeholder_54, :db_insert_placeholder_55), (:db_insert_placeholder_56, :db_insert_placeholder_57), (:db_insert_placeholder_58, :db_insert_placeholder_59), (:db_insert_placeholder_60, :db_insert_placeholder_61), (:db_insert_placeholder_62, :db_insert_placeholder_63), (:db_insert_placeholder_64, :db_insert_placeholder_65), (:db_insert_placeholder_66, :db_insert_placeholder_67), (:db_insert_placeholder_68, :db_insert_placeholder_69), (:db_insert_placeholder_70, :db_insert_placeholder_71), (:db_insert_placeholder_72, :db_insert_placeholder_73), (:db_insert_placeholder_74, :db_insert_placeholder_75), (:db_insert_placeholder_76, :db_insert_placeholder_77), (:db_insert_placeholder_78, :db_insert_placeholder_79), (:db_insert_placeholder_80, :db_insert_placeholder_81), (:db_insert_placeholder_82, :db_insert_placeholder_83), (:db_insert_placeholder_84, :db_insert_placeholder_85), (:db_insert_placeholder_86, :db_insert_placeholder_87), (:db_insert_placeholder_88, :db_insert_placeholder_89), (:db_insert_placeholder_90, :db_insert_placeholder_91), (:db_insert_placeholder_92, :db_insert_placeholder_93), (:db_insert_placeholder_94, :db_insert_placeholder_95), (:db_insert_placeholder_96, :db_insert_placeholder_97), (:db_insert_placeholder_98, :db_insert_placeholder_99), (:db_insert_placeholder_100, :db_insert_placeholder_101), (:db_insert_placeholder_102, :db_insert_placeholder_103), (:db_insert_placeholder_104, :db_insert_placeholder_105), (:db_insert_placeholder_106, :db_insert_placeholder_107), (:db_insert_placeholder_108, :db_insert_placeholder_109), (:db_insert_placeholder_110, :db_insert_placeholder_111), (:db_insert_placeholder_112, :db_insert_placeholder_113), (:db_insert_placeholder_114, :db_insert_placeholder_115), (:db_insert_placeholder_116, :db_insert_placeholder_117), (:db_insert_placeholder_118, :db_insert_placeholder_119), (:db_insert_placeholder_120, :db_insert_placeholder_121), (:db_insert_placeholder_122, :db_insert_placeholder_123), (:db_insert_placeholder_124, :db_insert_placeholder_125), (:db_insert_placeholder_126, :db_insert_placeholder_127), (:db_insert_placeholder_128, :db_insert_placeholder_129), (:db_insert_placeholder_130, :db_insert_placeholder_131), (:db_insert_placeholder_132, :db_insert_placeholder_133), (:db_insert_placeholder_134, :db_insert_placeholder_135), (:db_insert_placeholder_136, :db_insert_placeholder_137), (:db_insert_placeholder_138, :db_insert_placeholder_139), (:db_insert_placeholder_140, :db_insert_placeholder_141), (:db_insert_placeholder_142, :db_insert_placeholder_143), (:db_insert_placeholder_144, :db_insert_placeholder_145), (:db_insert_placeholder_146, :db_insert_placeholder_147), (:db_insert_placeholder_148, :db_insert_placeholder_149); Array ( [:db_insert_placeholder_0] => 94 [:db_insert_placeholder_1] => 0 [:db_insert_placeholder_2] => 94 [:db_insert_placeholder_3] => 0 [:db_insert_placeholder_4] => 94 [:db_insert_placeholder_5] => 0 [:db_insert_placeholder_6] => 94 [:db_insert_placeholder_7] => 0 [:db_insert_placeholder_8] => 94 [:db_insert_placeholder_9] => 0 [:db_insert_placeholder_10] => 94 [:db_insert_placeholder_11] => 0 [:db_insert_placeholder_12] => 94 [:db_insert_placeholder_13] => 0 [:db_insert_placeholder_14] => 94 [:db_insert_placeholder_15] => 0 [:db_insert_placeholder_16] => 94 [:db_insert_placeholder_17] => 0 [:db_insert_placeholder_18] => 94 [:db_insert_placeholder_19] => 0 [:db_insert_placeholder_20] => 94 [:db_insert_placeholder_21] => 0 [:db_insert_placeholder_22] => 94 [:db_insert_placeholder_23] => 0 [:db_insert_placeholder_24] => 94 [:db_insert_placeholder_25] => 0 [:db_insert_placeholder_26] => 94 [:db_insert_placeholder_27] => 0 [:db_insert_placeholder_28] => 94 [:db_insert_placeholder_29] => 0 [:db_insert_placeholder_30] => 94 [:db_insert_placeholder_31] => 0 [:db_insert_placeholder_32] => 94 [:db_insert_placeholder_33] => 0 [:db_insert_placeholder_34] => 94 [:db_insert_placeholder_35] => 0 [:db_insert_placeholder_36] => 94 [:db_insert_placeholder_37] => 0 [:db_insert_placeholder_38] => 94 [:db_insert_placeholder_39] => 0 [:db_insert_placeholder_40] => 94 [:db_insert_placeholder_41] => 0 [:db_insert_placeholder_42] => 94 [:db_insert_placeholder_43] => 0 [:db_insert_placeholder_44] => 94 [:db_insert_placeholder_45] => 0 [:db_insert_placeholder_46] => 94 [:db_insert_placeholder_47] => 0 [:db_insert_placeholder_48] => 94 [:db_insert_placeholder_49] => 0 [:db_insert_placeholder_50] => 94 [:db_insert_placeholder_51] => 0 [:db_insert_placeholder_52] => 94 [:db_insert_placeholder_53] => 0 [:db_insert_placeholder_54] => 94 [:db_insert_placeholder_55] => 0 [:db_insert_placeholder_56] => 94 [:db_insert_placeholder_57] => 0 [:db_insert_placeholder_58] => 94 [:db_insert_placeholder_59] => 0 [:db_insert_placeholder_60] => 94 [:db_insert_placeholder_61] => 0 [:db_insert_placeholder_62] => 94 [:db_insert_placeholder_63] => 0 [:db_insert_placeholder_64] => 94 [:db_insert_placeholder_65] => 0 [:db_insert_placeholder_66] => 94 [:db_insert_placeholder_67] => 0 [:db_insert_placeholder_68] => 94 [:db_insert_placeholder_69] => 0 [:db_insert_placeholder_70] => 94 [:db_insert_placeholder_71] => 0 [:db_insert_placeholder_72] => 94 [:db_insert_placeholder_73] => 0 [:db_insert_placeholder_74] => 94 [:db_insert_placeholder_75] => 0 [:db_insert_placeholder_76] => 94 [:db_insert_placeholder_77] => 0 [:db_insert_placeholder_78] => 94 [:db_insert_placeholder_79] => 0 [:db_insert_placeholder_80] => 94 [:db_insert_placeholder_81] => 0 [:db_insert_placeholder_82] => 94 [:db_insert_placeholder_83] => 0 [:db_insert_placeholder_84] => 94 [:db_insert_placeholder_85] => 0 [:db_insert_placeholder_86] => 94 [:db_insert_placeholder_87] => 0 [:db_insert_placeholder_88] => 94 [:db_insert_placeholder_89] => 0 [:db_insert_placeholder_90] => 94 [:db_insert_placeholder_91] => 0 [:db_insert_placeholder_92] => 94 [:db_insert_placeholder_93] => 0 [:db_insert_placeholder_94] => 94 [:db_insert_placeholder_95] => 0 [:db_insert_placeholder_96] => 94 [:db_insert_placeholder_97] => 0 [:db_insert_placeholder_98] => 94 [:db_insert_placeholder_99] => 0 [:db_insert_placeholder_100] => 94 [:db_insert_placeholder_101] => 0 [:db_insert_placeholder_102] => 94 [:db_insert_placeholder_103] => 0 [:db_insert_placeholder_104] => 94 [:db_insert_placeholder_105] => 0 [:db_insert_placeholder_106] => 94 [:db_insert_placeholder_107] => 0 [:db_insert_placeholder_108] => 94 [:db_insert_placeholder_109] => 0 [:db_insert_placeholder_110] => 94 [:db_insert_placeholder_111] => 0 [:db_insert_placeholder_112] => 94 [:db_insert_placeholder_113] => 0 [:db_insert_placeholder_114] => 94 [:db_insert_placeholder_115] => 0 [:db_insert_placeholder_116] => 94 [:db_insert_placeholder_117] => 0 [:db_insert_placeholder_118] => 94 [:db_insert_placeholder_119] => 0 [:db_insert_placeholder_120] => 94 [:db_insert_placeholder_121] => 0 [:db_insert_placeholder_122] => 94 [:db_insert_placeholder_123] => 0 [:db_insert_placeholder_124] => 94 [:db_insert_placeholder_125] => 0 [:db_insert_placeholder_126] => 94 [:db_insert_placeholder_127] => 0 [:db_insert_placeholder_128] => 94 [:db_insert_placeholder_129] => 0 [:db_insert_placeholder_130] => 94 [:db_insert_placeholder_131] => 0 [:db_insert_placeholder_132] => 94 [:db_insert_placeholder_133] => 0 [:db_insert_placeholder_134] => 94 [:db_insert_placeholder_135] => 0 [:db_insert_placeholder_136] => 94 [:db_insert_placeholder_137] => 0 [:db_insert_placeholder_138] => 94 [:db_insert_placeholder_139] => 0 [:db_insert_placeholder_140] => 94 [:db_insert_placeholder_141] => 0 [:db_insert_placeholder_142] => 94 [:db_insert_placeholder_143] => 0 [:db_insert_placeholder_144] => 94 [:db_insert_placeholder_145] => 0 [:db_insert_placeholder_146] => 94 [:db_insert_placeholder_147] => 0 [:db_insert_placeholder_148] => 94 [:db_insert_placeholder_149] => 0 ) in taxonomy_term_save() (line 679 of /var/www/pv/modules/taxonomy/taxonomy.module).
Comment #2
domignon CreditAttribution: domignon commentedSame here,I thought better select was not even supposed to appear on the add/edit taxonomy term form in the first place if the setting "appears on nodes form only" has been activated. I've disabled the module for now.
Comment #3
joelstein CreditAttribution: joelstein commentedThis bug is caused by Better Select's betterselect_taxonomy_form_term_from_checkboxes() function, which can result in an empty "parent" array, thus causing taxonomy_term_save() to not save the empty term hierarchy, which then causes taxonomy_get_tree() to not load the term.
The attached patch fixes this issue by restoring an empty parent array to array(0 => 0), which is the native form value submitted when no parent is selected.
Comment #4
vinmassaro CreditAttribution: vinmassaro commentedPatch in #3 works for us. Changing status, thanks!
Comment #5
ximo CreditAttribution: ximo commented#3 didn't work for us, unfortunately. But after some investigation I found out that there's another bug that causes this same error.
If you have checked the setting "Node form only", Better Select will still convert the select element for parents on the Add term form to checkboxes (a bug), and it will not add the necessary submit callbacks. Without the callbacks, the form data won't be what Taxonomy module expects, and it blows up with
Integrity constraint violation: 1062 Duplicate entry
and a WSOD in our case.The bug is a faulty boolean check in
betterselect_should_format_element()
, so the fix was dead simple. Patch made against -dev, but should work against -beta3 too.Comment #6
andileco CreditAttribution: andileco commentedPatch #5 worked for me--I was using 7.x-1.0-beta3.
Comment #7
andileco CreditAttribution: andileco commentedI'm bumping this up to Major priority, as it breaks a core function in Drupal--the addition of new taxonomy terms.
Comment #8
ehanuise CreditAttribution: ehanuise commentedgot this issue on D7.41, better select 7.x-1.0-beta3+2-dev
adding or editing taxonomy terms results in terms not being added to vocabulary (albeit they are saved to DB tables).
Creating a term while specifying as child to another term works. If parent is it fails.
Disabling better select fixes the issue.
I can't code, but by searching about this I found a similar issue in the hierarchical select module, maybe this could help fix better select ?
https://www.drupal.org/node/1255880