Phpmyadmin ошибка 1366

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Активные темы Темы без ответов

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

1 2008-07-03 18:20:42

  • fog!
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2008-06-28
  • Сообщений: 4

Тема: Ошибка #1366

Ошибка

SQL-запрос:

INSERT INTO `cities` ( `id` , `city_name` , `latitude` , `longitude` , `population` , `country_code` )
VALUES (
», ‘Sherbrooke’, ’45 23 59.00′, ‘-71 46 11.00’, 125000, ‘ca’
)

Ответ MySQL: Документация
#1366 — Incorrect integer value: » for column ‘id’ at row 1

Здравствуйте. Как видно из запроса — MySQL недоволен пустым значением в поле id. Но разве не так должно быть при автоматическом индексировании? При создании таблицы по отношению к полю id использовалась функция auto_increment. Кстати пример из статьи Марка Делисла, приведенной на этом сайте;).

Обьясните новичку что не так.
Заранее благодарен.

2 Ответ от Hanut 2008-07-03 21:33:31

  • Hanut
  • Hanut
  • Модератор
  • Неактивен
  • Откуда: Рига, Латвия
  • Зарегистрирован: 2006-07-02
  • Сообщений: 9,726

Re: Ошибка #1366

fog!
Это не совсем ошибка, скорее уведомление о несоответствии синтаксиса стандарту. Обычно подобная ошибка не выводится, но так как сервер устанавливается в целях обучения, то при настройке MySQL был задан режим жесткого соответствия SQL запросов стандарту (Strict Mode). В конфигурационном файле MySQL за данную настройку отвечает директива sql-mode, но я бы крайне не рекомендовал ее менять.

Для соответствия стандарту запрос можно заменить двумя способами.

-- В данном случае мы вовсе убираем поле id при вставке данных.
INSERT INTO `cities` ( `city_name` , `latitude` , `longitude` , `population` , `country_code` )
VALUES ( 'Sherbrooke', '45 23 59.00', '-71 46 11.00', 125000, 'ca' );

-- Либо назначаем полю id значение NULL.
INSERT INTO `cities` ( `id` , `city_name` , `latitude` , `longitude` , `population` , `country_code` )
VALUES ( NULL, 'Sherbrooke', '45 23 59.00', '-71 46 11.00', 125000, 'ca' );

3 Ответ от fog! 2008-07-04 19:43:45

  • fog!
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2008-06-28
  • Сообщений: 4

Re: Ошибка #1366

спасибо) я тоже подумал про НУЛЛ)

4 Ответ от Vital 2015-07-05 11:51:57 (изменено: Vital, 2015-07-05 12:35:50)

  • Vital
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2015-04-20
  • Сообщений: 2

Re: Ошибка #1366

Добрый день, уважаемый Hanut.
Нужна помощь.
Вылезает такая же ошибка, когда пытаюсь поменять тип поля.
Сейчас поле year. Его тип CHAR. Количество символов — 4.
Меняю на тип SMALLINT с количеством символов 6 и выводится ошибка 1366.
Чем, по вашему мнению, недоволен MySQL и как попробовать его удовлетворить?
Ссылки на скрины:
https://yadi.sk/i/0-AjKqU-hfzRL
https://yadi.sk/i/vUEzb824hfzfG
https://yadi.sk/i/Se5E0TDBhfzfr

Уверен, что в очередной раз сможете помочь.
Заранее спасибо большое за помощь!!!

Сообщения 4

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Summary

When I use the phpMyAdmin GUI to insert a new entry into my table (which has a BEFORE INSERT TRIGGER applied to it), it seems to insert the entry just fine… but it always displays this in response:

( ! ) 1 row inserted.
Warning: #1366 Incorrect integer value: » for column ‘line_id’ at row 1

What am I doing wrong? Is there a better way to set up the trigger so I don’t get the error?

Background

Note: You can probably skip the code blocks as you read.

Using phpMyAdmin, I created my second table with this SQL statement. (This worked fine.)

