2010-12-22 20 views
14

¿Cuál es el mejor tipo de campo para almacenar direcciones MAC en una base de datos MySQL? Además, ¿debe almacenarse con un cierto separador (dos puntos o guión) o debe almacenarse sin un separador?MySQL: ¿la mejor manera de almacenar direcciones MAC?

+0

definir 'mejor'. ¿Qué piensas hacer con los datos? –

+0

Es para un sistema de inventario. Supongo que mi pregunta es "¿qué hace la mayoría de la gente?". – Nick

+0

¡Gracias por todas las respuestas! Voy a hacer algo de experimentación. – Nick

Respuesta

2

Echa un vistazo a here. En general, CHAR (12) es bueno, pero los detalles dependen de sus necesidades. O simplemente use PostgreSQL, que tiene incorporado un tipo de macaddr.

+2

Primera vez que he visto mencionar macaddr PostgreSQL tipo –

+0

cuidado: el tipo macaddr PostgreSQL no admite MAC de 8 bytes – Tilo

1

Dado que MySQL no es compatible con extensiones definidas por el usuario ni admite extensiones o complementos arbitrarios (solo para motores de almacenamiento), lo mejor es almacenarlo como CHAR (17) como cadena ASCII en estándar notación (por ejemplo, con separadores de dos puntos) o un BLOB pequeño y almacena los bytes directamente. Sin embargo, la notación de cadena será más amigable para la mayoría de las aplicaciones.

Es posible que desee vincularlo con un desencadenador que valide que se trata de una dirección MAC, ya que esa es realmente la única forma de imponer la validez de los datos sin soporte para tipos personalizados.

28

uso bigint sin firmar (8 bytes), entonces usted puede:

select hex(mac_addr) from log; 

y

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

¿Por qué no 6 bytes? –

+0

por lo que también puede poner GUIDs Infiniband :-) –

Cuestiones relacionadas