gourmet team mailing list archive
-
gourmet team
-
Mailing list archive
-
Message #00005
Fwd: Database changed without update code???
Forgot to reply all...
On Fri, Jun 28, 2013 at 10:53 AM, Bernhard Reiter <ockham@xxxxxxxxx> wrote:
> Tom,
>
> Am 2013-06-28 15:07, schrieb Thomas Mills Hinkle:
>
> Bernhard et al,
>
> I'm the one to blame...
>
> I've been a bit busy and haven't followed all the development leading up
> to the 0.16 release, but it looks like 0.16.0 went out with changes to the
> database model but *without* code to update existing databases.
>
> Actually, I tried to make sure existing databases *are* updated, see
> https://github.com/thinkle/gourmet/blob/master/gourmet/backends/db.py#L510through line 554. I thought I tested this stuff -- does it break your DB?
>
>
> <https://github.com/thinkle/gourmet/blob/master/gourmet/backends/db.py#L510>
>
Yes. The update code must not have run or not have worked for my DB. I get
a complaint about the "ID" column not existing for the pantry DB.
> <https://github.com/thinkle/gourmet/blob/master/gourmet/backends/db.py#L510>
>
> Specifically, it seems like primary keys have been changed in the pantry
> and other columns.
>
> This is pretty bad -- I've always tried to ensure that existing users
> get treated well. I'm wondering, have bug reports been flowing in about
> this? Is 0.16 not out generally?
>
> Yes it is, and the Ubuntu package has even been part of 13.04 already.
> (Other distributions lag behind a bit, though, and I still haven't managed
> to roll out a Windows release.) I really tried to make sure not to break
> anything -- please describe what specifically is broken (any errors, or
> messed up DB layouts?) Anyway, there have been no bug reports yet that I
> was able to attribute to this change. Actually, not that many new bug
> reports after 0.16 at all...
>
>
Usually when I've broken the DB I've heard about it, so it may be that
there's an odd reason why it's not running on my system.
> For the future, changes to the DB structure are a pain in the ass and
> shouldn't be made for simple "code cleanup" reasons -- I doubt there is any
> functional benefit to introducing new primary key columns named 'id' in
> place of or in addition to the old ones?
>
> Yes there is -- it wasn't possible to connect gourmet to a MySQL database
> before that change, see https://github.com/thinkle/gourmet/issues/681 and
> the blog article linked therein that made me aware of the issue,
> http://blog.henrygis.com/2011/02/setting-up-gourmet-recipe-manager-part.html
>
> In a nutshell, MySQL requires length parameters to VARCHARs if they're
> supposed to serve as primary keys. So I had the choice between adding such
> parameters (with some arbitrarily chosen value for their maximum lengths,
> thus possibly breaking longer values in the affected columns), or introduce
> new auto-incremented integer primary keys -- I went for the latter. (This
> is also described in the comment at
> https://github.com/thinkle/gourmet/blob/master/gourmet/backends/db.py#L535)
>
>
> <https://github.com/thinkle/gourmet/blob/master/gourmet/backends/db.py#L535>
>
Makes sense. All's well then -- it had looked like it might just be code
clean-up. Obviously using an INT and ID as a key is more kosher and
probably the right way (tm), but I had wanted to warn us off changing the
DB unnecessarily for obvious reasons.
> <https://github.com/thinkle/gourmet/blob/master/gourmet/backends/db.py#L535>
>
> I would tend to be inclined to just roll back the changes (that's what
> I'll do locally),
>
> Please don't (at least not in the public git repo) -- as described above,
> this wasn't just for cleanup's sake. If it's really broken, we'd better
> provide an actual fix with 0.16.1.
>
> Of course -- in agreement.
> but since the code is now in the wild and new users will get the new
> columns, I think we have to write the update code anyway.
>
> Ironically, the one bug report I know of related to this is
> https://github.com/thinkle/gourmet/issues/711 -- seems like it still
> doesn't work with MySQL, but I haven't had the time yet to look into it.
>
Oh the pain of software -- pity that. I haven't played with MySQL myself in
Gourmet in years.
Tom
>
> <https://github.com/thinkle/gourmet/issues/711>
>
> Tom
>
> Bernhard
>
>
References