Мне нужно найти некоторые данные, которые находятся в формате bigint, в ibdata1 или ib_logfile *.Как найти значение столбца bigint в ibdata1?
Как это сделать?
Мне нужно найти некоторые данные, которые находятся в формате bigint, в ibdata1 или ib_logfile *.Как найти значение столбца bigint в ibdata1?
Как это сделать?
Bgrep будет инструментом для этого.
Учитывайте, что InnoDB хранит целое число нестандартным способом. Самый старший бит обозначает знак, если тип SIGNED
. 1 устанавливается, если значение положительное.
Например, если поле объявлено как BIGINT
(подписанное по умолчанию), а его значение равно 38 в табличном пространстве InnoDB, оно будет храниться как 0x8000000000000026
.
Если поле объявлено как BIGINT UNSIGNED
, значение 38 будет сохранено как 0x0000000000000026
.
Вы уверены? Каждое кодирование «подписанного» я слышал о магазинах «+» как «0». –
Да, я уверен. Это необычный способ. почему я добавил примечание. Но это не единственный случай. В <5.6 также установлен старший бит DATETIME – akuzminsky
В мысли pre-5.6 'DATETIME' используется« упакованный десятичный знак ». –
Почему бы вам не просто восстановить таблицу? –
@ N.B. Мне нужно узнать даты вставки некоторых данных. – palindrom
Вы действительно не поняли точку моего вопроса, верно? –