isotope / core

Core repository of Isotope eCommerce, an eCommerce extension for Contao Open Source CMS
https://isotopeecommerce.org
135 stars 107 forks source link

General error: 1366 Incorrect integer value: 'a:0:{}' for column #1944

Closed soletan closed 6 years ago

soletan commented 6 years ago

Ich habe eine alte Installation Contao3 mit Isotope aktualisiert auf Contao 4.4.18 mit Isotope 2.5.1. Soweit sah alles funktional aus, aber ein Problem aus dem alten Setup ist weiterhin vorhanen: Wenn ich SelectMenü-Attribut anlege, dann erzeugt Isotope eine Integer-Spalte in tl_iso_product, will diese aber mit 'a:0:{}' befüllen, wenn ich ein neues Produkt anlege.

An exception occurred while executing 'INSERT INTO tl_iso_product ([...], `connector`, [...], `tstamp`) VALUES ([...],'a:0:{}', [...], 0)': SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'a:0:{}' for column 'connector' at row 1

Ich habe das Problem mit einer bestehenden Spalte, die bereits zahlreiche Integer-Referenzen enthält, daher mag ich die nicht mal eben modifizieren. Doch selbst ein neu angelegtes Attribut wurde als Integer angelegt und in der Exception beim Anlegen eines neuen Produkts wieder mit einem leeren Array befüllt.

+-----+------------+---------------+------------+--------+----------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+----------------+-----------+-----------+------------------+-----------+-----------+-----------+------------+----------+------+------------------+-----+--------------+------+-----------+----------------+-----------+-------+-----------+----------+------+-----------+--------------+------------+----------------+------------+---------------+--------------------+------------------+-------------+-----------+-------------------------------------------------------------------------------------------------------------------+--------------------+------------------+-----------+
| id  | tstamp     | name          | field_name | type   | legend         | description | options                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | foreignKey | variant_option | be_search | be_filter | customer_defined | mandatory | fe_filter | fe_search | fe_sorting | multiple | size | extensions       | rte | multilingual | rgxp | maxlength | conditionField | fieldType | files | filesOnly | sortBy   | path | storeFile | uploadFolder | useHomeDir | doNotOverwrite | datepicker | optionsSource | includeBlankOption | blankOptionLabel | placeholder | minlength | checkoutTargetFolder                                                                                              | checkoutTargetFile | checkoutRelocate | isGallery |
+-----+------------+---------------+------------+--------+----------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+----------------+-----------+-----------+------------------+-----------+-----------+-----------+------------+----------+------+------------------+-----+--------------+------+-----------+----------------+-----------+-------+-----------+----------+------+-----------+--------------+------------+----------------+------------+---------------+--------------------+------------------+-------------+-----------+-------------------------------------------------------------------------------------------------------------------+--------------------+------------------+-----------+
| 103 | 1458222323 | Steckerfertig | connector  | select | options_legend |             | a:13:{i:0;a:4:{s:5:"value";s:5:"ricoh";s:5:"label";s:5:"Ricoh";s:7:"default";s:0:"";s:5:"group";s:0:"";}i:1;a:4:{s:5:"value";s:6:"konica";s:5:"label";s:14:"Konica-Minolta";s:7:"default";s:0:"";s:5:"group";s:0:"";}i:2;a:4:{s:5:"value";s:5:"canon";s:5:"label";s:5:"Canon";s:7:"default";s:0:"";s:5:"group";s:0:"";}i:3;a:4:{s:5:"value";s:7:"kyocera";s:5:"label";s:12:"Kyocera-Mita";s:7:"default";s:0:"";s:5:"group";s:0:"";}i:4;a:4:{s:5:"value";s:7:"toshiba";s:5:"label";s:7:"Toshiba";s:7:"default";s:0:"";s:5:"group";s:0:"";}i:5;a:4:{s:5:"value";s:5:"sharp";s:5:"label";s:5:"Sharp";s:7:"default";s:0:"";s:5:"group";s:0:"";}i:6;a:4:{s:5:"value";s:3:"oce";s:5:"label";s:4:"Océ";s:7:"default";s:0:"";s:5:"group";s:0:"";}i:7;a:4:{s:5:"value";s:9:"panasonic";s:5:"label";s:9:"Panasonic";s:7:"default";s:0:"";s:5:"group";s:0:"";}i:8;a:4:{s:5:"value";s:5:"xerox";s:5:"label";s:5:"Xerox";s:7:"default";s:0:"";s:5:"group";s:0:"";}i:9;a:4:{s:5:"value";s:2:"hp";s:5:"label";s:20:"HP-Kopierer mit FlsH";s:7:"default";s:0:"";s:5:"group";s:0:"";}i:10;a:4:{s:5:"value";s:8:"microbox";s:5:"label";s:20:"Microbox-Buchscanner";s:7:"default";s:0:"";s:5:"group";s:0:"";}i:11;a:4:{s:5:"value";s:9:"zeutschel";s:5:"label";s:21:"Zeutschel-Buchscanner";s:7:"default";s:0:"";s:5:"group";s:0:"";}i:12;a:4:{s:5:"value";s:6:"noplug";s:5:"label";s:21:"ohne Kopierer-Stecker";s:7:"default";s:0:"";s:5:"group";s:0:"";}} | NULL       | 1              |           | 1         |                  | 1         |           | 1         |            |          |    5 | jpg,jpeg,gif,png |     |              |      |         0 |                |           |       |           |          | NULL |           | NULL         |            |                |            | table         | 1                  |                  |             |         0 | files/orders/##document_number##/##product_position##__{{flag::##product_name##|standardize}}/##attribute_field## | ##file_target##    |                  |           |
| 114 | 1525730892 | somefake      | somefake   | select | options_legend |             | NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | NULL       |                |           | 1         |                  |           |           |           |            |          |    5 | jpg,jpeg,gif,png |     |              |      |         0 |                |           |       |           | name_asc | NULL |           | NULL         |            |                |            | table         |                    |                  |             |         0 | files/orders/##document_number##/##product_position##__{{flag::##product_name##|standardize}}/##attribute_field## | ##file_target##    |                  |           |
+-----+------------+---------------+------------+--------+----------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+----------------+-----------+-----------+------------------+-----------+-----------+-----------+------------+----------+------+------------------+-----+--------------+------+-----------+----------------+-----------+-------+-----------+----------+------+-----------+--------------+------------+----------------+------------+---------------+--------------------+------------------+-------------+-----------+-------------------------------------------------------------------------------------------------------------------+--------------------+------------------+-----------+

