MySQL ОШИБКА 1406 (22001): данные слишком длинные для столбца - PullRequest
3 голосов
/ 14 января 2020

Рассмотрим метки таблицы:

mysql> SELECT * FROM marks;
+--------+------------+-----------------------+
| name   | percentage | email                 |
+--------+------------+-----------------------+
| Bipin  | 84%        | bipin_p@gmail.com     |
| Deepak | 78%        | cool_deepak@gmail.com |
| Rohith | 82%        | rohith_s@gmail.com    |
| Sujit  | 94%        | sujit_jos@gmail.com   |
+--------+------------+-----------------------+

Когда я сделал следующий запрос для вставки значений в таблицу, это привело к ошибке:

mysql> INSERT INTO marks VALUES('&name','&percentage','&email');
ERROR 1406 (22001): Data too long for column 'percentage' at row 1 

Это было сделано как эксперимент, основанный на информации о другом способе вставки значения с использованием ('&') в SQL.

Можете ли вы указать, что пошло не так? Согласно блогу, простое нажатие ENTER будет вставлять значения после запроса.

Желаемый вывод:

Enter value for name: John
Enter value for percentage: 76%
Enter value for email: john_doe@gmail.com

1 Ответ

5 голосов
/ 14 января 2020

В MySQL переменные сеанса имеют префикс @, и они не раскрываются внутри кавычек. Так и должно быть:

mysql> SET @name = 'John', @percentage = '76%', @email = 'john_doe@gmail.com';
mysql> INSERT INTO marks VALUES(@name,@percentage,@email);

Нет автоматического запроса c для переменных, как в Oracle, вы должны установить их вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...