CREATE TABLE IF NOT EXISTS `myDb`.`line_item` (
  `order_id` INT NOT NULL,
  `line_id` INT NOT NULL,
  `line_text` VARCHAR(100) NOT NULL,
  PRIMARY KEY (`order_id`, `line_id`),
  CONSTRAINT `FK_order_line_item`
    FOREIGN KEY (`order_id`)
    REFERENCES `myDb`.`order` (`order_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

You’ll note there’s no AUTO_INCREMENT imposed on line_id. That is because we want it to reset it’s numbering with each new order_id. To accomplish this resetting number, we presumed a TRIGGER was most appropriate for the task.

When I tried to add a TRIGGER with this code, phpMyAdmin said it couldn’t make it. (Something to do about «permissions» or such, but I quickly resorted to a built-in workaround after this little adventure.)

DELIMITER $$
USE `myDb`$$
CREATE DEFINER = CURRENT_USER TRIGGER `myDb`.`line_id_incrementer` 
BEFORE INSERT ON `line_item` 
FOR EACH ROW
BEGIN
    DECLARE i INT;
    SELECT  COALESCE(MAX(line_id), 0) + 1
    INTO    i
    FROM    line_item
    WHERE   order_id = NEW.order_id;
    SET NEW.line_id = i;
END$$

DELIMITER ;

When the above SQL statement didn’t work, I simply used the GUI of phpMyAdmin to add the trigger to the table.

Server:localhost > Database:myDb > Table:line_item > «Triggers» Tab > «New» > «Add Trigger»

Trigger Name: line_id_incrementer
Table: line_item
Time: BEFORE
Event: INSERT
Definition:

BEGIN
    DECLARE i INT;
    SELECT  COALESCE(MAX(line_id), 0) + 1
    INTO    i
    FROM    line_item
    WHERE   order_id = NEW.order_id;
    SET NEW.line_id = i;
END

So far so fair.

Performing a practice run, I inserted a test entry into the ‘order’ table via the phpMyAdmin GUI (the ‘Insert’ Tab while viewing the ‘order’ table.): No problems there.

When I inserted a test entry for ‘line_id’ via the phpMyAdmin GUI, I left the NOT NULL ‘line_id’ field empty, to see if the trigger would fill it in correctly for me. And that’s when I got this:

( ! ) 1 row inserted.
Warning: #1366 Incorrect integer value: » for column ‘line_id’ at row 1

With the generated code shown as:

INSERT INTO `line_item` 
    (`order_id`, `line_id`, `line_text`) 
    VALUES ('1', '', 'This is a test line for the incrementer trigger');

What is interesting is: It inserted the entry as expected (with a 1 as the line_id). When I inserted a second entry, the warning still showed, but the next entry was also entered as expected (with a 2 as the line_id).

So, the rows seem to be inserted just fine, but I keep getting that nagging Warning which makes me suspect I didn’t do something up to «Best Practice Standards».

I’m trying to inline upload data stored in UTF-8 text files, and I have two problems. Firstly, there’s currently no primary key set on this table, and it’s not set to auto-increment or forced to be null at this point; the first column will be the intended primary key once all the data is loaded, and foreign keys will be added at that point.

I received the following error:

25 row(s) affected, 1 warning(s): 1366 Incorrect integer value: ‘1’ for column ‘idtable_file’ at row 1 Records: 25 Deleted: 0 Skipped: 0 Warnings: 1

when trying to run this:

LOAD DATA LOCAL INFILE '/path' INTO TABLE sandr.table_file 
columns terminated by ','   
LINES terminated by 'n'
(idtable_file, owner_id, folder_id, @modified_date, @created_date, size, filename)
SET modified_date = STR_TO_DATE(@modified_date,'%d/%m/%Y %T'),
    created_date = STR_TO_DATE(@created_date,'%d/%m/%Y %T')

on this table:

CREATE TABLE `table_file` (
  `idtable_file` int(11) DEFAULT NULL,
  `owner_id` int(11) DEFAULT NULL,
  `folder_id` int(11) DEFAULT NULL,
  `modified_date` datetime DEFAULT NULL,
  `created_date` datetime DEFAULT NULL,
  `size` int(11) DEFAULT NULL,
  `filename` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

I’m doing something wrong but I’ve just started with MySQL so I’m stabbing in the dark a fair bit, any ideas on that? Also, though the above SQL query works fine in PowerShell when it’s just this:

LOAD DATA LOCAL INFILE '/path' INTO TABLE sandr.table_file 
columns terminated by ','   
LINES terminated by 'n'

It bombs out with:

Exception calling «ExecuteNonQuery» with «0» argument(s): «Fatal error encountered during command execution.»

if I add the adjustment to the date fields.

When you try to insert a new record into your MySQL database table, you may encounter an error saying Incorrect string value along with some UTF-8 hex code for the description.

For example, suppose you create a Test table with only one column as follows:

CREATE TABLE `Test` (
  `names` varchar(255)
) 

Next, let’s insert the following Egyptian hieroglyph character into the table:

INSERT INTO Test VALUES('𓀀');

Your MySQL server may respond with the following error:

ERROR 1366 (HY000): 
Incorrect string value: 'xF0x93x80x80' for column 'names' at row 1

The error above is because the character 𓀀 requires 4-bytes to be represented in UTF-8 encoding.

By default, MySQL databases and tables are created using a UTF-8 with 3-bytes encoding. You can see the encoding used for your table by using the SHOW CREATE TABLE statement as follows:

SHOW CREATE TABLE Test G

Here’s the result from my computer:

*************************** 1. row ***************************
       Table: Test
Create Table: CREATE TABLE `Test` (
  `names` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3

As you can see, the table uses the DEFAULT CHARSET=utf8mb3 and the names column uses CHARACTER SET utf8.

The MySQL utf8 or utf8mb3 can’t store string values that contain a UTF-8 4-bytes character.

To store the values, you need to use the utf8mb4 character set.

Here’s the query to alter your database, table, or column to utf8mb4 character set:

-- Change a database
ALTER DATABASE [database_name] 
  CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; 

-- Change a table
ALTER TABLE [table_name] 
  CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 

-- Change a column
ALTER TABLE [table_name] 
  CHANGE [column_name] [column_name] VARCHAR(255) 
  CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

When you change the character set on the database level, then any new table you create for that database in the future will use that character set as the default encoding.

Returning to the Test table, you can alter just the names column to make the INSERT statement works:

ALTER TABLE `Test`
  CHANGE `names` `names` VARCHAR(255) 
  CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Now you should be able to insert the character 𓁴 into the table:

INSERT INTO Test VALUES('𓁴');
-- Query OK, 1 row affected (0.00 sec)

By default, MySQL version 8 should use utf8mb4 encoding and collation for your databases. If you see utf8 or utf8mb3, then you might be using MySQL version below 8 (MySQL version 5 may default to utf8mb3).

When you encounter this error, pay attention to the characters that you want to insert into the database.

They may look like normal characters, but if you copy and paste them from some source, then they may have a strange encoding attached to them.

For example, the GOTHIC LETTER SAUIL 𐍃 looks like a normal capital S but actually a 4-bytes character:

INSERT INTO Test VALUES('𐍃');

ERROR 1366 (HY000): 
Incorrect string value: 'xF0x90x8Dx83' for column 'names' at row 1

Alternatively, you can also pass the hex code (xF0x90x8Dx83 in the example above) into Google to look for the exact character that causes the error.

To conclude, the ERROR 1366: Incorrect string value happens when MySQL can’t insert the value you specified into the table because of incompatible encoding.

You need to modify or remove characters that have 4-bytes UTF-8 encoding, or you can change the encoding and collation used by MySQL.

Note that utf8 in MySQL always refers to utf8mb3.

To use the 4-bytes UTF-8 encoding, it needs to be specified as utf8mb4.

With this information, you should now be able to resolve this error. Feel free to use the provided ALTER statements above if you need it 👍

When you try to insert a new record into your MySQL database table, you may encounter an error saying Incorrect string value along with some UTF-8 hex code for the description.

For example, suppose you create a Test table with only one column as follows:

CREATE TABLE `Test` (
  `names` varchar(255)
) 

Next, let’s insert the following Egyptian hieroglyph character into the table:

INSERT INTO Test VALUES('𓀀');

Your MySQL server may respond with the following error:

ERROR 1366 (HY000): 
Incorrect string value: 'xF0x93x80x80' for column 'names' at row 1

The error above is because the character 𓀀 requires 4-bytes to be represented in UTF-8 encoding.

By default, MySQL databases and tables are created using a UTF-8 with 3-bytes encoding. You can see the encoding used for your table by using the SHOW CREATE TABLE statement as follows:

Here’s the result from my computer:

*************************** 1. row ***************************
       Table: Test
Create Table: CREATE TABLE `Test` (
  `names` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3

As you can see, the table uses the DEFAULT CHARSET=utf8mb3 and the names column uses CHARACTER SET utf8.

The MySQL utf8 or utf8mb3 can’t store string values that contain a UTF-8 4-bytes character.

To store the values, you need to use the utf8mb4 character set.

Here’s the query to alter your database, table, or column to utf8mb4 character set:

-- Change a database
ALTER DATABASE [database_name] 
  CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; 

-- Change a table
ALTER TABLE [table_name] 
  CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 

-- Change a column
ALTER TABLE [table_name] 
  CHANGE [column_name] [column_name] VARCHAR(255) 
  CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

When you change the character set on the database level, then any new table you create for that database in the future will use that character set as the default encoding.

Returning to the Test table, you can alter just the names column to make the INSERT statement works:

ALTER TABLE `Test`
  CHANGE `names` `names` VARCHAR(255) 
  CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Now you should be able to insert the character 𓁴 into the table:

INSERT INTO Test VALUES('𓁴');
-- Query OK, 1 row affected (0.00 sec)

By default, MySQL version 8 should use utf8mb4 encoding and collation for your databases. If you see utf8 or utf8mb3, then you might be using MySQL version below 8 (MySQL version 5 may default to utf8mb3).

When you encounter this error, pay attention to the characters that you want to insert into the database.

They may look like normal characters, but if you copy and paste them from some source, then they may have a strange encoding attached to them.

For example, the GOTHIC LETTER SAUIL 𐍃 looks like a normal capital S but actually a 4-bytes character:

INSERT INTO Test VALUES('𐍃');

ERROR 1366 (HY000): 
Incorrect string value: 'xF0x90x8Dx83' for column 'names' at row 1

Alternatively, you can also pass the hex code (xF0x90x8Dx83 in the example above) into Google to look for the exact character that causes the error.

To conclude, the ERROR 1366: Incorrect string value happens when MySQL can’t insert the value you specified into the table because of incompatible encoding.

You need to modify or remove characters that have 4-bytes UTF-8 encoding, or you can change the encoding and collation used by MySQL.

Note that utf8 in MySQL always refers to utf8mb3.

To use the 4-bytes UTF-8 encoding, it needs to be specified as utf8mb4.

With this information, you should now be able to resolve this error. Feel free to use the provided ALTER statements above if you need it 👍

Содержание

  1. MySQL — How to fix the ‘Incorrect string value’ error
  2. Level up your programming skills
  3. About
  4. Русские Блоги
  5. Решена проблема ошибки 1366: неверное строковое значение, то есть эмодзи нельзя вставить в базу данных Mysql
  6. предисловие
  7. текст
  8. 1. Код (Драйвер для подключения к базе данных)
  9. Во-вторых, база данных
  10. подводить итоги
  11. Русские Блоги
  12. Решена проблема ошибки 1366: неверное строковое значение, то есть эмодзи нельзя вставить в базу данных Mysql
  13. предисловие
  14. текст
  15. 1. Код (Драйвер для подключения к базе данных)
  16. Во-вторых, база данных
  17. подводить итоги
  18. #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
  19. Сообщения 15
  20. 1 Тема от aler 2009-12-14 00:26:28
  21. Тема: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
  22. 2 Ответ от Hanut 2009-12-14 00:51:26
  23. Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
  24. 3 Ответ от aler 2009-12-14 09:57:04 (изменено: aler, 2009-12-14 10:00:09)
  25. Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
  26. 4 Ответ от Hanut 2009-12-14 12:14:01
  27. Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
  28. 5 Ответ от aler 2009-12-14 14:51:45
  29. Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
  30. 6 Ответ от Hanut 2009-12-14 22:31:13
  31. Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
  32. 7 Ответ от aler 2009-12-15 01:44:41
  33. Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
  34. 8 Ответ от Hanut 2009-12-15 13:13:45
  35. Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
  36. 9 Ответ от aler 2009-12-15 14:18:28
  37. Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
  38. 10 Ответ от aler 2009-12-21 22:12:58
  39. Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
  40. 11 Ответ от Hanut 2009-12-22 00:10:45
  41. Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
  42. 12 Ответ от aler 2009-12-22 00:15:15
  43. Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
  44. 13 Ответ от Hanut 2009-12-22 12:07:00
  45. Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
  46. 14 Ответ от Hanut 2010-05-20 11:56:07
  47. Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
  48. 15 Ответ от alex252003 2010-05-20 12:08:13
  49. Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

MySQL — How to fix the ‘Incorrect string value’ error

Posted on Dec 15, 2021

Learn how to fix MySQL ‘Incorrect string value’ ERROR 1366 when inserting new data

When you try to insert a new record into your MySQL database table, you may encounter an error saying Incorrect string value along with some UTF-8 hex code for the description.

For example, suppose you create a Test table with only one column as follows:

Next, let’s insert the following Egyptian hieroglyph character into the table:

Your MySQL server may respond with the following error:

The error above is because the character 𓀀 requires 4-bytes to be represented in UTF-8 encoding.

By default, MySQL databases and tables are created using a UTF-8 with 3-bytes encoding. You can see the encoding used for your table by using the SHOW CREATE TABLE statement as follows:

Here’s the result from my computer:

As you can see, the table uses the DEFAULT CHARSET=utf8mb3 and the names column uses CHARACTER SET utf8 .

The MySQL utf8 or utf8mb3 can’t store string values that contain a UTF-8 4-bytes character.

To store the values, you need to use the utf8mb4 character set.

Here’s the query to alter your database, table, or column to utf8mb4 character set:

When you change the character set on the database level, then any new table you create for that database in the future will use that character set as the default encoding.

Returning to the Test table, you can alter just the names column to make the INSERT statement works:

Now you should be able to insert the character 𓁴 into the table:

By default, MySQL version 8 should use utf8mb4 encoding and collation for your databases. If you see utf8 or utf8mb3 , then you might be using MySQL version below 8 (MySQL version 5 may default to utf8mb3 ).

When you encounter this error, pay attention to the characters that you want to insert into the database.

They may look like normal characters, but if you copy and paste them from some source, then they may have a strange encoding attached to them.

For example, the GOTHIC LETTER SAUIL 𐍃 looks like a normal capital S but actually a 4-bytes character:

Alternatively, you can also pass the hex code ( xF0x90x8Dx83 in the example above) into Google to look for the exact character that causes the error.

To conclude, the ERROR 1366: Incorrect string value happens when MySQL can’t insert the value you specified into the table because of incompatible encoding.

You need to modify or remove characters that have 4-bytes UTF-8 encoding, or you can change the encoding and collation used by MySQL.

Note that utf8 in MySQL always refers to utf8mb3 .

To use the 4-bytes UTF-8 encoding, it needs to be specified as utf8mb4 .

With this information, you should now be able to resolve this error. Feel free to use the provided ALTER statements above if you need it 👍

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.

Источник

Русские Блоги

предисловие

Ошибка: Ошибка 1366: Неверное строковое значение

Анализ: настройка кодировки набора символов не соответствует содержимому, которое нужно вставить

Кодировка набора символов существует в двух местах

Во-вторых, код (диск для подключения к базе данных)

Большинство людей обращают внимание только на кодировку на уровне базы данных и забывают, что кодировка набора символов также требуется при подключении к базе данных с помощью кода.

Позвольте мне представить, как изменить кодировку набора символов этих двух мест

текст

1. Код (Драйвер для подключения к базе данных)

Это вопрос, который часто упускают из виду люди (я обычно тратил 2 дня на эту проблему, искал бесчисленное количество информации, но ничего не нашел и, наконец, обнаружил проблему случайно)

Используете ли вы Java, Python, Go или другие языки высокого уровня, если вы хотите управлять базой данных, вам нужен драйвер базы данных.

Затем будут некоторые конфигурации. Я представляю здесь конфигурацию драйвера языка Go для подключения к Mysql, как показано ниже:

На самом деле, вышесказанное является полным предложением root:[email protected](localhost:3306)/local_db?charset=utf8mb4 Чтобы облегчить модификацию, я ее разобрал. Мы часто устанавливаем значение utf8 в конце и часто игнорируем это, что делает невозможным использование кода для вставки выражений эмодзи👿! Просто измените его на utf8mb4.

Во-вторых, база данных

По этому вопросу существует множество учебных пособий, в целом, существует четыре уровня кодирования базы данных.

1. Чтобы изменить кодировку сервера базы данных, вам нужно изменить конфигурационный файл my.ini

Обычно Windows находится в каталоге C: ProgramData MySQL MySQL Server 5.7.

Linux обычно находится в /etc/my.cnf или /etc/mysql/my.cnf

Примерно в 65 строках my.ini будет предложение конфигурации, default-character-set = utf8, измените его на default-character-set = utf8mb4 и сохраните его, а затем раскомментируйте. Обратите внимание, что некоторые люди в Интернете говорят, что он должен быть под mysqld Он также настроен, фактически он не используется, по крайней мере, Mysql5.7 не используется, в противном случае, если вы настроите больше, служба базы данных может не перезапуститься.

Конечно, если ваша конфигурация по умолчанию находится под mysqld, то измените конфигурацию под mysqld. Одним словом, эта конфигурация предложения нуждается только в одном предложении.

Измененные и сохраненные результаты следующие:

После изменения конфигурации вам необходимо перезапустить сервер Mysql.

Windows может найти сервис в диспетчере задач, соответствующий Mysql57, щелкнуть правой кнопкой мыши для перезапуска.

Чтобы перезапустить Mysql в Linux, вам нужно использовать команду service mysql restart. Если эта команда не работает, вы можете попробовать перезапустить службу mysqld.

2. Библиотека

Вы можете использовать Navicat, щелкнуть правой кнопкой мыши имя библиотеки и выбрать «Редактировать базу данных».

Вы также можете использовать команду:

Затем установите соответствующий набор символов в utf8mb4

3. Стол

В настоящее время я не нашел набор символов визуальной операции для изменения таблицы, только с помощью команды

4. Поле

Поля можно щелкнуть правой кнопкой мыши в таблице дизайна таблицы Navicat

Конечно, вы также можете использовать команду:

Если ваше поле имеет тип varchar или другие типы символов, вы можете выбрать соответствующий набор символов ниже

подводить итоги

Мы склонны игнорировать некоторые незначительные детали, но иногда именно эти детали разрушают все здание!

Источник

Русские Блоги

Решена проблема ошибки 1366: неверное строковое значение, то есть эмодзи нельзя вставить в базу данных Mysql

предисловие

Ошибка: Ошибка 1366: Неверное строковое значение

Анализ: настройка кодировки набора символов не соответствует содержимому, которое нужно вставить

Кодировка набора символов существует в двух местах

Во-вторых, код (диск для подключения к базе данных)

Большинство людей обращают внимание только на кодировку на уровне базы данных и забывают, что кодировка набора символов также требуется при подключении к базе данных с помощью кода.

Позвольте мне представить, как изменить кодировку набора символов этих двух мест

текст

1. Код (Драйвер для подключения к базе данных)

Это вопрос, который часто упускают из виду люди (я обычно тратил 2 дня на эту проблему, искал бесчисленное количество информации, но ничего не нашел и, наконец, обнаружил проблему случайно)

Используете ли вы Java, Python, Go или другие языки высокого уровня, если вы хотите управлять базой данных, вам нужен драйвер базы данных.

Затем будут некоторые конфигурации. Я представляю здесь конфигурацию драйвера языка Go для подключения к Mysql, как показано ниже:

На самом деле, вышесказанное является полным предложением root:[email protected](localhost:3306)/local_db?charset=utf8mb4 Чтобы облегчить модификацию, я ее разобрал. Мы часто устанавливаем значение utf8 в конце и часто игнорируем это, что делает невозможным использование кода для вставки выражений эмодзи👿! Просто измените его на utf8mb4.

Во-вторых, база данных

По этому вопросу существует множество учебных пособий, в целом, существует четыре уровня кодирования базы данных.

1. Чтобы изменить кодировку сервера базы данных, вам нужно изменить конфигурационный файл my.ini

Обычно Windows находится в каталоге C: ProgramData MySQL MySQL Server 5.7.

Linux обычно находится в /etc/my.cnf или /etc/mysql/my.cnf

Примерно в 65 строках my.ini будет предложение конфигурации, default-character-set = utf8, измените его на default-character-set = utf8mb4 и сохраните его, а затем раскомментируйте. Обратите внимание, что некоторые люди в Интернете говорят, что он должен быть под mysqld Он также настроен, фактически он не используется, по крайней мере, Mysql5.7 не используется, в противном случае, если вы настроите больше, служба базы данных может не перезапуститься.

Конечно, если ваша конфигурация по умолчанию находится под mysqld, то измените конфигурацию под mysqld. Одним словом, эта конфигурация предложения нуждается только в одном предложении.

Измененные и сохраненные результаты следующие:

После изменения конфигурации вам необходимо перезапустить сервер Mysql.

Windows может найти сервис в диспетчере задач, соответствующий Mysql57, щелкнуть правой кнопкой мыши для перезапуска.

Чтобы перезапустить Mysql в Linux, вам нужно использовать команду service mysql restart. Если эта команда не работает, вы можете попробовать перезапустить службу mysqld.

2. Библиотека

Вы можете использовать Navicat, щелкнуть правой кнопкой мыши имя библиотеки и выбрать «Редактировать базу данных».

Вы также можете использовать команду:

Затем установите соответствующий набор символов в utf8mb4

3. Стол

В настоящее время я не нашел набор символов визуальной операции для изменения таблицы, только с помощью команды

4. Поле

Поля можно щелкнуть правой кнопкой мыши в таблице дизайна таблицы Navicat

Конечно, вы также можете использовать команду:

Если ваше поле имеет тип varchar или другие типы символов, вы можете выбрать соответствующий набор символов ниже

подводить итоги

Мы склонны игнорировать некоторые незначительные детали, но иногда именно эти детали разрушают все здание!

Источник

#1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

Форум PHP-MyAdmin.RU → MySQL & phpMyAdmin → #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщения 15

1 Тема от aler 2009-12-14 00:26:28

  • aler
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2009-12-13
  • Сообщений: 7

Тема: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

Уважаемые форумчане, ОЧЕНЬ СРОЧНО НУЖНА ВАША ПОМОЩЬ.
При добавлении данных в таблицу выдает ошибку (#1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In)
Как ее решить.
вот таблица:
Поле Тип Ноль По умолчанию Допольнительно
id int(4) Да NULL auto_increment
title varchar(255) Да NULL
description text Да NULL
text text Да NULL
date date Да 000-00-00
author varchar(255) Да NULL

а вот запрос на добавление инфи:

mysql_query(«INSERT INTO news (title,description,text,date,author) VALUE (‘$title’,’$description’,’$text’,’$date’,’$author’)»);

2 Ответ от Hanut 2009-12-14 00:51:26

  • Hanut
  • Модератор
  • Неактивен
  • Откуда: Рига, Латвия
  • Зарегистрирован: 2006-07-02
  • Сообщений: 9,722

Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

aler
В таблице уберите у поля id значение по умолчанию. В поле «Ноль» должно быть «нет», в поле «По умолчанию» — тоже «нет». Так же поле id должно быть первичным ключом (проверьте индекс).

3 Ответ от aler 2009-12-14 09:57:04 (изменено: aler, 2009-12-14 10:00:09)

  • aler
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2009-12-13
  • Сообщений: 7

Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

aler
В таблице уберите у поля id значение по умолчанию. В поле «Ноль» должно быть «нет», в поле «По умолчанию» — тоже «нет». Так же поле id должно быть первичным ключом (проверьте индекс).

я сам над этим думал. НО! при создании таблицы я все значения ставлю NOT NULL и в самой структуре таблицы после создания тоже стоят эти значения. А после того как просматриваешь свойства таблици все значения становятся в NULL. Сколько раз не пробовал поменять все равно тоже самое.
id у меня является первичным ключом. Может это глюк самого phpmyadmina или mysql?
И еще, когда вручную указываешь id все данные занюсятся в таблицу.

4 Ответ от Hanut 2009-12-14 12:14:01

  • Hanut
  • Модератор
  • Неактивен
  • Откуда: Рига, Латвия
  • Зарегистрирован: 2006-07-02
  • Сообщений: 9,722

Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

aler
Попробуйте найти конфигурационный файл MySQL (my.ini./my.cnf) и поправить в нем строку (если она выглядит иначе):
sql-mode=»STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION»

5 Ответ от aler 2009-12-14 14:51:45

  • aler
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2009-12-13
  • Сообщений: 7

Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

aler
Попробуйте найти конфигурационный файл MySQL (my.ini./my.cnf) и поправить в нем строку (если она выглядит иначе):
sql-mode=»STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION»

в своем MySQL нашел файл my.cnf но там вообще такой строки нету.
Кстате auto_increment начинает работать когда добавишь пару записей вручную с указанием id. После этого спокойно добавляет с формы.
Ничего не могу понять.

6 Ответ от Hanut 2009-12-14 22:31:13

  • Hanut
  • Модератор
  • Неактивен
  • Откуда: Рига, Латвия
  • Зарегистрирован: 2006-07-02
  • Сообщений: 9,722

Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

Попробуйте добавить эту строку в my.cnf, в раздел [mysqld].

Не должно быть, чтобы без выставления NULL оно добавлялось автоматически.

7 Ответ от aler 2009-12-15 01:44:41

  • aler
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2009-12-13
  • Сообщений: 7

Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

Попробуйте добавить эту строку в my.cnf, в раздел [mysqld].

Не должно быть, чтобы без выставления NULL оно добавлялось автоматически.

Вставил эту строчку куда вы сказали. Никаких изменений.

И еще один вопросик: Какую кодировку использовать когда добавляешь данные на русском или украинском языке? а то в базе отображаются знаки вопроса (. )

8 Ответ от Hanut 2009-12-15 13:13:45

  • Hanut
  • Модератор
  • Неактивен
  • Откуда: Рига, Латвия
  • Зарегистрирован: 2006-07-02
  • Сообщений: 9,722

Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

aler
Кодировка в БД зависит от кодировки страниц сайта: если сайт в windows-1251, то таблицы должны иметь сравнение cp1251_general_ci; если в utf-8, то utf8_general_ci.

Если вы сами пишите скрипт вставки данных, то обязательно сразу после функции mysql_connect добавьте строку определяющую кодировку соединения с MySQL:

9 Ответ от aler 2009-12-15 14:18:28

  • aler
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2009-12-13
  • Сообщений: 7

Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

aler
Кодировка в БД зависит от кодировки страниц сайта: если сайт в windows-1251, то таблицы должны иметь сравнение cp1251_general_ci; если в utf-8, то utf8_general_ci.

Если вы сами пишите скрипт вставки данных, то обязательно сразу после функции mysql_connect добавьте строку определяющую кодировку соединения с MySQL:

Большое спасибо. вот это мне и нужно было.

10 Ответ от aler 2009-12-21 22:12:58

  • aler
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2009-12-13
  • Сообщений: 7

Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

Все равно ничего не пойму, почему id не ставится автоматически. и как не крутил NULL ставится само по себе.

11 Ответ от Hanut 2009-12-22 00:10:45

  • Hanut
  • Модератор
  • Неактивен
  • Откуда: Рига, Латвия
  • Зарегистрирован: 2006-07-02
  • Сообщений: 9,722

Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

aler
Скопируйте сюда структуру таблицы. Пока у меня нет идей почему так получается.

12 Ответ от aler 2009-12-22 00:15:15

  • aler
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2009-12-13
  • Сообщений: 7

Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

aler
Скопируйте сюда структуру таблицы. Пока у меня нет идей почему так получается.

Поле Тип Сравнение Атрибуты Ноль По умолчанию Дополнительно
id int(4) Да NULL auto_increment
login varchar(20) Да NULL
password varchar(20) Да NULL

вот такая структура.

13 Ответ от Hanut 2009-12-22 12:07:00

  • Hanut
  • Модератор
  • Неактивен
  • Откуда: Рига, Латвия
  • Зарегистрирован: 2006-07-02
  • Сообщений: 9,722

Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

aler
Я имел в виду структуру в виде SQL запроса. Увидеть ее можно если выбрать таблицу, затем перейти на страницу экспорта, там убрать галочку в блоке данных и не выставлять галочку сохранения в файл. Тогда структура будет выведена прямо в phpMyAdmin.

14 Ответ от Hanut 2010-05-20 11:56:07

  • Hanut
  • Модератор
  • Неактивен
  • Откуда: Рига, Латвия
  • Зарегистрирован: 2006-07-02
  • Сообщений: 9,722

Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

alex252003
Строка
SET SQL_MODE=»NO_AUTO_VALUE_ON_ZERO»;
Будет в дампе всегда, это необходимо для корректной вставки значений в поле имеющее параметр автоувеличения (AUTO_INCREMENT).

Влияет режим NO_AUTO_VALUE_ON_ZERO только на те значения, которые для поля id будут нулем. Если в дампе есть такие значения, значит будет выводиться ошибка.

В крайнем случае, можете перед импортом дампа закомментировать строку таким образом:
— SET SQL_MODE=»NO_AUTO_VALUE_ON_ZERO»;

15 Ответ от alex252003 2010-05-20 12:08:13

  • alex252003
  • Редкий гость
  • Неактивен
  • Зарегистрирован: 2010-05-20
  • Сообщений: 2

Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In

alex252003
Строка
SET SQL_MODE=»NO_AUTO_VALUE_ON_ZERO»;
Будет в дампе всегда, это необходимо для корректной вставки значений в поле имеющее параметр автоувеличения (AUTO_INCREMENT).

Влияет режим NO_AUTO_VALUE_ON_ZERO только на те значения, которые для поля id будут нулем. Если в дампе есть такие значения, значит будет выводиться ошибка.

В крайнем случае, можете перед импортом дампа закомментировать строку таким образом:
— SET SQL_MODE=»NO_AUTO_VALUE_ON_ZERO»;

спасибо уже разобрался, окзалось дело в кодировке, я поставил в файле my.ini кодировку:
default-character-set=cp1251
и в таблице поставил сравнение cp1251_general_ci
и все заработало

зы я свое сообщение удалил а потом только увидел что вы уже ответили

Источник

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Phpmyadmin ошибка 1075
  • Phpmyadmin ошибка 1067
  • Phpmyadmin ошибка 1064
  • Phpmyadmin отключить вывод ошибок

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

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