Меню

Ошибка 1054 mysql workbench

При использовании ряда 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.
Перепечатка в интернет-изданиях разрешается только с указанием автора
и прямой ссылки на оригинальную статью. Перепечатка в печатных
изданиях допускается только с разрешения редакции.

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. Перепечатка в интернет-изданиях разрешается только с указанием автора и прямой ссылки на оригинальную статью. Перепечатка в бумажных изданиях допускается только с разрешения редакции.

Содержание

  1. How to fix MySQL database ERROR 1054: Unknown column
  2. Fix ERROR 1054 on a SELECT statement
  3. Fix ERROR 1054 on an INSERT statement
  4. Fix ERROR 1054 on an UPDATE statement
  5. Fix ERROR 1054 on an ALTER TABLE statement
  6. Conclusion
  7. Level up your programming skills
  8. About
  9. How we deal with MySQL error code 1054
  10. Why does MySQL error code 1054 occur
  11. How we fix MySQL error code 1054
  12. Conclusion
  13. PREVENT YOUR SERVER FROM CRASHING!
  14. Упражнения по SQL
  15. четверг, 11 апреля 2019 г.
  16. MySQL error 1054 и как с ней бороться
  17. MySQL ошибка 1054 и как с ней бороться
  18. Способы борьбы

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.

Источник

How we deal with MySQL error code 1054

MySQL error code 1054 occurs if we forget to add single quotes while inserting a varchar value or due to any missing column.

Here at Bobcares, we have seen several causes for this error while troubleshooting MySQL issues as part of our Server Management Services for web hosts and online service providers.

Today we’ll take a look at the cause for this error and how to fix it.

Why does MySQL error code 1054 occur

Now let’s take a look at what causes this error message to occur. There are different reasons for this error to occur and they are:

1. A table having any missing column

2. Forgetting to add single quotes while inserting a varchar value

3. If there is any mismatch between the CREATE_TABLE statements and UPDATE

4. If the column name in the CREATE TABLE and the UPDATE are not the same. In cases, they might look the same but there may be unprintable characters or they may have Unicode characters that look the same but actually are different code points.

How we fix MySQL error code 1054

This error can occur due to many reasons and also the solution will differ according to them. Here are some of the solutions that our Engineers provide to our customers.

1. The table structure is very crucial for understanding and fixing the error. To do that, we check the database of the working site on the localhost. Then with phpMyAdmin, we will export the only table that has a problem on the live site.

For that, we navigate to the database of localhost site >> click on Export tab >> select the table to export and click Go.

We then save the file and open it using the code editor. At the very beginning, the table structure will be described as shown below in the image.

Then we Construct the ALTER SQL query which will add the missing column in the database table on our live site.

For that, we use the below query.

ALTER TABLE ADD AFTER

You can also see the structure of the table by clicking on the structure tab in phpMyAdmin.

2. We update the single quotes around the string value to fix this error if it is missing.

3. We also make sure that there are no unnecessary spaces or characters in the table name mentioned

4. If necessary we also alter the column name so as to contain only printable ASCII characters

[Need any further assistance in fixing MySQL errors? – We’re available 24*7]

Conclusion

In short, This error can arise due to many reasons that include any missing column, missing single quotes while inserting a varchar value, CREATE_TABLE, and UPDATE statements not being identical and so on. Today, we saw the resolution to this MySQL error.

PREVENT YOUR SERVER FROM CRASHING!

Never again lose customers to poor server speed! Let us help you.

Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.

Источник

Упражнения по 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), то есть

Источник

MySQL error code 1054 occurs if we forget to add single quotes while inserting a varchar value or due to any missing column.

Here at Bobcares, we have seen several causes for this error while troubleshooting MySQL issues as part of our Server Management Services for web hosts and online service providers.

Today we’ll take a look at the cause for this error and how to fix it.

Why does MySQL error code 1054 occur

Now let’s take a look at what causes this error message to occur. There are different reasons for this error to occur and they are:

1. A table having any missing column

2. Forgetting to add single quotes while inserting a varchar value

