MySql вставить оператор в двоичный тип данных? - PullRequest
7 голосов
/ 31 января 2012

Я использую базу данных MySQL.

У меня есть одна таблица со столбцом с двоичным типом данных (16).

Мне нужна помощь с оператором вставки для этой таблицы.

Example:
CREATE TABLE `assignedresource` (
`distid` binary(16) NOT NULL
)

insert into assignedresource values ('9fad5e9e-efdf-b449');

Error : Lookup Error - MySQL Database Error: Data too long for column 'distid' at row 1

Как решить эту проблему?

Ответы [ 3 ]

13 голосов
/ 31 января 2012

Вы должны удалить дефисы, чтобы значение совпадало с длиной поля ...

Example:
CREATE TABLE `assignedresource` (
`distid` binary(16) NOT NULL
)

insert into assignedresource values ('9fad5e9eefdfb449');

Кроме того, стандартом MySQL является использование этой записи для обозначения строки как двоичной ... X'9fad5e9eefdfb449 ', т.е.

insert into assignedresource values (X'9fad5e9eefdfb449');
0 голосов
/ 16 мая 2018

Что ж, если вы хотите строго вставить шестнадцатеричную строку , сначала вам нужно удалить тире, а затем "unhex" вашей строки перед вставкой в ​​двоичный файл (16) столбец типа данных, код будет выглядеть следующим образом:

INSERT INTO `assignedresource` VALUES(UNHEX(REPLACE('9fad5e9e-efdf-b449','-','')));

Кроме того ... "используемые" данные, которые вы вставляете, на самом деле 8 байт после отменяет это, так что binary (8) будет хорошо, если вы планируете не хранить тире.

0 голосов
/ 31 января 2012

Ваша строка длиной 18 символов, измените базу данных

CREATE TABLE `assignedresource` (
`distid` binary(18) NOT NULL
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...