[wp-hackers] dbDelta and duplicated indices (WAS: A Question
On Plugins)
Ryan Scheuermann
ryan at concept64.com
Tue Apr 25 15:18:46 GMT 2006
Jamie Talbot wrote:
> Andy Skelton wrote:
>
>> If the db version in the option is outdated or missing:
>> $my_queries = "CREATE TABLE foo (...); CREATE TABLE bar (...);"
>> require_once(ABSPATH/wp-admin/upgrade-functions.php);
>> dbDelta($my_queries);
>> update your db version option.
>>
>
> Incidentally, (and just to hijack a little bit) does dbdelta handle multi-column primary keys? When
> the table already exists (say I'm upgrading), I get errors like "multiple key not allowed" unless I
> turn errors off. Also, it seems like UNIQUE indices are duplicated when calling dbdelta repeatedly.
> - Instead of being overwritten, they are just added, without being removed first. I'm pretty sure
> this isn't intended behaviour? If it isn't, I'll open a ticket... Can anyone else confirm this
> behaviour for other kinds of indices?
>
> Jamie.
>
I can confirm this for UNIQUE KEY creation. dbDelta does not play well
with UNIQUE KEY at all. I found that if you change it to simply KEY and
not UNIQUE KEY, dbDelta handles the recreation of the key correctly - or
it ignores it completely if it already exists.
It won't duplicate the unique indices for me, it simply gives me an
error stating I can't create an index of the same name. Whatever the
symptom, dbDelta is attempting to recreate a UNIQUE KEY index every time.
Ryan
More information about the wp-hackers
mailing list