3. If there is any mismatch between the CREATE_TABLE statements and UPDATE

4. If the column name in the CREATE TABLE and the UPDATE are not the same. In cases, they might look the same but there may be unprintable characters or they may have Unicode characters that look the same but actually are different code points.

How we fix MySQL error code 1054

This error can occur due to many reasons and also the solution will differ according to them. Here are some of the solutions that our Engineers provide to our customers.

1. The table structure is very crucial for understanding and fixing the error. To do that, we check the database of the working site on the localhost. Then with phpMyAdmin, we will export the only table that has a problem on the live site.

For that, we navigate to the database of localhost site >> click on Export tab >> select the table to export and click Go.

We then save the file and open it using the code editor. At the very beginning, the table structure will be described as shown below in the image.

MySQL error code 1054

Then we Construct the ALTER SQL query which will add the missing column in the database table on our live site.

For that, we use the below query.

ALTER TABLE <table_name> ADD <column_name> <datatype> AFTER <after_column>

You can also see the structure of the table by clicking on the structure tab in phpMyAdmin.

2. We update the single quotes around the string value to fix this error if it is missing.

3. We also make sure that there are no unnecessary spaces or characters in the table name mentioned

4. If necessary we also alter the column name so as to contain only printable ASCII characters

[Need any further assistance in fixing MySQL errors? – We’re available 24*7]

Conclusion

In short, This error can arise due to many reasons that include any missing column, missing single quotes while inserting a varchar value, CREATE_TABLE, and UPDATE statements not being identical and so on. Today, we saw the resolution to this MySQL error.

PREVENT YOUR SERVER FROM CRASHING!

Never again lose customers to poor server speed! Let us help you.

Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.

GET STARTED

var google_conversion_label = «owonCMyG5nEQ0aD71QM»;

volukrem

0 / 0 / 0

Регистрация: 08.11.2019

Сообщений: 7

1

11.04.2020, 13:22. Показов 5063. Ответов 10

Метки mysql, workbench, бд (Все метки)


Добрый день!
Занимаюсь тут курсовой работой по БД (к «Отлично» не стремлюсь). Предметной областью выбрана налоговая служба.
Работаю с MySQL и Workbench.
При наполнении БД возникает такая ошибка:

replace into `kursovaya`.`Журнал Регистраций Заявлений` (`Номер Заявления`, `Дата обращения`, `Заявитель_ИНН`, `Услуга_Код Услуги`, `Исполнитель_Табельный Номер`) VALUES (511, ‘2020-02-01’, ‘432012011’, ‘01101’, ‘2014’), (512, ‘2020-02-01’, ‘051049584’, ‘01102’, ‘2434’), (513, ‘2020-02-01’, ‘543858324’, ‘01103’, ‘1994’), (514, ‘2020-02-01’, ‘954313441’, ‘01104’, ‘3503’), (515, ‘2020-02-01’, ‘654784372’, ‘01105’, ‘2030’) Error Code: 1054. Unknown column ‘Исполнитель_Табельный Номер’ in ‘field list’

Также прикрепил физическую модель.
Как мне грамотно наполнить данную БД? Заранее спасибо.

MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;
CREATE TABLE IF NOT EXISTS `mydb`.`Заявитель` (
  `ИНН` INT NOT NULL,
  `ФИО` VARCHAR(100) NOT NULL,
  `Адрес` VARCHAR(100) NOT NULL,
  `Серия-Номер` INT NOT NULL,
  `Дата Рождения` DATE NOT NULL,
  PRIMARY KEY (`ИНН`),
  UNIQUE INDEX `ИНН_UNIQUE` (`ИНН` ASC) VISIBLE)
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`Журнал Регистраций Заявлений` (
  `Номер Заявления` INT NOT NULL,
  `Дата Обращения` DATE NOT NULL,
  `Заявитель_ИНН` INT NOT NULL,
  `Услуга_Код Услуги` INT NOT NULL,
  `Исполнитель_Табельный Номер` INT NOT NULL,
  PRIMARY KEY (`Номер Заявления`, `Заявитель_ИНН`, `Услуга_Код Услуги`),
  UNIQUE INDEX `Номер Заявление_UNIQUE` (`Номер Заявления` ASC) VISIBLE)
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`Услуга` (
  `Код Услуги` INT NOT NULL,
  `Наименование` VARCHAR(100) NOT NULL,
  `Срок Выолнения` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`Код Услуги`),
  UNIQUE INDEX `Код Услуги_UNIQUE` (`Код Услуги` ASC) VISIBLE)
