MySQL: лучший способ для хранения MAC-адресов?

Какой лучший тип поля используется для хранения MAC-адресов в базе данных MySQL? Кроме того, должен ли он храниться с определенным разделителем (двоеточие или тире) или он должен храниться без разделителя?

Ответы

Ответ 1

используйте bigint unsigned (8 байт), затем вы можете:

select hex(mac_addr) from log;

и

insert into log (mac_addr) values (x'000CF15698AD');

Ответ 2

Посмотрите здесь. Как правило, CHAR (12) хорош, но детали зависят от ваших потребностей. Или просто используйте PostgreSQL, который имеет встроенный тип macaddr.

Ответ 3

Учитывая, что MySQL не поддерживает пользовательские расширения и не поддерживает произвольные расширения или плагины (только для систем хранения), лучше всего хранить его как CHAR (17) как строку ASCII в стандартная нотация (например, с разделителями двоеточия) или небольшой BLOB и непосредственно хранить байты. Тем не менее, нотация строк будет более дружественной для большинства приложений.

Вы можете связать его с триггером, который проверяет, является ли он MAC-адресом, поскольку это действительно единственный способ обеспечить достоверность данных без поддержки пользовательских типов.