Das System ist ein Ubuntu 16.04 LTS mit MySQL 5.7.20 und PHP 7.0.28 FPM.

aschempp commented 6 years ago

Im Feld optionsSource steht table, dann müsstest du eigentlich den Options-Manager verwenden, und eine Integer-Spalte wäre korrekt? Oder hast du die Mehrfachauswahl aktiviert?

soletan commented 6 years ago

Die Detailansicht zum bestehenden Attribut zeigt, dass es ein "Select Menü" mit Bedatung per Optionen Manager ist. Mehrfach-Auswahlen kann ich augenscheinlich dort nicht wählen. Die weiteren aktiven Optionen sind "Für Varianten verwenden" und "Filterbar im Backend".

Da in den Bestandsdaten auch Nicht-0-Integer-Werte hinterlegt sind, nehme ich an, dass es auch beim Bearbeiten weitestgehend funktioniert. Aber aus irgendeinem Grund klappt das Erzeugen neuer Produkte eben nicht, weil dort als Standard-Wert dem INSERT-Statement serialisierte leere Arrays mitgegeben werden.

Im Setup existieren auch weitere Attribute, welche im MySQL nicht als Integer angelegt sind, sondern als Textfeld.

+---------------------+-----------+---------------+
| field_name          | type      | optionsSource |
+---------------------+-----------+---------------+
| supported_payments  | select    | attribute     |
| device              | select    | attribute     |
| ethernet            | select    | attribute     |
| casing              | select    | attribute     |
| hopper              | select    | attribute     |
| sort_of_copier      | select    | attribute     |
| validator           | select    | attribute     |
| function            | checkbox  | attribute     |
| display             | select    | attribute     |
| supported_device    | checkbox  | attribute     |
| payment             | checkbox  | attribute     |
| slot                | select    | attribute     |
| volume              | radio     | attribute     |
| operating_voltage   | select    | attribute     |
| calibration         | select    | attribute     |
| keyswitch           | select    | attribute     |
| mural_installation  | select    | attribute     |
| unit_type           | select    | attribute     |
| scale               | select    | attribute     |
| amount_copiers      | select    | attribute     |
| accounting_system   | checkbox  | attribute     |
| variant             | select    | attribute     |
| products            | checkbox  | attribute     |
| voltage             | select    | attribute     |
| sensor              | select    | attribute     |
| cable               | select    | attribute     |
| clicks              | select    | attribute     |
| key_number          | text      | attribute     |
| ctm_type            | select    | attribute     |
| firm                | select    | attribute     |
| plug_type           | select    | attribute     |
| xerox_type          | text      | attribute     |
| software_support    | select    | attribute     |
| colour              | select    | attribute     |
| initialization      | select    | attribute     |
| cable_length        | text      | attribute     |
| cable_length_3      | text      | attribute     |
| trunk               | select    | attribute     |
| access              | select    | attribute     |
| card_type           | select    | attribute     |
| enhance             | select    | attribute     |
| firm_customer       | select    | attribute     |
| plug_type_customer  | select    | attribute     |
| card_print          | select    | attribute     |
| volt                | select    | attribute     |
| revaluation_selling | select    | attribute     |
| cable_length_2      | text      | attribute     |
| cable_length_4      | text      | attribute     |
| cable_length_extra  | text      | attribute     |
| sensor_type         | select    | attribute     |
| port                | select    | attribute     |
| calibration_type    | select    | attribute     |
| connector           | select    | table         |
| steal_casing        | select    | table         |
| print_numbers       | select    | table         |
| keyswitch_surcharge | select    | table         |
| download            | downloads | attribute     |
| device_choice       | select    | table         |
| somefake            | select    | table         |
+---------------------+-----------+---------------+