ENGINE = InnoDB;
 
CREATE TABLE IF NOT EXISTS `mydb`.`Исполнитель` (
  `Табельньый Номер` INT NOT NULL,
  `Полное Имя` VARCHAR(100) NOT NULL,
  `Должность` VARCHAR(100) NOT NULL,
  PRIMARY KEY (`Табельньый Номер`),
  UNIQUE INDEX `Табельньый Номер_UNIQUE` (`Табельньый Номер` ASC) VISIBLE)
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`Документ` (
  `Номер Документа` INT NOT NULL,
  `Дата Документа` DATE NOT NULL,
  `Документ` VARCHAR(100) NOT NULL,
  `Журнал Регистраций Заявлений_Номер Заявления` INT NOT NULL,
  `Журнал Регистраций Заявлений_Заявитель_ИНН` INT NOT NULL,
  `Журнал Регистраций Заявлений_Услуга_Код Услуги` INT NOT NULL,
  PRIMARY KEY (`Номер Документа`, `Журнал Регистраций Заявлений_Номер Заявления`, `Журнал Регистраций Заявлений_Заявитель_ИНН`, `Журнал Регистраций Заявлений_Услуга_Код Услуги`),
  UNIQUE INDEX `Номер Документа_UNIQUE` (`Номер Документа` ASC) VISIBLE)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
 
SET FOREIGN_KEY_CHECKS=0;
 
replace into `kursovaya`.`Журнал Регистраций Заявлений` (`Номер Заявления`, `Дата обращения`, `Заявитель_ИНН`, `Услуга_Код Услуги`, `Исполнитель_Табельный Номер`) VALUES 
(511, '2020-02-01', '432012011', '01101', '2014'),
(512, '2020-02-01', '051049584', '01102', '2434'),
(513, '2020-02-01', '543858324', '01103', '1994'),
(514, '2020-02-01', '954313441', '01104', '3503'),
(515, '2020-02-01', '654784372', '01105', '2030'); 
replace into `kursovaya`.`Заявитель` (`ИНН`, `ФИО`, `Адрес`, `Серия-Номер`, `Дата Рождения`) VALUES
(432012011, 'Севастьянова Ольга Вячеславовна', 'Московская 128, кв.5', '43154345', '1994.02.10'),
(051049584, 'Смирнов Виктор Анатольевич', 'Комсомольская 40, кв. 145', '21341321', '1959.10.31'),
(543858324, 'Бронская Алла Вадимовна', 'Новодевичья 15 кв. 94', '10594313', '1991.01.17'),
(954313441, 'Сухоруков Игорь Степанович', 'Буханкина 7', '87451431', '1977.04.02'),
(654784372, 'Старых Сергей Семёнович', 'Московская 61', '43256153', '1981.02.14');
replace into `kursovaya`.`Услуга` (`Код услуги`, `Наименование`, `Срок Выполнения`) VALUES
(01101, 'Регистрация юридического лица', `10 рабочих дней`),
(01102, 'Справка выдачи об отсутствии задолженности', `7 рабочих дней`),
(01103, 'Выдача уведомления об использовании имущественного вычета', `10 рабочих дней`),
(01104, 'Предоставление льготы по имущественному налогу', `20 рабочих дней`),
(01105, 'Выдача патента', `15 рабочих дней`);
replace into `kursovaya`.`Документ` (`Номер Документа`, `Дата Документа`, `Документ`, `Журнал Регистраций Заявлений_Номер Заявления`, `Журнал Регистраций Заявлений_Заявитель`, `Журнал Регистраций Заявлений_Услуга_Код Услуги`, `Журнал Регистраций Заявлений_Исполнитель_Табельный Номер`) VALUES
(02101, '2020-02-06', 'Свидетельство о регистрации юридического лица', '511', '432012011', '01101', '2014'),
(02102, '2020-02-06', 'Справка об отсутствии задолженности', '512', '051049584', '01102', '2434'),
(02103, '2020-02-06', 'Уведомление об использовании имущественного вычета', '513', '543858324', '01103', '1994'),
(02104, '2020-02-06', 'Льгота по имущественному налогу', '514', '954313441', '01104', '3503'),
(02105, '2020-02-06', 'Патент', '515', '654784372', '01105', '2030');
replace into `kursovaya`.`Исполнитель` (`Табельный Номер`, `Полное Имя`, `Должность`) VALUES
(2014, 'Сергеева Ольга Николаевна', 'Государственный налоговый инспектор'),
(2434, 'Хромаев Игорь Андреевич', 'Государственный налоговый инспектор'),
(1994, 'Булавкина Надежда Витальевна', 'Старший государственный налоговый инспектор'),
(3503, 'Симонин Пётр Алексеевич', 'Старший государственный налоговый инспектор'),
(2030, 'Борзых Виктория Владимировна', 'Главный государственный налоговый инспектор');

