Yes, after the other response, I discovered that mention in db_add_field. I changed it and had other problems, not with the hook_update_N, but uninstalled and re-installed the module (so bypassed the update) and it's fine. Now I have to restore the tables and try the update again knowing that the code is good. Nancy Injustice anywhere is a threat to justice everywhere. -- Dr. Martin L. King, Jr.
________________________________ From: Steven Jones <[email protected]> To: [email protected] Sent: Sun, September 26, 2010 3:20:33 AM Subject: Re: [development] Adding auto-increment to an existing table Hi Nancy, The API documentation for db_change_field does let you know that serial fields need special handling, in the description of the optional $new_keys argument (incorrectly documented as the $keys_new argument). It points to db_change_field for more documentation on why: http://api.drupal.org/api/function/db_change_field which has a code example for exactly what you are trying to do I think. Good luck! Regards Steven Jones ComputerMinds ltd - Perfect Drupal Websites Phone : 024 7666 7277 Mobile : 07702 131 576 Twitter : darthsteven http://www.computerminds.co.uk On 25 September 2010 00:51, nan wich <[email protected]> wrote: > Thanks, I'll look at your idea. As a very remote option, I don't think any > of the data is critical yet, so I may be able to find a slow time and just > uninstall the module and re-install it. > > And, no it doesn't need to run on Postgres, but I thought these new > functions for 6.x were supposed to work with both. > > > Nancy > > Injustice anywhere is a threat to justice everywhere. -- Dr. Martin L. King, > Jr. > > ________________________________ > From: Sascha Grossenbacher <[email protected]> > To: [email protected] > Sent: Fri, September 24, 2010 4:29:24 PM > Subject: Re: [development] Adding auto-increment to an existing table > > Hi > > On Fri, Sep 24, 2010 at 10:02 PM, nan wich <[email protected]> wrote: >> user warning: Incorrect table definition; there can be only one auto >> column >> and it must be defined as a key query: update_sql /* admin : update_sql */ >> ALTER TABLE client_activity ADD `id` INT auto_increment DEFAULT NULL in >> C:\www\webapps\drupal6\includes\database.mysql-common.inc on line 298. > > Try using the $new_keys argument of db_change_field() to create the > primary key at the same time. If that doesn't work either (possible if > it does it in a separate query), then do not remove the primary key > before making the field autoincrement. > > Also, if you need to do that and this code needs to run on PostgreSQL > too, then you need to make it conditional and only remove/re-add the > key for PostgreSQL. > > Sascha >
