Я был пчелиным по написанию кода и тестировал его, когда я ударил эту ошибку.Ошибка (1054): Неизвестный столбец «enable_flag» в поле «field_list»
update products set enable_flag='Y' where prod_id=31745
ERROR @ 214 : (1054)
Unknown column 'enable_flag' in 'field list'
Поле «enable_flag» указано в таблице. Я попробовал несколько вариантов вышеупомянутой команды SQL. Я положил backticks вокруг «продуктов», вокруг «enable_flag», я попытался переименовать команду - все безрезультатно. Я даже подумал, что, возможно, я превысил предел в 65 656 символов, но нет. Итак, я пришел сюда, прочитал о том, что у другого есть аналогичная проблема, но все это были «Ты ошибся X» или «Ты оставил имя таблицы» и т. Д. Это немного озадачило меня. Я использую MySQL (последняя версия), PHP 5.4.12, а до вчерашнего дня я работал в основном с первой половиной таблицы. Итак, теперь я начинаю работать со второй половиной, и это происходит. Кроме того, enable_flag - это столбец 52. Я знаю, что вы можете иметь 4096 столбцов. Однако, ничего из колонны 52 на не могут быть обновлены, вставлены и т.д ....
Вот таблица «продукты» свалка:
+--------------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+---------------+------+-----+---------+----------------+
| prod_id | bigint(20) | NO | PRI | NULL | auto_increment |
| sku | varchar(40) | YES | | NULL | |
| upc | varchar(40) | YES | | NULL | |
| title | text | YES | | NULL | |
| long_desc | mediumtext | YES | | NULL | |
| cat_id | int(11) | YES | | NULL | |
| size | varchar(80) | NO | | NULL | |
| color | varchar(80) | NO | | NULL | |
| model | varchar(80) | YES | | NULL | |
| quantity | int(11) | YES | | NULL | |
| stock_status_id | int(11) | YES | | NULL | |
| image_id | bigint(20) | YES | | NULL | |
| mfg_id | int(11) | YES | | NULL | |
| shipping | decimal(10,2) | YES | | NULL | |
| price | decimal(10,2) | YES | | NULL | |
| points | decimal(10,2) | YES | | NULL | |
| tax_class_id | int(11) | YES | | NULL | |
| weight | decimal(10,2) | YES | | NULL | |
| width | decimal(10,2) | YES | | NULL | |
| length | decimal(10,2) | YES | | NULL | |
| height | decimal(10,2) | YES | | NULL | |
| viewed | int(11) | YES | | NULL | |
| date_used | datetime | YES | | NULL | |
| date_added | datetime | YES | | NULL | |
| date_modified | datetime | YES | | NULL | |
| date_available | datetime | YES | | NULL | |
| sellor_id | int(11) | YES | | NULL | |
| sellor_product_id | varchar(80) | YES | | NULL | |
| state_codes | text | YES | | NULL | |
| ground_ship_only | varchar(1) | YES | | n | |
| adult_sig_req | varchar(1) | YES | | n | |
| no_drop_ship | varchar(1) | YES | | n | |
| priority | int(3) | YES | | NULL | |
| unlimited_stock | varchar(1) | YES | | NULL | |
| reorder_level | int(11) | YES | | NULL | |
| license_key | text | YES | | NULL | |
| store_cost | decimal(10,2) | YES | | NULL | |
| msrp | decimal(10,2) | YES | | NULL | |
| handling_cost | decimal(10,2) | YES | | NULL | |
| min_order_quantity | int(11) | YES | | NULL | |
| max_order_quantity | int(11) | YES | | NULL | |
| weight_major | decimal(10,2) | YES | | NULL | |
| weight_minor | decimal(10,2) | YES | | NULL | |
| warehouse | text | YES | | NULL | |
| shipping_msg | text | YES | | NULL | |
| category_special | varchar(1) | YES | | NULL | |
| homepage_special | varchar(1) | YES | | NULL | |
| shipping_option | text | YES | | NULL | |
| product_type | text | YES | | NULL | |
| related_products | mediumtext | YES | | NULL | |
| product_url | text | YES | | NULL | |
| enable_flag | varchar(1) | YES | | NULL | |
| purchasable | varchar(1) | YES | | NULL | |
| price_msg | text | YES | | NULL | |
| in_stock_msg | text | YES | | NULL | |
| out_of_stock_msg | text | YES | | NULL | |
| variations | text | YES | | NULL | |
| attributes | text | YES | | NULL | |
| delete_flag | varchar(1) | YES | | NULL | |
| short_desc | text | YES | | NULL | |
| cross_ref | text | YES | | NULL | |
| model_no | varchar(40) | YES | | NULL | |
| pkg_qty | int(11) | YES | | 1 | |
| military_spec | varchar(40) | YES | | NULL | |
| grips | varchar(80) | YES | | NULL | |
+--------------------+---------------+------+-----+---------+----------------+
4096 colums не является номером исправления. Фактическое число зависит от размера строки. Подробнее читайте здесь: http://dev.mysql.com/doc/refman/4.1/en/column-count-limit.html – andrew
** Каждая таблица имеет максимальный размер строки 65 535 байт. Этот максимум применяется ко всем механизмам хранения, но у данного механизма могут быть дополнительные ограничения, которые приводят к более низкому эффективному максимальному размеру строки. ** (Тот же источник, что и @andrew, но я не обновлялся, чтобы увидеть его комментарий ^^) – Naruto
Возможно, вы может выжать еще несколько байтов из ваших столбцов, используя более качественные типы. Ваши флаги можно изменить с 'varchar (1)' на 'char (1)' или даже лучше 'tinyint'. Я думаю, что текст и подобные типы arent считаются, поскольку они хранятся в специальном магазине. – ToBe