Миниатюры

Ошибка 1054 при наполнении таблицы
 

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



490 / 167 / 98

Регистрация: 23.01.2020

Сообщений: 324

11.04.2020, 16:24

2

volukrem, Здравствуйте, вы допустили ошибку в имени поля))) у вас в запросе `Исполнитель_Табельный Номер` в таблице `Журнал Регистраций Заявлений` и посмотрите как у вас записано в самой базе, даже на картинке гляньте) `Исполнитель_Табельньый Номер`у вас в базе, поэтому происходит конфликт)



1



0 / 0 / 0

Регистрация: 08.11.2019

Сообщений: 7

11.04.2020, 20:35

 [ТС]

3

Спасибо за замечание! Через Ctrl + F проверил все неточности с табельным номером и исправил их, но всё равно ошибка появляется.



0



490 / 167 / 98

Регистрация: 23.01.2020

Сообщений: 324

11.04.2020, 20:53

4

volukrem, а какая на этот раз ошибка?



0



0 / 0 / 0

Регистрация: 08.11.2019

Сообщений: 7

11.04.2020, 21:59

 [ТС]

5

Всё та же. 1054.

Добавлено через 12 минут
Если методом исключения перебирать скрипт заполнения БД, то без ошибок заполняется только сущность «Заявитель». Оно и не удивительно, т.к она не взаимодействует с другими сущностями (смотря на ту же схему).



0



20 / 21 / 2

Регистрация: 09.04.2020

Сообщений: 125

12.04.2020, 00:16

6

Цитата
Сообщение от volukrem
Посмотреть сообщение

Всё та же. 1054.

Эта ошибка сигнализирует об отсвутствии колонки, указанной в запросе. Вот же:

Цитата
Сообщение от volukrem
Посмотреть сообщение

Error Code: 1054. Unknown column ‘Исполнитель_Табельный Номер’ in ‘field list’

просто теперь у вас ошибка в описании какой-то другой колонки.
Офф: есть две вещи, которые я не понял. Если хотите — объясните, если нет, то нет:
1. Для чего вы изменяете переменные бд на период создания таблиц и восстанавливаете их потом в исходное состояние?
2. Зачем вы описываете таблицы и колонки кириллицей? Можете не следовать моему совету, но я бы советовал пересоздать таблицы на латинице, вместо пробелов использовать подчеркивание.

Добавлено через 7 минут
volukrem, вы работаете с бд `mydb`, а добавить записи пытаетесь в бд `kursovaya`



1



Невнимательный

2329 / 681 / 251

Регистрация: 08.02.2013

Сообщений: 4,746

Записей в блоге: 2

12.04.2020, 00:21

7

Цитата
Сообщение от volukrem
Посмотреть сообщение

CREATE TABLE IF NOT EXISTS `mydb`.`Журнал Регистраций Заявлений`