Diese sind aber alle mit der Source attribute definiert.

Das Kuriose für mich aber ist, wieso die Logik eine Integer-Spalte definiert, aber dann nicht mit Integers befüllt. Ob nun Mehrfachauswahl oder nicht, hier müssen ja die Logiken konsistent zueinander sein, die einerseits die Struktur von tl_iso_product ändern lassen und andererseits dann Werte und Zeilen dafür generieren.

aschempp commented 6 years ago

Kommt die DB-Fehlermeldung wenn du ein Produkt oder eine entsprechende Variante anlegen willst?

Ausserdem, hast du bei einer der Optionen die Default-Option aktiviert?

soletan commented 6 years ago

Die Fehlermeldung kommt, wenn ich ein neues Produkt anlegen will, sprich: im Menü links "Produkte" gewählt, dann auf die globale Aktion "Neues Produkt" ... direkt danach kommt die Exception.

Einen Standard hatte ich vorher noch nicht drin. Macht Sinn, dass der sein muss. Doch auch nachdem ich einen Default für das Attribut connector gewählt hatte, kam die Exception und reklamierte einen falschen Wert beim Feld connector: a:0:{}.

andreas361 commented 6 years ago

Wir haben hier das gleiche Problem mit gleicher Konstellation (Contao 4.4.18, Isotope 2.51).

Soweit lässt es sich (für uns) nur lösen, indem wir nicht den "Optionen-Manager" sondern den "Optionen-Assistent" verwenden - wenngleich der veraltet ist.

ben-eSM commented 6 years ago

Kann das Problem auch bestätigen. Contao 4.4.18 und Isotope 2.5.1. Beim Anlegen eines Produkts kommt es zu dem genannten Fehler.

ben-eSM commented 6 years ago

Is there a hotfix or anything to quickly address this issue? Some of my clients are cut off from creating new variants or products.

godzik commented 6 years ago

@ben-eSM another solution is - switch off STRICT_TRANS_TABLES in MySQL setting (my.cnf if i'm not mistaken). Yeah, i know it's kinda dirty, but ... :D

ben-eSM commented 6 years ago

@godzik Thanks for the hint! But yes, it's not really a clean solution. But at least it'll work for some. However, some clients haven't access to MySQL settings. So they'll have to wait for an official fix.

soletan commented 6 years ago

@godzik That's a quickfix, but no solution. I'd rather have a software that's working with a proper ORM/ODM ... what is Doctrine good for in Contao4? Is it just establishing connections to databases. @aschempp Is this due to Isotope or due to Contao's ORM?

aschempp commented 6 years ago

Fixed in ed6f9a377335ffd39a31c4e3b67e8ca0589a633c