2016-03-28 6 views
-1

Ich habe meine Rails-Anwendung mit MySQL-Datenbank verbunden, habe festgestellt, dass Daten in einigen Tabellen komprimiert sind.Rails und komprimierte Tabellendaten mysql

Hier ist ein Beispiel für Daten ausgewählt aus ersten Datensatz in einer der Tabellen.

irb(main):024:0> data 
=> #<Events_Full_Sections event_id: 1, a_full: "x\x9C\xD3\xD55447HN5H\xD2u\xD4\xD5\xE5\x8A60\xD3wKM\xD27204\xB324\xB425\xB622Q\xD0 
\xD55050\x88U\b+\x8A...", b_full: "x\x9C]\x90OO\e1\x10\xC5\xEF\xFE\x14s\x04j{\xBC\xF9\xB3\xD0E=\xA4\b\x91\nh+\xD8(g\xC7;\xD9\xB5\x 
E2\xB5\x8D\xD7!\x11\x9F\x9E%\xA5=\xF44O...", c_full: "x\x9C\x03\x00\x00\x00\x00\x01", e_full: "x\x9C\xC5;\xFBo\xDB8\xD2?o\xFE\nF\x 
C5F\xF6\xAE\xF5r\x1EN\x93\xC8A/mq\xFD\xD0\xDE\x15M\x8B\xC5\xA1)\nJ\xA2m\xA5\x92\xA8\x95\xE4$\xBEl\xFE...", f_full: "x\x9Cu\xCBAK\x 
C30\x14\xC0\xF1{>E\xD8\xFD%\xCD\x8A\xA8\x99\x9D\xA00\x06\x0E\xEC\xA1\x82\xD7.>\x9Aj\x9A\x17\x92\a\xDD\xBE\xBD-\x88\x17\xF1\xFA\xE7 
\xF7\a0...", h_full: "x\x9Cu\x90Ak\[email protected]\x10\x85\xEF\xFB+\x06O\nn\x92\xDD$FS\xF6\xD0j\xC0Bk\x8A\xF1\xD2S\x89\xBBS#5\xBBa\x934\xF5\x 
DFw\xD5\x82\xA72\xF0\xDE...", i_full: "x\x9C\x03\x00\x00\x00\x00\x01", k_full: "x\x9C\x03\x00\x00\x00\x00\x01", z_full: "--1170ce0 
b-Z--\n", compressed: true> 

habe ich versucht, eine Funktion zu dekomprimieren, so etwas wie dieses

def decompress(text) 
    Zlib::Inflate.new(-Zlib::MAX_WBITS).inflate(Base64.decode64(text)) 
    end 

Und wenn ich diese Funktion aufrufen, erhalte ich folgendes:

irb(main):032:0> decompress(d) 
NoMethodError: undefined method `unpack' for #<Events_Full_Sections:0x66d3dd0> 
     from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/activemodel-4.2.5.2/lib/ 
`method_missing' 
     from C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/base64.rb:58:in `decode64' 
     from (irb):20:in `decompress' 

Jede Idee, was könnte falsch sein?

Dank

Antwort

1

Ihre decompress Funktion erwartet einen String in Base64-Codierung bei der Eingabe, aber Sie füttern es mit einer Modellinstanz, die kein String.

Auch Felder selbst sehen nicht wie base64 aus, eher wie eine rohe zlib-komprimierte.

Versuchen Zlib.inflate(d.a_full) (und so weiter)

+0

Danke, habe es funktioniert! und lernte eine andere neue Sache :) – Deano

Verwandte Themen