Цитата
Сообщение от volukrem
Посмотреть сообщение

replace into `kursovaya`.`Журнал Регистраций Заявлений`

Имена базы данных разные…
Или, если из-за этого , возможно там другая таблица, и она не удаляется … IF NOT EXISTS …
Пробуйте посмотреть SHOW CREATE TABLE `kursovaya`.`Журнал Регистраций Заявлений`;



0



volukrem

0 / 0 / 0

Регистрация: 08.11.2019

Сообщений: 7

12.04.2020, 17:16

 [ТС]

8

По Вашему совету заново развернул БД на латинице. Теперь при заполнении БД возникает ошибка

insert into `krsvya`.`Zayavitel` (`INN`, `FIO`, `Adres`, `SeriyaNomer`, `DataRojdeniya`) VALUES (1111111, ‘Smolyakova Inna Sergeevna’, ‘Moskovskaya 10’, ‘314354342’, ‘1994.02.02’), (2222222, ‘Voynenko Andrey Semenovich’, ‘Kosmonavtov 43’, ‘965495521’, ‘1983.05.19’), (3333333, ‘Voroshilov Petr Arkadyevich’, ‘Polikarpova 55’, ‘672038164’, ‘1990.10.23’), (4444444, ‘Kuporos Maria Gennadyevna’, ‘Pobedy 21’, ‘5949103174’, ‘1964.03.20’), (5555555, ‘Rozmarinov Victor Igorevich’, ‘Moskovskaya 50’, ‘249548731’, ‘2000.10.04’)
Error Code: 1062. Duplicate entry ‘1111111’ for key ‘zayavitel.PRIMARY’

Добавление AUTO_INCREMENT для первичного ключа не помогло исправить её. Хотя я и не отрицаю, что не так пытался исправить.

Прикрепил новый скрипт создания и заполнения. Заранее спасибо.

MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
 
CREATE SCHEMA IF NOT EXISTS `krsvya` DEFAULT CHARACTER SET utf8 ;
USE `krsvya`;
 
CREATE TABLE IF NOT EXISTS `krsvya`.`Zayavitel` (
  `INN` INT NOT NULL AUTO_INCREMENT,
  `FIO` VARCHAR(100) NOT NULL,
  `Adres` VARCHAR(100) NOT NULL,
  `SeriyaNomer` VARCHAR(45) NOT NULL,
  `DataRojdeniya` DATE NOT NULL,
  PRIMARY KEY (`INN`),
  UNIQUE INDEX `INN_UNIQUE` (`INN` ASC) VISIBLE)
ENGINE = InnoDB;
 
CREATE TABLE IF NOT EXISTS `krsvya`.`Usluga` (
  `KodUslugi` INT NOT NULL,
  `Naimenovanie` VARCHAR(100) NOT NULL,
  `SrokVypolneniya` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`KodUslugi`),
  UNIQUE INDEX `KodUslugi_UNIQUE` (`KodUslugi` ASC) VISIBLE)
ENGINE = InnoDB;
 
CREATE TABLE IF NOT EXISTS `krsvya`.`Ispolnitel` (
  `TabelnyNomer` INT NOT NULL,
  `PolnoeImya` VARCHAR(100) NOT NULL,
  `Dolznost` VARCHAR(100) NOT NULL,
  PRIMARY KEY (`TabelnyNomer`),
  UNIQUE INDEX `TabelnyNomer_UNIQUE` (`TabelnyNomer` ASC) VISIBLE)
ENGINE = InnoDB;
 
