Bug #43326 | Spatial key index prefix needs documentation in 5.1 upgrade docs | ||
---|---|---|---|
Submitted: | 3 Mar 2009 10:22 | Modified: | 5 Mar 2009 18:27 |
Reporter: | Geert Vanderkelen | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Documentation | Severity: | S2 (Serious) |
Version: | 5.1 | OS: | Any |
Assigned to: | CPU Architecture: | Any |
[3 Mar 2009 10:22]
Geert Vanderkelen
[3 Mar 2009 15:00]
Paul DuBois
Geert, it's probably not useful to say just "this will break your upgrade." Is there a preferred workaround or alternative upgrade strategy that you'd like to recommend?
[3 Mar 2009 15:55]
Geert Vanderkelen
Paul, The easiest workaround was to edit the dump file and remove the prefix from the spacial key declaration. Don't have other idea yet..
[5 Mar 2009 18:27]
Paul DuBois
Thank you for your bug report. This issue has been addressed in the documentation. The updated documentation will appear on our website shortly, and will be included in the next release of the relevant products. Added this to upgrading section: Known issue: Dumps performed by using mysqldump to generate a dump file before the upgrade and reloading the file after upgrading are subject to the following problem: Before MySQL 5.0.40, mysqldump displays SPATIAL index definitions using prefix lengths for the indexed columns. These prefix lengths are accepted in MySQL 5.0, but not as of MySQL 5.1. If you use mysqldump from versions of MySQL older than 5.0.40, any table containing SPATIAL indexes will cause an error when the dump file is reloaded into MySQL 5.1 or higher. For example, a table definition might look like this when dumped in MySQL 5.0: CREATE TABLE `t` ( `g` geometry NOT NULL, SPATIAL KEY `g` (`g`(32)) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 The SPATIAL index definition will not be accepted in MySQL 5.1. To work around this, edit the dump file to remove the prefix: CREATE TABLE `t` ( `g` geometry NOT NULL, SPATIAL KEY `g` (`g`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 Dump files can be large, so it may be preferable to dump table definitions and data separately to make it easier to edit the definitions: shell> mysqldump --no-data other_args > definitions.sql shell> mysqldump --no-create-info other_args > data.sql Then edit definitions.sql before reloading definitions.sql and data.sql, in that order.