Пользователь 2479623
Посетитель
Сообщений: 54
Баллов: 8
Авторитет:
0
Рейтинг пользователя:
0
Регистрация: 14.12.2018
Хотим подключить старую БД к новому сайту, но при подключении выходит ошибка:
Mysql query error: (1054) Unknown column ‘main_localization_culture.SHORT_DATE_FORMAT’ in ‘field list’ (400)SEL ECT
`main_localization_culture`.`ID` AS `ID`,
`main_localization_culture`.`CODE` AS `CODE`,
`main_localization_culture`.`NAME` AS `NAME`,
`main_localization_culture`.`FORMAT_DATE` AS `FORMAT_DATE`,
`main_localization_culture`.`FORMAT_DATETIME` AS `FORMAT_DATETIME`,
`main_localization_culture`.`FORMAT_NAME` AS `FORMAT_NAME`,
`main_localization_culture`.`WEEK_START` AS `WEEK_START`,
`main_localization_culture`.`CHARSET` AS `CHARSET`,
`main_localization_culture`.`DIRECTION` AS `DIRECTION`,
`main_localization_culture`.`SHORT_DATE_FORMAT` AS `SHORT_DATE_FORMAT`,
`main_localization_culture`.`MEDIUM_DATE_FORMAT` AS `MEDIUM_DATE_FORMAT`,
`main_localization_culture`.`LONG_DATE_FORMAT` AS `LONG_DATE_FORMAT`,
`main_localization_culture`.`FULL_DATE_FORMAT` AS `FULL_DATE_FORMAT`,
`main_localization_culture`.`DAY_MONTH_FORMAT` AS `DAY_MONTH_FORMAT`,
`main_localization_culture`.`SHORT_TIME_FORMAT` AS `SHORT_TIME_FORMAT`,
`main_localization_culture`.`LONG_TIME_FORMAT` AS `LONG_TIME_FORMAT`,
`main_localization_culture`.`AM_VALUE` AS `AM_VALUE`,
`main_localization_culture`.`PM_VALUE` AS `PM_VALUE`,
`main_localization_culture`.`NUMBER_THOUSANDS_SEPARATOR` AS `NUMBER_THOUSANDS_SEPARATOR`,
`main_localization_culture`.`NUMBER_DECIMAL_SEPARATOR` AS `NUMBER_DECIMAL_SEPARATOR`,
`main_localization_culture`.`NUMBER_DECIMALS` AS `NUMBER_DECIMALS`
FR OM `b_culture` `main_localization_culture`
WHERE `main_localization_culture`.`ID` = 1
/var/www/www-root/data/www/new.textiletorg.ru/bitrix/modules/main/lib/db/mysqliconnection.php:137
#0: BitrixMainDBMysqliConnection->queryInternal(string, array, NULL)
/var/www/www-root/data/www/new.textiletorg.ru/bitrix/modules/main/lib/db/connection.php:330
#1: BitrixMainDBConnection->query(string)
/var/www/www-root/data/www/new.textiletorg.ru/bitrix/modules/main/lib/orm/query/query.php:3304
#2: BitrixMainORMQueryQuery->query(string)
/var/www/www-root/data/www/new.textiletorg.ru/bitrix/modules/main/lib/orm/query/query.php:816
#3: BitrixMainORMQueryQuery->exec()
/var/www/www-root/data/www/new.textiletorg.ru/bitrix/modules/main/lib/orm/data/datamanager.php:500
#4: BitrixMainORMDataDataManager::getList(array)
/var/www/www-root/data/www/new.textiletorg.ru/bitrix/modules/main/lib/orm/data/datamanager.php:361
#5: BitrixMainORMDataDataManager::getByPrimary(array, array)
/var/www/www-root/data/www/new.textiletorg.ru/bitrix/modules/main/include.php:69
#6: require_once(string)
/var/www/www-root/data/www/new.textiletorg.ru/bitrix/modules/main/include/prolog_admin_before.php:31
#7: require_once(string)
/var/www/www-root/data/www/new.textiletorg.ru/bitrix/modules/main/interface/desktop.php:2
#8: require(string)
/var/www/www-root/data/www/new.textiletorg.ru/bitrix/admin/index.php:2
Содержание
- Ошибка БД в «Оплаты»
- How to fix MySQL database ERROR 1054: Unknown column
- Fix ERROR 1054 on a SELECT statement
- Fix ERROR 1054 on an INSERT statement
- Fix ERROR 1054 on an UPDATE statement
- Fix ERROR 1054 on an ALTER TABLE statement
- Conclusion
- Level up your programming skills
- About
- Упражнения по SQL
- четверг, 11 апреля 2019 г.
- MySQL error 1054 и как с ней бороться
- MySQL ошибка 1054 и как с ней бороться
- Способы борьбы
- Переход БУС -> БУС+CRM
Ошибка БД в «Оплаты»
Проблема насколько понимаю произошла после восстановления из бэкапа ядра и файлов (дамп бд не восстанавливался).
Когда пользователь заходит в кабинет (в админку) в заказы, то в поле оплаты видно ошибку MySQL
[BitrixMainDBSqlQueryException] Mysql query error: (1054) Unknown column ‘sale_cashbox_internals_cashbox.OFD_TEST_MODE’ in ‘field list’ (400)
SEL ECT
`sale_cashbox_internals_cashbox`.`ID` AS `ID`,
`sale_cashbox_internals_cashbox`.`NAME` AS `NAME`,
`sale_cashbox_internals_cashbox`.`ACTIVE` AS `ACTIVE`,
`sale_cashbox_internals_cashbox`.`HANDLER` AS `HANDLER`,
`sale_cashbox_internals_cashbox`.`SORT` AS `SORT`,
`sale_cashbox_internals_cashbox`.`DATE_CREATE` AS `DATE_CREATE`,
`sale_cashbox_internals_cashbox`.`DATE_LAST_CHECK` AS `DATE_LAST_CHECK`,
`sale_cashbox_internals_cashbox`.`KKM_ID` AS `KKM_ID`,
`sale_cashbox_internals_cashbox`.`OFD` AS `OFD`,
`sale_cashbox_internals_cashbox`.`NUMBER_KKM` AS `NUMBER_KKM`,
`sale_cashbox_internals_cashbox`.`SETTINGS` AS `SETTINGS`,
`sale_cashbox_internals_cashbox`.`USE_OFFLINE` AS `USE_OFFLINE`,
`sale_cashbox_internals_cashbox`.`OFD_TEST_MODE` AS `OFD_TEST_MODE`,
`sale_cashbox_internals_cashbox`.`ENABLED` AS `ENABLED`
FR OM `b_sale_cashbox` `sale_cashbox_internals_cashbox`
WHERE `sale_cashbox_internals_cashbox`.`ACTIVE` = ‘Y’
AND `sale_cashbox_internals_cashbox`.`ENABLED` = ‘Y’
/home/bitrix/www/bitrix/modules/main/lib/db/mysqliconnection .php:137
#0: BitrixMainDBMysqliConnection->queryInternal(string, array, NULL)
/home/bitrix/www/bitrix/modules/main/lib/db/connection.php:329
#1: BitrixMainDBConnection->query(string)
/home/bitrix/www/bitrix/modules/main/lib/entity/query.php:1924
#2: BitrixMainEntityQuery->query(string)
/home/bitrix/www/bitrix/modules/main/lib/entity/query.php:505
#3: BitrixMainEntityQuery->exec()
/home/bitrix/www/bitrix/modules/main/lib/entity/datamanager.php:256
#4: BitrixMainEntityDataManager::getList(array)
/home/bitrix/www/bitrix/modules/sale/lib/helpers/admin/block s/orderpayment.php:108
#5: BitrixSaleHelpersAdminBlocksOrderPayment::prepareData(object)
/home/bitrix/www/bitrix/modules/sale/lib/helpers/admin/block s/orderpayment.php:234
#6: BitrixSaleHelpersAdminBlocksOrderPayment::getView(object, integer)
/home/bitrix/www/bitrix/modules/sale/admin/order_view.php:430
#7: require_once(string)
/home/bitrix/www/bitrix/admin/sale_order_view.php:2
Пока не совсем пойму с какой стороны за это взяться. (так как что было ранее не знаю). Как понимаю просто созданием таблиц, которых не хватает вопрос вряд ли решится.
Если у кого-то есть идеи и предложения прошу поделиться.
Источник
How to fix MySQL database ERROR 1054: Unknown column
Posted on Oct 02, 2021
When you execute a MySQL statement, you may sometimes encounter ERROR 1054 as shown below:
The ERROR 1054 in MySQL occurs because MySQL can’t find the column or field you specified in your statement.
This error can happen when you execute any valid MySQL statements like a SELECT , INSERT , UPDATE , or ALTER TABLE statement.
This tutorial will help you fix the error by adjusting your SQL statements.
Let’s start with the SELECT statement.
Fix ERROR 1054 on a SELECT statement
To fix the error in your SELECT statement, you need to make sure that the column(s) you specified in your SQL statement actually exists in your database table.
Because the error above says that user_name column is unknown, let’s check the users table and see if the column exists or not.
To help you check the table in question, you can use the DESCRIBE or EXPLAIN statement to show your table information.
The example below shows the output of EXPLAIN statement for the users table:
From the result above, you can see that the users table has no user_name field (column)
Instead, it has the username column without the underscore.
Knowing this, I can adjust my previous SQL query to fix the error:
That should fix the error and your SQL query should show the result set.
Fix ERROR 1054 on an INSERT statement
When you specify column names in an INSERT statement, then the error can be triggered on an INSERT statement because of a wrong column name, just like in the SELECT statement.
First, you need to check that you have the right column names in your statement.
Once you are sure, the next step is to look at the VALUES() you specified in the statement.
For example, when I ran the following statement, I triggered the 1054 error:
The column names above are correct, and the error itself comes from the last entry in the VALUES() function.
The display_name column is of VARCHAR type, so MySQL expects you to insert a VARCHAR value into the column.
But Jack is not a VARCHAR value because it’s not enclosed in a quotation mark. MySQL considers the value to be a column name.
To fix the error above, simply add a quotation mark around the value. You can use both single quotes or double quotes as shown below:
Now the INSERT statement should run without any error.
Fix ERROR 1054 on an UPDATE statement
To fix the 1054 error caused by an UPDATE statement, you need to look into the SET and WHERE clauses of your statement and make sure that the column names are all correct.
You can look at the error message that MySQL gave you to identify where the error is happening.
For example, the following SQL statement:
Produces the following error:
The error clearly points toward the user_name column in the WHERE clause, so you only need to change that.
If the error points toward the field_list as shown below:
Then you need to check on the SET statement and make sure that:
- You have the right column names
- Any string type values are enclosed in a quotation mark
You can also check on the table name that you specified in the UPDATE statement and make sure that you’re operating on the right table.
Next, let’s look at how to fix the error on an ALTER TABLE statement
Fix ERROR 1054 on an ALTER TABLE statement
The error 1054 can also happen on an ALTER TABLE statement.
For example, the following statement tries to rename the displayname column to realname :
Because there’s no displayname column name in the table, MySQL will respond with the ERROR 1054 message.
Conclusion
In short, ERROR 1054 means that MySQL can’t find the column name that you specified in your SQL statements.
It doesn’t matter if you’re writing an INSERT , SELECT , or UPDATE statement.
There are only two things you need to check to fix the error:
- Make sure you’ve specified the right column name in your statement
- Make sure that any value of string type in your statement is surrounded by a quotation mark
You can check on your table structure using the DESCRIBE or EXPLAIN statement to help you match the column name and type with your statement.
And that’s how you fix the MySQL ERROR 1054 caused by your SQL statements.
I hope this tutorial has been useful for you 🙏
Level up your programming skills
I’m sending out an occasional email with the latest programming tutorials. Drop your email in the box below and I’ll send new stuff straight into your inbox!
About
Nathan Sebhastian is a software engineer with a passion for writing tech tutorials.
Learn JavaScript and other web development technology concepts through easy-to-understand explanations written in plain English.
Источник
Упражнения по SQL
SELECT (обучающий этап) задачи по SQL запросам 120 штук, DML 10 шт. Дистанционное обучение языку баз данных SQL. Интерактивные упражнения и тестирование по операторам SELECT,INSERT,UPDATE,DELETE языка SQL. SQL remote education. SQL statements exercises. Подзапросы, Соединение таблиц, Функции SQL, Введение в SQL, Скачать книги по SQL. Команды SQL,CREATE SEQUENCE,CREATE SYNONYM,CREATE USER,CREATE VIEW,Create Table,DROP,GRANT,INSERT,REVOKE,SET ROLE,SET TRANSACTION,SQL ALTER TABLE,SQL команды.
четверг, 11 апреля 2019 г.
MySQL error 1054 и как с ней бороться
MySQL ошибка 1054 и как с ней бороться
- установлен модуль, расчитанный на более новую версию CMS, чем используемая;
- при установке модуля не выполнились операции изменения структуры таблиц;
- после установки сторонних модулей выполнено обновление системы, которое привело к изменению структуры таблиц; при этом модуль не был обновлен на совместимый;
- Из резервной копии восстановлена более старая база данных, а файлы сайта остались в новой версии.
Пример №1: Имеется таблица сотрудников подразделения. Поля: id, фамилия, имя, отчество, год рождения, наличие высшего образования.
Пример №2: Воспользуемся той же таблицей из примера 1. Если попытаться указать мужской пол у сотрудника по имени Власенко (выяснилось его имя и стало ясно, что это мужчина), то результатом будет та же ошибка:
mysql> update employee set sex=1 where surname=’Власенко’;
ERROR 1054 (42S22): Unknown column ‘sex’ in ‘field list’
Способы борьбы
Примеры (во всех примерах идёт работа с таблицей dle_usergroups ):
Ответ сервера:
Invalid SQL: UPDATE dle_usergroups set group_name=’Журналисты’, allow_html=’0′ WHERE ;
MySQL Error: Unknown column ‘allow_html’ in ‘field list’
Error Number: 1054
Решение:
a=dle_usergroups, b=allow_html, c=tinyint, то есть
Для того, чтобы выполнить исправляющий ошибку запрос, необходимо воспользоваться каким-либо mysql-клиентом. В стандартной поставке mysql всегда идёт консольный клиент с названием mysql (в windows mysql.exe). Для того, чтобы подключиться к mysql выполните команду
mysql -hНАЗВАНИЕ_ХОСТА -uИМЯ_ПОЛЬЗОВАТЕЛЯ -pПАРОЛЬ ИМЯ_БАЗЫ_ДАННЫХ,
после чего введите необходимый запрос и точку с запятой после него в появившейся командной строке.
В том случае, если работа происходит на чужом сервере (например, арендуется хостинг) и нет возможности воспользоваться mysql-клиентом из командной строки (не всегда хостеры представляют такую возможность), можно воспользоваться тем инструментом, который предоставляет хостер — например, phpMyAdmin, и в нём ввести нужный sql-запрос.
В то же время наиболее подходящий инструмент для работы с mysql — это MySQL Workbench — разработка создателей mysql с достаточно удобным пользовательским интерфейсом.
Если же нет возможности подключиться к mysql напрямую (например из-за ограничений файрвола), то в ряде случаев возможно удалённо подключиться к MySQL-серверу через SSH-туннель.
Ответ сервера:
Invalid SQL: UPDATE dle_usergroups set group_name=’Журналисты’, allow_subscribe=’0′ WHERE ;
MySQL Error: Unknown column ‘allow_subscribe’ in ‘field list’
Error Number: 1054
Решение: a=dle_usergroups, b=allow_subscribe, c=tinyint, то есть
Oтвет сервера:
InvalidSQL: SELECT faqname, faqparent, displayorder, volatile FROM faq where product IN (», ‘vbulletin’, ‘watermark’, ‘cyb_sfa’, ‘access_post_and_days’);
MySQL Error: Unknown column ‘faqname’ in ‘field list’
Error Number: 1054
Решение: a= faq, b=faqname, c=varchar(255), то есть
Источник
Переход БУС -> БУС+CRM
Цитата |
---|
loki-sim написал: Роман Нейман , если сделаю копию сайта и напишу в поддержку помогут? я не понимаю что там не так ( все перерыл уже |
Да, обращайтесь в тех.поддержку, вам помогут разобраться.
Цитата |
---|
Павел Никифоров написал: Было у кого-нибудь такое что после работы визарда конвертации админка б24 не полностью на шаблоне битрикс24 а прилетает кусок шаблона с интернет магазина ? |
Б24 должен быть на отдельном домене, подробнее про настройку сайтов на разных доменах можете прочитать в доке https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=103&LESSON_ID=287
Из основного:
в поле «Доменное имя» должен быть указан адрес Б24
в поле «Путь к корневой папке веб-сервера для этого сайта» должен быть указан путь к Б24
в поле «URL сервера» должен быть указан адрес Б24
Мастер при создании сайта заполняет эти поля на основании данных из формы.
Подскажите как разместить магазин на шаблоне «Товар по акции» на своем хостинге в редакция БУС+CRM?
Раньше у нас в БУСе был раздел сайты24, теперь его убрали и можно создать только из коробки в CRM, но при указании своего домена мы делегируем его на облачные сервера битрикс24, а они работают в 3 раза медленнее чем наш хостинг. Как можно разместить сайты24 на своем хостинге как это было у нас раньше в БУСе?
«Во время обработки заказов возникли следующие ошибки
29 | Указанный узел не найден |
«
не подскажете что с этим делать ?
Павел Никифоров,это означает, что при сохранении заказа возникла ошибка и контакт/компания для этого заказа не добавились.
Такая же ошибка у вас бы появилась если бы вы попробовали сохранить заказ в админ.панели.
Вы можете вручную отредактировать данный заказ, вероятно, что у вас что-то с местоположением в данном заказе.
В sale 20.0.100 добавится возможность заново запустить конвертацию для проблемных заказов, только предварительно проблему нужно исправить непосредственно в самом заказе.
Роман Нейман, да местоположения проставили в заказах, получается все конвертировалось исправно кроме этих 2х заказов , или все же мастер до конца не отработал ?
почему то после конвертации не появились сайты: http://prntscr.com/qdp9ga
нет даже кнопки «девелоперский сайт», хотя версия модуля последняя (исправилось удалением папок от портала которые поставились во время установки через визард в папку сайта)
Вопросы по новому продукту:
1. Это нормально, что до момента миграции в БУС болтаются активные агенты crm, imopenlines от модулей, которые в списке модуле висят как не установлен. Сейчас их сделал не активными, но нужны ли они сейчас? Верно ли сделал?
2. После ввода ключа нового продукта и перехода на него (пока без запуска миграции) начали ловить каждую неделю кучу ошибок mysql вида:
BitrixMainDBSqlQueryException: Mysql query error: [1054] Unknown column ‘BUF.UF_PHONE_INNER’ in ‘field list’
Mysql query error: (1146) Table ‘sitemanager.b_imconnectors_status’ doesn’t exist
плюс ошибка лицензирования пользователей. Вроде как решилась установкой модуля Интранет в самом БУС (до миграции, напомню).
3. Как в итоге корректно установить для теста Б24, мы делали так:
создали dev сайт с Типом kernel, на него развернули полную копию продакшн сайта, выключили кассы, поставили тип — только для разработки
создали crm сайт с типом link
Получили проблему сноса лицензии на основном сайте (ошибка ключа), ошибки mysql о которых я писал выше.
запустили визард — который по прежнему выдавал ошибку с timeman (а вы говорили пофиксите это), вроде все обновилось, заходим на црм сайт а там куски шаблонов основного сайта templates.
Плюс еще с аномалией столкнулся, в списке сайтов основного сайта появился crm сайт, хотя он должен быть в списках только на дев сайте. Тут дело в том что у нас на дев и продакшне один и тот же id сайта и независимо от базы которая используется — это все ломает? Потмоу что объяснить это не могу. Поддержка пока ваша молчит.
4. Можно ли до процесса миграции установить все модули которые относятся к CRM, ничего при этом не полетит на БУС? просто чувствую что часть ошибок базы из-за того что они не установлены, но почему вообще это все началось если миграция еще не сделана и идут обращения к таблицам модулей, которые не установлены? Дайте четкую инструкцию как починить сайт на БУС (поставить все модули, агенты настроить и т.д.) и не делать миграцию в Б24 пока что (т.к это большой процесс и много бизнес логики надо настроить).
Пока что все какое-то безумно сырое и страшное. И добавьте возможность работать после миграции с старой админкой заказов т.к пока что не все разработчики модулей маркета адаптировали свои решения под новый UI и продукт, а есть важные модули (вроде служб доставок, которых нет в б24 и они не умеют с ним работать).
Источник
Whenever I try to input data into my tblorder I get the error message #1054 — Unknown column ‘FK_Customer_ID’ in ‘field list’.
I have tried breaking my code down and in doing this I found that the error is repeated for FK_Customer_ID and OrderQuantity whereas FK_DVD_ID it will take single data entries. I have tried dropping the table and recreating it, I have dropped the database and recreated it but nothing works. As far as I can tell my code is correct along with my spelling so I’m really stuck.
My tblorder is-
CREATE TABLE tblorder
(
Order_ID INT AUTO_INCREMENT NOT NULL,
FK_Customer_ID INT NOT NULL,
FK_DVD_ID INT NOT NULL,
OrderDate DATETIME NOT NULL DEFAULT NOW(),
OrderQantity INT NOT NULL,
PRIMARY KEY (Order_ID),
FOREIGN KEY (FK_Customer_ID) REFERENCES tblcustomer (Customer_ID),
FOREIGN KEY (FK_DVD_ID) REFERENCES tbldvd (PK_ID)
);
The data I am trying to put in is-
INSERT INTO tblorder
(FK_Customer_ID, FK_DVD_ID, OrderQuantity)
VALUES
(1, 3, 2),
(1, 5, 1),
(1, 10, 4),
(1, 15, 3),
(2, 5, 4),
(2, 17, 3),
(3, 15, 1),
(3, 16, 1),
(3, 17, 1);
FK_Customer_ID is addressing —
CREATE TABLE tblcustomer
(
Customer_ID INT AUTO_INCREMENT NOT NULL,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
Age INT NOT NULL,
PRIMARY KEY (Customer_ID)
);
FK_DVD_ID is addressing —
CREATE TABLE tblDVD
(
PK_ID INT AUTO_INCREMENT NOT NULL,
Title VARCHAR(100) NOT NULL,
DIrector VARCHAR(100) NOT NULL,
Genre VARCHAR(40) NOT NULL,
dvd_Year YEAR NOT NULL,
Price FLOAT(2) NOT NULL,
Quantity INT NOT NULL,
PRIMARY KEY (PK_ID)
);
Any help in fixing the will be greatly appreciated as it will help me with my A2 computing lesson!
When you execute a MySQL statement, you may sometimes encounter ERROR 1054 as shown below:
mysql> SELECT user_name FROM users;
ERROR 1054 (42S22): Unknown column 'user_name' in 'field list'
The ERROR 1054 in MySQL occurs because MySQL can’t find the column or field you specified in your statement.
This error can happen when you execute any valid MySQL statements like a SELECT
, INSERT
, UPDATE
, or ALTER TABLE
statement.
This tutorial will help you fix the error by adjusting your SQL statements.
Let’s start with the SELECT
statement.
Fix ERROR 1054 on a SELECT statement
To fix the error in your SELECT
statement, you need to make sure that the column(s) you specified in your SQL statement actually exists in your database table.
Because the error above says that user_name
column is unknown, let’s check the users
table and see if the column exists or not.
To help you check the table in question, you can use the DESCRIBE
or EXPLAIN
statement to show your table information.
The example below shows the output of EXPLAIN
statement for the users
table:
mysql> EXPLAIN users;
+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| username | varchar(25) | NO | | | |
| display_name | varchar(50) | NO | | | |
| age | int | YES | | NULL | |
| comments | text | YES | | NULL | |
+--------------+-------------+------+-----+---------+-------+
From the result above, you can see that the users
table has no user_name
field (column)
Instead, it has the username
column without the underscore.
Knowing this, I can adjust my previous SQL query to fix the error:
SELECT username FROM users;
That should fix the error and your SQL query should show the result set.
Fix ERROR 1054 on an INSERT statement
When you specify column names in an INSERT
statement, then the error can be triggered on an INSERT
statement because of a wrong column name, just like in the SELECT
statement.
First, you need to check that you have the right column names in your statement.
Once you are sure, the next step is to look at the VALUES()
you specified in the statement.
For example, when I ran the following statement, I triggered the 1054 error:
mysql> INSERT INTO users(username, display_name)
-> VALUES ("jackolantern", Jack);
ERROR 1054 (42S22): Unknown column 'Jack' in 'field list'
The column names above are correct, and the error itself comes from the last entry in the VALUES()
function.
The display_name
column is of VARCHAR
type, so MySQL expects you to insert a VARCHAR
value into the column.
But Jack
is not a VARCHAR
value because it’s not enclosed in a quotation mark. MySQL considers the value to be a column name.
To fix the error above, simply add a quotation mark around the value. You can use both single quotes or double quotes as shown below:
INSERT INTO users(username, display_name)
VALUES ("jackolantern", 'Jack');
Now the INSERT
statement should run without any error.
Fix ERROR 1054 on an UPDATE statement
To fix the 1054 error caused by an UPDATE
statement, you need to look into the SET
and WHERE
clauses of your statement and make sure that the column names are all correct.
You can look at the error message that MySQL gave you to identify where the error is happening.
For example, the following SQL statement:
UPDATE users
SET username = "jackfrost", display_name = "Jack Frost"
WHERE user_name = "jackolantern";
Produces the following error:
ERROR 1054 (42S22): Unknown column 'user_name' in 'where clause'
The error clearly points toward the user_name
column in the WHERE
clause, so you only need to change that.
If the error points toward the field_list
as shown below:
ERROR 1054 (42S22): Unknown column 'displayname' in 'field list'
Then you need to check on the SET
statement and make sure that:
- You have the right column names
- Any
string
type values are enclosed in a quotation mark
You can also check on the table name that you specified in the UPDATE
statement and make sure that you’re operating on the right table.
Next, let’s look at how to fix the error on an ALTER TABLE
statement
Fix ERROR 1054 on an ALTER TABLE statement
The error 1054 can also happen on an ALTER TABLE
statement.
For example, the following statement tries to rename the displayname
column to realname
:
ALTER TABLE users
RENAME COLUMN displayname TO realname;
Because there’s no displayname
column name in the table, MySQL will respond with the ERROR 1054 message.
Conclusion
In short, ERROR 1054 means that MySQL can’t find the column name that you specified in your SQL statements.
It doesn’t matter if you’re writing an INSERT
, SELECT
, or UPDATE
statement.
There are only two things you need to check to fix the error:
- Make sure you’ve specified the right column name in your statement
- Make sure that any value of
string
type in your statement is surrounded by a quotation mark
You can check on your table structure using the DESCRIBE
or EXPLAIN
statement to help you match the column name and type with your statement.
And that’s how you fix the MySQL ERROR 1054 caused by your SQL statements.
I hope this tutorial has been useful for you 🙏
Дата: 25.11.2013
Автор: Даниил Каменский , dkamenskiy (at) yandex (dot) ru
При использовании ряда CMS (например, DLE, vBulletin и др.) временами возникает ошибка mysql с номером 1054.
Текст ошибки Unknown column ‘ИМЯ_СТОЛБЦА’ in ‘field list’ в переводе означает «Неизвестный столбец ‘ИМЯ_СТОЛБЦА’ в списке полей.«. Такая ошибка возникает в том случае, если попытаться выбрать (запрос вида select) или изменить (запрос вида update) данные из столбца, которого не существует. Ошибка чаще всего возникает из-за стoронних модулей. Перечислим несколько возможных причин:
- установлен модуль, расчитанный на более новую версию CMS, чем используемая;
- при установке модуля не выполнились операции изменения структуры таблиц;
- после установки сторонних модулей выполнено обновление системы, которое привело к изменению структуры таблиц; при этом модуль не был обновлен на совместимый;
- Из резервной копии восстановлена более старая база данных, а файлы сайта остались в новой версии.
Пример №1:
Имеется таблица сотрудников подразделения.
Поля: id, фамилия, имя, отчество, год рождения, наличие высшего образования.
create table if not exists employee
(
`id` int(11) NOT NULL auto_increment primary key,
`surname` varchar(255) not null,
`name` varchar(255) not null,
`patronymic` varchar(255) not null,
`year_of_birth` int unsigned default 0,
`higher_education` tinyint unsigned default 0
) ENGINE=MyISAM;
Если обратиться к этой таблице с запросом на выборку несуществующего поля, например пола сотрудника по фамилии Власенко, то результатом будет вышеуказанная ошибка:
mysql> select sex from employee where surname=’Власенко’;
ERROR 1054 (42S22): Unknown column ‘sex’ in ‘field list’
Пример №2:
Воспользуемся той же таблицей из примера 1. Если попытаться указать мужской пол у сотрудника по имени Власенко (выяснилось его имя и стало ясно, что это мужчина), то результатом будет та же ошибка:
mysql> update employee set sex=1 where surname=’Власенко’;
ERROR 1054 (42S22): Unknown column ‘sex’ in ‘field list’
Способы борьбы
Самый корректный способ борьбы в устранении причины ошибки. Например, все обновления сайта рекомендуем выполнять сначала на копии сайта и если ошибок нет, то повторять на рабочем сайте. Если при обновлении возникла ошибка, следует найти способ сделать обновление корректно с учетом версий сторонних модулей.
Если по каким-то причинам корректно избежать ошибки не получилось, можно прибегнуть к симптоматическому лечению, которое состоит в простом добавлении недостающих полей в таблицу.
Запрос на добавление:
ALTER TABLE employee ADD COLUMN sex ENUM(‘male’, ‘female’) DEFAULT ‘female’
Что в переводе означает «Изменить таблицу employee, добавив столбец `пол`, назначив ему тип перечисление(мужской/женский) по умолчанию мужской».
При таком добавлении столбца необходимо учитывать, что у всех записей в таблице в столбце sex появится значение по умолчанию. Если добавлять такой столбец как пол (который не может быть равен null и обязательно присутствует у каждого человека), то просто необходимо сразу же
после этого прописать нужное значение во все записи в таблице. В данном случае с добавлением столбца «пол» нужно будет поменять значение на male у всех сотрудников мужского пола.
Трудности могут возникнуть из-за того, что часто нужно самостоятельно определять тип добавляемого столбца.
Примеры:
a) Запрос:
SELECT faqname, faqparent, displayorder, volatile FROM faq where product
IN (», ‘vbulletin’, ‘watermark’, ‘cyb_sfa’, ‘access_post_and_days’);
Ответ сервера:
Invalid SQL: SELECT faqname, faqparent, displayorder, volatile FROM faq where
product IN (», ‘vbulletin’, ‘watermark’, ‘cyb_sfa’, ‘access_post_and_days’);
MySQL Error: Unknown column ‘faqname’ in ‘field list’
Error Number: 1054
Отсутствует столбец faqname, добавим его. Логика подсказывает, что если имя — то это скорее всего символы, а не целое число или тип datetime. Количество символов заранее, конечно, неизвестно, но редко имя бывает больше чем 255 символов. Поэтому добавим столбец faqname с указанием типа varchar(255):
ALTER TABLE faq ADD faqname varchar(255)
б) Запроc:
UPDATE dle_usergroups set group_name=‘Журналисты’, allow_html=‘0’ WHERE id=‘3’;
Ответ сервера:
Invalid SQL: UPDATE dle_usergroups set group_name=’Журналисты’, allow_html=’0′ WHERE id=’3′;
MySQL Error: Unknown column ‘allow_html’ in ‘field list’
Error Number: 1054
Отсутствует столбец allow_html, добавим его. Смотрим на то значение, которое туда пытается вставить запрос, видим 0. Скорее всего этот столбец может принимать два значения — разрешить/не разрешить (1 или 0), то есть однобайтное целое число вполне подойдёт. Поэтому добавим столбец allow_html с указанием типа tinyint:
ALTER TABLE faq ADD allow_html tinyint
Таким образом можно составить шаблон для «лечения» таких проблем: ALTER TABLE [a] ADD [b] [c];, где
a — имя таблицы, откуда выбираются (или где обновляются) данные;
b — имя столбца, который нужно добавить;
c — тип данных.
Примеры (во всех примерах идёт работа с таблицей dle_usergroups):
1) Запрос:
UPDATE dle_usergroups set group_name=‘Журналисты’, allow_html=‘0’ WHERE id=‘3’;
Ответ сервера:
Invalid SQL: UPDATE dle_usergroups set group_name=’Журналисты’, allow_html=’0′ WHERE id=’3′;
MySQL Error: Unknown column ‘allow_html’ in ‘field list’
Error Number: 1054
Решение:
a=dle_usergroups, b=allow_html, c=tinyint, то есть
ALTER TABLE dle_usergroups ADD allow_html tinyint
Для того, чтобы выполнить исправляющий ошибку запрос, необходимо воспользоваться каким-либо mysql-клиентом. В стандартной поставке mysql всегда идёт консольный клиент с названием mysql (в windows mysql.exe). Для того, чтобы подключиться к mysql выполните команду
mysql -hНАЗВАНИЕ_ХОСТА -uИМЯ_ПОЛЬЗОВАТЕЛЯ -pПАРОЛЬ ИМЯ_БАЗЫ_ДАННЫХ,
после чего введите необходимый запрос и точку с запятой после него в появившейся командной строке.
В том случае, если работа происходит на чужом сервере (например, арендуется хостинг) и нет возможности воспользоваться mysql-клиентом из командной строки (не всегда хостеры представляют такую возможность), можно воспользоваться тем инструментом, который предоставляет хостер — например, phpMyAdmin, и в нём ввести нужный sql-запрос.
В то же время наиболее подходящий инструмент для работы с mysql — это MySQL Workbench — разработка создателей mysql с достаточно удобным пользовательским интерфейсом.
Если же нет возможности подключиться к mysql напрямую (например из-за ограничений файрвола), то в ряде случаев возможно удалённо подключиться к MySQL-серверу через SSH-туннель.
2) Запрос:
UPDATE dle_usergroups set group_name=‘Журналисты’, allow_subscribe=‘0’ WHERE id=‘3’;
Ответ сервера:
Invalid SQL: UPDATE dle_usergroups set group_name=’Журналисты’, allow_subscribe=’0′ WHERE id=’3′;
MySQL Error: Unknown column ‘allow_subscribe’ in ‘field list’
Error Number: 1054
Решение:
a=dle_usergroups, b=allow_subscribe, c=tinyint, то есть
ALTER TABLE dle_usergroups ADD allow_subscribe tinyint
3) Запрос:
SELECT faqname, faqparent, displayorder, volatile FROM faq where product IN (», ‘vbulletin’, ‘watermark’, ‘cyb_sfa’, ‘access_post_and_days’);
Oтвет сервера:
InvalidSQL: SELECT faqname, faqparent, displayorder, volatile FROM faq where product IN (», ‘vbulletin’, ‘watermark’, ‘cyb_sfa’, ‘access_post_and_days’);
MySQL Error: Unknown column ‘faqname’ in ‘field list’
Error Number: 1054
Решение:
a= faq, b=faqname, c=varchar(255), то есть
ALTER TABLE faq ADD faqname varchar(255)
Результат
В результате добавления необходимого поля ошибка должна исчезнуть. Однако, существует вероятность того, что в структуре таблиц не хватало несколько столбцов: в этом случае ошибка повторится с указанием другого имени столбца, для которого потребуется повторить процедуру. Помните, что добавление незаполненных столбцов угаданного типа не всегда будет соответствовать задуманной логике приложения и может нарушить часть функциональности.
Источник: webew.ru
Дата публикации: 25.11.2013
© Все права на данную статью принадлежат порталу SQLInfo.ru. Перепечатка в интернет-изданиях разрешается только с указанием автора и прямой ссылки на оригинальную статью. Перепечатка в бумажных изданиях допускается только с разрешения редакции.
6 / 6 / 5 Регистрация: 29.01.2015 Сообщений: 455 |
|
1 |
|
Ошибка базы данных01.09.2020, 15:42. Показов 3207. Ответов 1
Здравствуйте, хочу добавить новую страницу, но появляется ошибка: Код [BitrixMainDBSqlQueryException] Mysql query error: (1054) Unknown column 'landing_internals_hook_data.PUBLIC' in 'where clause' (400) SELECT `landing_internals_hook_data`.`ID` AS `ID`, `landing_internals_hook_data`.`HOOK` AS `HOOK`, `landing_internals_hook_data`.`CODE` AS `CODE`, `landing_internals_hook_data`.`VALUE` AS `VALUE` FROM `b_landing_hook_data` `landing_internals_hook_data` WHERE `landing_internals_hook_data`.`ENTITY_ID` = 7 AND `landing_internals_hook_data`.`ENTITY_TYPE` = 'S' AND `landing_internals_hook_data`.`PUBLIC` = 'N' ORDER BY `ID` ASC /var/www/korma/data/www/dobro.vet/bitrix/modules/main/lib/db/mysqliconnection.php:137 #0: BitrixMainDBMysqliConnection->queryInternal(string, array, NULL) /var/www/korma/data/www/dobro.vet/bitrix/modules/main/lib/db/connection.php:330 #1: BitrixMainDBConnection->query(string) /var/www/korma/data/www/dobro.vet/bitrix/modules/main/lib/orm/query/query.php:3357 #2: BitrixMainORMQueryQuery->query(string) /var/www/korma/data/www/dobro.vet/bitrix/modules/main/lib/orm/query/query.php:825 #3: BitrixMainORMQueryQuery->exec() /var/www/korma/data/www/dobro.vet/bitrix/modules/main/lib/orm/data/datamanager.php:500 #4: BitrixMainORMDataDataManager::getList(array) /var/www/korma/data/www/dobro.vet/bitrix/modules/landing/lib/hook.php:86 #5: BitrixLandingHook::getData(integer, string) /var/www/korma/data/www/dobro.vet/bitrix/modules/landing/lib/hook.php:184 #6: BitrixLandingHook::getList(integer, string) /var/www/korma/data/www/dobro.vet/bitrix/modules/landing/lib/hook.php:235 #7: BitrixLandingHook::getForSite(integer) /var/www/korma/data/www/dobro.vet/bitrix/modules/landing/lib/site.php:149 #8: BitrixLandingSite::getHooks(integer) /var/www/korma/data/www/dobro.vet/bitrix/components/bitrix/landing.demo_preview/class.php:109 #9: LandingSiteDemoPreviewComponent->executeComponent() /var/www/korma/data/www/dobro.vet/bitrix/modules/main/classes/general/component.php:656 #10: CBitrixComponent->includeComponent(string, array, NULL, boolean) /var/www/korma/data/www/dobro.vet/bitrix/modules/main/classes/general/main.php:1039 #11: CAllMain->IncludeComponent(string, string, array, NULL) /var/www/korma/data/www/dobro.vet/bitrix/modules/landing/admin/site.php:294 #12: require(string) /var/www/korma/data/www/dobro.vet/bitrix/admin/landing_site.php:2
__________________
0 |
1823 / 1088 / 221 Регистрация: 16.03.2008 Сообщений: 5,105 Записей в блоге: 2 |
|
04.09.2020, 10:18 |
2 |
Проведите проверку Админка — Настройки — Инструменты — Проверка системы. похоже У вас нарушение структуры БД
0 |
Автор: Даниил Каменский , dkamenskiy (at) yandex (dot) ru
При использовании ряда CMS (например, DLE, vBulletin и др.) временами возникает ошибка mysql с номером 1054.
Текст ошибки Unknown column ‘ИМЯ_СТОЛБЦА’ in ‘field list’ в переводе означает «Неизвестный столбец ‘ИМЯ_СТОЛБЦА’ в списке полей.«. Такая ошибка возникает в том случае, если попытаться выбрать (запрос вида select) или изменить (запрос вида update) данные из столбца, которого не существует. Ошибка чаще всего возникает из-за стoронних модулей. Перечислим несколько возможных причин:
- установлен модуль, расчитанный на более новую версию CMS, чем используемая;
- при установке модуля не выполнились операции изменения структуры таблиц;
- после установки сторонних модулей выполнено обновление системы, которое привело к изменению структуры таблиц; при этом модуль не был обновлен на совместимый;
- Из резервной копии восстановлена более старая база данных, а файлы сайта остались в новой версии.
Пример №1: Имеется таблица сотрудников подразделения. Поля: id, фамилия, имя, отчество, год рождения, наличие высшего образования.
create table if not exists employee
(
`id` int(11) NOT NULL auto_increment primary key,
`surname` varchar(255) not null,
`name` varchar(255) not null,
`patronymic` varchar(255) not null,
`year_of_birth` int unsigned default 0,
`higher_education` tinyint unsigned default 0
) ENGINE=MyISAM;
Если обратиться к этой таблице с запросом на выборку несуществующего поля, например пола сотрудника по фамилии Власенко, то результатом будет вышеуказанная ошибка:
mysql> select sex from employee where surname=’Власенко’;
ERROR 1054 (42S22): Unknown column ‘sex’ in ‘field list’
Пример №2: Воспользуемся той же таблицей из примера 1. Если попытаться указать мужской пол у сотрудника по имени Власенко (выяснилось его имя и стало ясно, что это мужчина), то результатом будет та же ошибка:
mysql> update employee set sex=1 where surname=’Власенко’;
ERROR 1054 (42S22): Unknown column ‘sex’ in ‘field list’
Способы борьбы
Самый корректный способ борьбы в устранении причины ошибки. Например, все обновления сайта рекомендуем выполнять сначала на копии сайта и если ошибок нет, то повторять на рабочем сайте. Если при обновлении возникла ошибка, следует найти способ сделать обновление корректно с учетом версий сторонних модулей.
Если по каким-то причинам корректно избежать ошибки не получилось, можно прибегнуть к симптоматическому лечению, которое состоит в простом добавлении недостающих полей в таблицу.
Запрос на добавление:
ALTER TABLE employee ADD COLUMN sex ENUM(‘male’, ‘female’) DEFAULT ‘female’
Что в переводе означает «Изменить таблицу employee, добавив столбец `пол`, назначив ему тип перечисление(мужской/женский) по умолчанию мужской».
При таком добавлении столбца необходимо учитывать, что у всех записей в таблице в столбце sex появится значение по умолчанию. Если добавлять такой столбец как пол (который не может быть равен null и обязательно присутствует у каждого человека), то просто необходимо сразу же после этого прописать нужное значение во все записи в таблице. В данном случае с добавлением столбца «пол» нужно будет поменять значение на male у всех сотрудников мужского пола.
Трудности могут возникнуть из-за того, что часто нужно самостоятельно определять тип добавляемого столбца.
Примеры:
a) Запрос:
SELECT faqname, faqparent, displayorder, volatile FROM faq where product
IN (», ‘vbulletin’, ‘watermark’, ‘cyb_sfa’, ‘access_post_and_days’);
Ответ сервера:
Invalid SQL: SELECT faqname, faqparent, displayorder, volatile FROM faq where product IN (», ‘vbulletin’, ‘watermark’, ‘cyb_sfa’, ‘access_post_and_days’);
MySQL Error: Unknown column ‘faqname’ in ‘field list’
Error Number: 1054
Отсутствует столбец faqname, добавим его. Логика подсказывает, что если имя — то это скорее всего символы, а не целое число или тип datetime. Количество символов заранее, конечно, неизвестно, но редко имя бывает больше чем 255 символов. Поэтому добавим столбец faqname с указанием типа varchar(255):
ALTER TABLE faq ADD faqname varchar(255)
б) Запроc:
UPDATE dle_usergroups set group_name=‘Журналисты’, allow_html=‘0’ WHERE id=‘3’;
Ответ сервера:
Invalid SQL: UPDATE dle_usergroups set group_name=’Журналисты’, allow_html=’0′ WHERE id=’3′;
MySQL Error: Unknown column ‘allow_html’ in ‘field list’
Error Number: 1054
Отсутствует столбец allow_html, добавим его. Смотрим на то значение, которое туда пытается вставить запрос, видим 0. Скорее всего этот столбец может принимать два значения — разрешить/не разрешить (1 или 0), то есть однобайтное целое число вполне подойдёт. Поэтому добавим столбец allow_html с указанием типа tinyint:
ALTER TABLE faq ADD allow_html tinyint
Таким образом можно составить шаблон для «лечения» таких проблем: ALTER TABLE [a] ADD [b] [c];, где
a — имя таблицы, откуда выбираются (или где обновляются) данные;
b — имя столбца, который нужно добавить;
c — тип данных.
Примеры (во всех примерах идёт работа с таблицей dle_usergroups):
1) Запрос:
UPDATE dle_usergroups set group_name=‘Журналисты’, allow_html=‘0’ WHERE id=‘3’;
Ответ сервера:
Invalid SQL: UPDATE dle_usergroups set group_name=’Журналисты’, allow_html=’0′ WHERE id=’3′;
MySQL Error: Unknown column ‘allow_html’ in ‘field list’
Error Number: 1054
Решение:
a=dle_usergroups, b=allow_html, c=tinyint, то есть
ALTER TABLE dle_usergroups ADD allow_html tinyint
Для того, чтобы выполнить исправляющий ошибку запрос, необходимо воспользоваться каким-либо mysql-клиентом. В стандартной поставке mysql всегда идёт консольный клиент с названием mysql (в windows mysql.exe). Для того, чтобы подключиться к mysql выполните команду
mysql -hНАЗВАНИЕ_ХОСТА -uИМЯ_ПОЛЬЗОВАТЕЛЯ -pПАРОЛЬ ИМЯ_БАЗЫ_ДАННЫХ,
после чего введите необходимый запрос и точку с запятой после него в появившейся командной строке.
В том случае, если работа происходит на чужом сервере (например, арендуется хостинг) и нет возможности воспользоваться mysql-клиентом из командной строки (не всегда хостеры представляют такую возможность), можно воспользоваться тем инструментом, который предоставляет хостер — например, phpMyAdmin, и в нём ввести нужный sql-запрос.
В то же время наиболее подходящий инструмент для работы с mysql — это MySQL Workbench — разработка создателей mysql с достаточно удобным пользовательским интерфейсом.
Если же нет возможности подключиться к mysql напрямую (например из-за ограничений файрвола), то в ряде случаев возможно удалённо подключиться к MySQL-серверу через SSH-туннель.
2) Запрос:
UPDATE dle_usergroups set group_name=‘Журналисты’, allow_subscribe=‘0’ WHERE id=‘3’;
Ответ сервера:
Invalid SQL: UPDATE dle_usergroups set group_name=’Журналисты’, allow_subscribe=’0′ WHERE id=’3′;
MySQL Error: Unknown column ‘allow_subscribe’ in ‘field list’
Error Number: 1054
Решение: a=dle_usergroups, b=allow_subscribe, c=tinyint, то есть
ALTER TABLE dle_usergroups ADD allow_subscribe tinyint
3) Запрос:
SELECT faqname, faqparent, displayorder, volatile FROM faq where product IN (», ‘vbulletin’, ‘watermark’, ‘cyb_sfa’, ‘access_post_and_days’);
Oтвет сервера:
InvalidSQL: SELECT faqname, faqparent, displayorder, volatile FROM faq where product IN (», ‘vbulletin’, ‘watermark’, ‘cyb_sfa’, ‘access_post_and_days’);
MySQL Error: Unknown column ‘faqname’ in ‘field list’
Error Number: 1054
Решение: a= faq, b=faqname, c=varchar(255), то есть
ALTER TABLE faq ADD faqname varchar(255)
Результат
В результате добавления необходимого поля ошибка должна исчезнуть. Однако, существует вероятность того, что в структуре таблиц не хватало несколько столбцов: в этом случае ошибка повторится с указанием другого имени столбца, для которого потребуется повторить процедуру. Помните, что добавление незаполненных столбцов угаданного типа не всегда будет соответствовать задуманной логике приложения и может нарушить часть функциональности.