CREATE TABLE IF NOT EXISTS `krsvya`.`JurRegZay` (
  `NomerZayavleniya` INT NOT NULL,
  `DataObrasheniya` DATE NOT NULL,
  `Zayavitel_INN` INT NOT NULL,
  `Usluga_KodUslugi` INT NOT NULL,
  `Ispolnitel_TabelnyNomer` INT NOT NULL,
  PRIMARY KEY (`NomerZayavleniya`, `Zayavitel_INN`, `Usluga_KodUslugi`),
  UNIQUE INDEX `NomerZayavleniya_UNIQUE` (`NomerZayavleniya` ASC) VISIBLE,
  INDEX `fk_JurRegZay_Zayavitel_idx` (`Zayavitel_INN` ASC) VISIBLE,
  INDEX `fk_JurRegZay_Usluga1_idx` (`Usluga_KodUslugi` ASC) VISIBLE,
  INDEX `fk_JurRegZay_Ispolnitel1_idx` (`Ispolnitel_TabelnyNomer` ASC) VISIBLE,
  CONSTRAINT `fk_JurRegZay_Zayavitel`
    FOREIGN KEY (`Zayavitel_INN`)
    REFERENCES `krsvya`.`Zayavitel` (`INN`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_JurRegZay_Usluga1`
    FOREIGN KEY (`Usluga_KodUslugi`)
    REFERENCES `krsvya`.`Usluga` (`KodUslugi`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_JurRegZay_Ispolnitel1`
    FOREIGN KEY (`Ispolnitel_TabelnyNomer`)
    REFERENCES `krsvya`.`Ispolnitel` (`TabelnyNomer`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
 
CREATE TABLE IF NOT EXISTS `krsvya`.`Dokument` (
  `NomerDokumenta` INT NOT NULL,
  `DataDokumenta` DATE NOT NULL,
  `Dokument` VARCHAR(100) NOT NULL,
  `JurRegZay_NomerZayavleniya` INT NOT NULL,
  `JurRegZay_Zayavitel_INN` INT NOT NULL,
  `JurRegZay_Usluga_KodUslugi` INT NOT NULL,
  PRIMARY KEY (`NomerDokumenta`, `JurRegZay_NomerZayavleniya`, `JurRegZay_Zayavitel_INN`, `JurRegZay_Usluga_KodUslugi`),
  UNIQUE INDEX `NomerDokumenta_UNIQUE` (`NomerDokumenta` ASC) VISIBLE,
  INDEX `fk_Dokument_JurRegZay1_idx` (`JurRegZay_NomerZayavleniya` ASC, `JurRegZay_Zayavitel_INN` ASC, `JurRegZay_Usluga_KodUslugi` ASC) VISIBLE,
  CONSTRAINT `fk_Dokument_JurRegZay1`
    FOREIGN KEY (`JurRegZay_NomerZayavleniya` , `JurRegZay_Zayavitel_INN` , `JurRegZay_Usluga_KodUslugi`)
    REFERENCES `krsvya`.`JurRegZay` (`NomerZayavleniya` , `Zayavitel_INN` , `Usluga_KodUslugi`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
 
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
SET FOREIGN_KEY_CHECKS=0;
 
 
insert into `krsvya`.`Zayavitel` (`INN`, `FIO`, `Adres`, `SeriyaNomer`, `DataRojdeniya`) VALUES 
(1111111, 'Smolyakova Inna Sergeevna', 'Moskovskaya 10', '314354342', '1994.02.02'),
(2222222, 'Voynenko Andrey Semenovich', 'Kosmonavtov 43', '965495521', '1983.05.19'),
(3333333, 'Voroshilov Petr Arkadyevich', 'Polikarpova 55', '672038164', '1990.10.23'),
(4444444, 'Kuporos Maria Gennadyevna', 'Pobedy 21', '5949103174', '1964.03.20'),
(5555555, 'Rozmarinov Victor Igorevich', 'Moskovskaya 50', '249548731', '2000.10.04');
 
 
insert into `krsvya`.`Usluga` (`KodUslugi`, `Naimenovanie`, `SrokVypolneniya`) VALUES
(01101, 'Registraciya Yuridicheskogo Lica', '10 rabochih dney'),
(01102, 'Spravka Vydachi Ob Otsutstvii Zadoljnosti', '7 rabochih dney'),
(01103, 'Vydacha Uvedomleny Ob Ispolzovanii Imyczh Vycheta', '10 rabochih dney'),
(01104, 'Predostavlenie Lgoty Po Imuczhestvennomy Nalogu', '20 rabochih dney'),
(01105, 'Vydacha Patenta', '15 rabochih dney'); 
 
insert into `krsvya`.`Ispolnitel` (`TabelnyNomer`, `PolnoeImya`, `Dolznost`) VALUES
(2014, 'Sergeeva Olga Nikolaevna', 'Gosudarstvenny Nalogovy Inspektor'),
(2434, 'Khromaev Igor Andreevich', 'Gosudarstvenny Nalogovy Inspektor'),
(1994, 'Bulavkina Nadezda Vitalyevna', 'Starshy Gosudarstvenny Nalogovy Inspektor'),
(3503, 'Simonin Petr Alekseevich', 'Starshy Gosudarstvenny Nalogovy Inspektor'),
(2030, 'Borzyh Victoriya Vladimirovna', 'Glavny Gosudarstvenny Nalogovy Inspektor'); 
 
insert into `krsvya`.`JurRegZay` (`NomerZayavleniya`, `DataObrasheniya`, `Zayavitel_INN`, `Usluga_KodUslugi`, `Ispolnitel_TabelnyNomer`) VALUES
(511, '2020.03.04', '1111111', '01101', '2014'),
(512, '2020.03.10', '2222222', '01102', '2434'),
(513, '2020.03.15', '3333333', '01103', '1994'),
(514, '2020.03.20', '4444444', '01104', '3503'),
(515, '2020.03.25', '5555555', '01105', '2030');
 
insert into `krsvya`.`Dokument` (`NomerDokumenta`, `DataDokumenta`, `Dokument`, `JurRegZay_NomerZayavleniya`, `JurRegZay_Zayavitel_INN`, `JurRegZay_Usluga_KodUslugi`) VALUES
(02101, '2020.03.10', 'Svidetelstvo O Registracii Yuridicheskogo Lica', '511', '1111111', '01101'),
(02102, '2020.03.15', 'Spravka Ob Otsutstvii Zadoljnosti', '512', '2222222', '01102'),
(02103, '2020.03.17', 'Uvedomlenie Ob Ispolzovanii Umych Vycheta', '513', '3333333', '01103'),
(02104, '2020.03.22', 'Lgota Po Imuchestvennomu Nalogu', '514', '4444444', '01104'),
(02105, '2020.03.19', 'Patent', '515', '5555555', '01105');



0



ft4l

Невнимательный

2329 / 681 / 251

Регистрация: 08.02.2013

Сообщений: 4,746

Записей в блоге: 2

12.04.2020, 17:31

9

Лучший ответ Сообщение было отмечено volukrem как решение

Решение

Похоже это попытка заполнить уже заполненную таблицу

Есть другой способ развёртывания таблиц…
вместо

MySQL
1
2
CREATE TABLE IF NOT EXISTS `krsvya`.`......`
....

Сделать

MySQL
1
2
3
DROP TABLE IF EXISTS `krsvya`.`.....`;
CREATE TABLE `krsvya`.`.....`
...

будут удалены старые и созданы новые пустые таблицы

Добавлено через 3 минуты

Цитата
Сообщение от volukrem
Посмотреть сообщение

Добавление AUTO_INCREMENT для первичного ключа не помогло

Для AUTO_INCREMENT можно передавать значения NULL,
но не понятно хотите-ли Вы дублировать записи или перезаписать



0



20 / 21 / 2

Регистрация: 09.04.2020

Сообщений: 125

12.04.2020, 17:33

10

Цитата
Сообщение от volukrem
Посмотреть сообщение

Error Code: 1062. Duplicate entry ‘1111111’ for key ‘zayavitel.PRIMARY’

Вам подсказывают что вы повторно пытаетесь вставить значение с уже существующим первичным ключом. По поводу auto_increment опции:
если поле таблицы имеет подобную опцию, то при вставке/модификации данная ячейка может не указываться в списке values, также должно быть установлено значение по умолчанию.



1



0 / 0 / 0

Регистрация: 08.11.2019

Сообщений: 7

12.04.2020, 19:01

 [ТС]

11

После этого всё заработало без ошибок. Спасибо Вам огромное!



0



0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка 1053 что это
  • Ошибка 1053 при подключении к интернету