2010-12-22 6 views
14

Was ist der beste Feldtyp zu verwenden MAC-Adressen in einer MySQL-Datenbank zu speichern? Außerdem soll es mit einem gewissen Separator (Kolon oder Bindestrich) gespeichert werden oder sollte es ohne Trennzeichen gespeichert werden?MySQL: Der beste Weg, MAC-Adressen zu speichern?

+0

definieren 'beste'. Was beabsichtigen Sie mit den Daten zu tun? –

+0

Es ist für ein Inventory-System. Ich nehme an, meine Frage ist "Was machen die meisten Leute?". – Nick

+0

Vielen Dank für die Antworten! Ich werde etwas experimentieren. – Nick

Antwort

2

Werfen Sie einen Blick here. Im Allgemeinen ist CHAR (12) gut, aber Details hängen von Ihren Bedürfnissen ab. Oder verwenden Sie einfach PostgreSQL, das einen eingebauten Macaddr-Typ hat.

+2

Zum ersten Mal habe ich erwähnt, dass PostgreSQL macaddr Typ –

+0

vorsichtig ist: PostgreSQL Macaddr Typ unterstützt keine 8-Byte-MACs – Tilo

1

Vorausgesetzt, dass MySQL keine benutzerdefinierten Erweiterungen unterstützt und keine willkürlichen Erweiterungen oder Plugins unterstützt (nur für Speicher-Engines), ist es am besten, sie als CHAR (17) als ASCII-Zeichenfolge im Standard zu speichern Notation (z. B. mit Doppelpunkttrennzeichen) oder ein kleines BLOB und speichern Sie die Bytes direkt. Die String-Notation wird jedoch für die meisten Anwendungen freundlicher.

Sie können es mit einem Trigger paaren, der bestätigt, dass es sich um eine MAC-Adresse handelt, da dies die einzige Möglichkeit ist, Datengültigkeit ohne Unterstützung für benutzerdefinierte Typen zu erzwingen.

28

Verwendung bigint unsigned (8 Byte), dann können Sie:

select hex(mac_addr) from log; 

und

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

Warum nicht 6 Byte? –

+0

so können Sie auch Infiniband GUIDs setzen :-) –

Verwandte Themen