On Feb 28, 11:42 am, Frederick Cheung <[email protected]>
wrote:
> On Feb 28, 3:07 pm, Dean <[email protected]> wrote:
>
> > This occurred to me too.  The column type is text. I don't recall the
> > length, but it was between 50,000 & 100,000 characters.  I'll check
> > the max_allowed_packet setting when I get back to work.
>
> Text columns have a 65535 limit (mediumtext and longtext columns can
> take much more)
>
> Fred

Thanks.  That is the problem.  65535 characters on the nose.

--Dean

> >http://dev.mysql.com/doc/refman/5.0/en/blob.html
>
> > --Dean
>
> > On Feb 26, 11:38 am, Frederick Cheung <[email protected]>
> > wrote:
>
> > > On Feb 26, 4:15 pm, Dean <[email protected]> wrote:
>
> > > > This doesn't explain why the userlist isn't correctly serialized &
> > > > deserialized when reloaded....
>
> > > What's the column type & how long is the data ? Is it getting
> > > truncated because of the size of the column ?
>
> > > Fred
>
> > > > --Dean
>
> > > > On Feb 26, 9:29 am, Dean <[email protected]> wrote:
>
> > > > > Found the problem. The String is not correct YAML:
>
> > > > > >> YAML::load(s.userlist)
>
> > > > > ArgumentError: syntax error:ScannerException while scanning a quoted
> > > > > scalar we had this found unexpected end of stream from (irb):8
>
> > > > > The code from AR::B is
>
> > > > >       def object_from_yaml(string)
> > > > >         return string unless string.is_a?(String) && string =~ /^---/
> > > > >         YAML::load(string) rescue string
> > > > >       end
>
> > > > > --Dean
>
> > > > > On Feb 26, 9:03 am, Dean <[email protected]> wrote:
>
> > > > > > I have a rails class that serializes one attribute.
>
> > > > > >     class Statistic < ActiveRecord::Base
> > > > > >       serialize :userlist
> > > > > >     end
>
> > > > > > When a statistic object is loaded and it's userlist changed from a
> > > > > > String to an Array userlist always gets serialized back into a 
> > > > > > String.
> > > > > > Objects that are properly deserialized into Arrays stay that way. 
> > > > > > The
> > > > > > framework seems to remember and deserialize :userlist into a String
> > > > > > even if it went in as an Array.
>
> > > > > >   >> s = Statistic.find 238
> > > > > >   => #<Statistic id: 238, userlist: "--- \n- 2222437\n- \"99779\"\n-
> > > > > > \"120429\"\n- \"210503\"\n- 32...">
> > > > > >   # Note here: :userlist is an Array in YAML. Why doesn't it get
> > > > > > correctly deserialized?
>
> > > > > >   >> s.userlist.class
> > > > > >   => String
> > > > > >   >> s.userlist = s.userlist.split(/\s+/)
>
> > > > > >   >> s.userlist.class
> > > > > >   => Array
>
> > > > > >   >> s.save
> > > > > >   => true
>
> > > > > >   >> s.reload
> > > > > >   => #<Statistic id: 238,userlist: "--- \n- 2222437\n- \"99779\"\n-
> > > > > > \"120429\"\n- \"210503\"\n- 32...">
>
> > > > > >   >> s.userlist.class
> > > > > >   => String
>
> > > > > > The goal of this exercise is to convert all String userlists to 
> > > > > > Array.
> > > > > > If I change the class (serialize :userlist, Array) before 
> > > > > > converting I
> > > > > > get TypeMismatch exceptions.
>
> > > > > >     ActiveRecord::SerializationTypeMismatch: userlist was supposed 
> > > > > > to
> > > > > > be a Array, but was a String
>
> > > > > > Is there a way to force AR to interpret userlist as an Array?
>
> > > > > > % rails --version
> > > > > > Rails 2.3.4
>
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to