шестнадцатеричный литерал слишком большой в sqlite - PullRequest
1 голос
/ 15 марта 2020

Поэтому я хотел преобразовать запрос msyql в sqlite, где в нем есть изображения в шестнадцатеричном коде, когда я выполняю тот же запрос в браузере sqlite, он выдает ошибку, как правильно это сделать.

Result: hex literal too big: 0x73616666726f6e2e6a7067
At line 1:
INSERT INTO `test` (`id`, `yeild`, `image`, `city`, `info`, `fertilizer`) VALUES
(9, 'Wheat', 0x77686561742e6a7067, 'Bangalore', 'Weather that is comfortable for humans is also good for wheat. Wheat needs 12\r\nto 15 inches (31 to 38 centimetres) of water to produce a')


CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL PRIMARY KEY,
  `yeild` varchar(40) NOT NULL,
  `image` blob NOT NULL,
  `city` varchar(50) NOT NULL,
  `info` varchar(60000) NOT NULL,
  `fertilizer` varchar(5000) NOT NULL);

Ответы [ 2 ]

1 голос
/ 15 марта 2020
 INSERT INTO `test` (`id`, `yeild`, `image`, `city`, `info`, `fertilizer`) VALUES
(9, 'Wheat', '0x77686561742e6a7067', 'Bangalore', 'Weather that is comfortable for humans is also good for wheat. Wheat needs 12\r\nto 15 inches (31 to 38 centimetres) of water to produce a', 'My fertilizser');

Ваше шестнадцатеричное значение должно быть в кавычках. Кроме того, вы передаете только 5 входных значений, но в таблице 6 полей.

Демо

0 голосов
/ 15 марта 2020

Вы хотите вставить литерал BLOB-объекта, а не число:

X'77686561742e6a7067'

Из документации :

Шестнадцатеричные целочисленные литералы интерпретируются как 64 -бит целых чисел с дополнением до двух и, следовательно, ограничены шестнадцатью значащими цифрами точности.

и

BLOB-литералы - это строковые литералы, содержащие шестнадцатеричные данные и начинающиеся с единственного " х "или" х "символ. Пример: X'53514C697465 '

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