2016-03-04 2 views
0

Мне нужно найти некоторые данные, которые находятся в формате bigint, в ibdata1 или ib_logfile *.Как найти значение столбца bigint в ibdata1?

Как это сделать?

+0

Почему бы вам не просто восстановить таблицу? –

+0

@ N.B. Мне нужно узнать даты вставки некоторых данных. – palindrom

+0

Вы действительно не поняли точку моего вопроса, верно? –

ответ

1

Bgrep будет инструментом для этого.

Учитывайте, что InnoDB хранит целое число нестандартным способом. Самый старший бит обозначает знак, если тип SIGNED. 1 устанавливается, если значение положительное.

Например, если поле объявлено как BIGINT (подписанное по умолчанию), а его значение равно 38 в табличном пространстве InnoDB, оно будет храниться как 0x8000000000000026.

Если поле объявлено как BIGINT UNSIGNED, значение 38 будет сохранено как 0x0000000000000026.

+0

Вы уверены? Каждое кодирование «подписанного» я ​​слышал о магазинах «+» как «0». –

+0

Да, я уверен. Это необычный способ. почему я добавил примечание. Но это не единственный случай. В <5.6 также установлен старший бит DATETIME – akuzminsky

+0

В мысли pre-5.6 'DATETIME' используется« упакованный десятичный знак ». –

Смежные вопросы