Look ma'... another overkill solution of mine! ;-) In the CVS there's the first support for custom queries running the imdbpy2sql.py script. It can be used to convert a whole database to InnoDB after it was created as MyISAM (and much more, obviously).
Beware that it's mostly untested so if you can try it! In the documentation I've added - in my funny English - these notes and instructions: [MySQL InnoDB] InnoDB is abysmal slow for our purposes: my suggestion is to always use MyISAM tables and - if you really want to use InnoDB - convert the tables later. The imdbpy2sql.py script provides a simple way to manage this case, see ADVANCED FEATURES below. Anyway, if you really need to use InnoDB, in the server-side settings I recommend to set innodb_file_per_table to "true". Beware that the conversion will be extremely slow (some hours), but still faster then using InnoDB from the begin. ADVANCED FEATURES ================= With the -e (of --execute) command line argument you can specify custom queries to be executed at certain times, with the syntax: -e "TIME:[OPTIONAL_MODIFIER:]QUERY" Where TIME is actually one of these: 'BEGIN', 'BEFORE_DROP', 'BEFORE_CREATE', 'AFTER_CREATE', 'BEFORE_MOVIES', 'BEFORE_CAST', 'BEFORE_RESTORE', 'BEFORE_INDEXES' and 'END'. The only available OPTIONAL_MODIFIER is 'FOR_EVERY_TABLE' and it means that the QUERY command will be executed for every table in the database (so it doesn't makes much sense to use it with BEGIN, BEFORE_DROP or BEFORE_CREATE time...), replacing the "%(table)s" text in the QUERY with the appropriate table name. You can specify so many -e arguments as you need, even if they refers to the same TIME: they will be executed from the first to the last. Also, always remember to correctly escape queries: after all you're passing it on the command line! E.g. (ok, quite a silly example...): -e "AFTER_CREATE:SELECT * FROM title;" The most useful case is when you want to convert the tables of a MySQL from MyISAM to InnoDB: -e "END:FOR_EVERY_TABLE:ALTER TABLE %(table)s ENGINE=InnoDB;" If your system uses InnoDB by default, you can trick it with: -e "AFTER_CREATE:FOR_EVERY_TABLE:ALTER TABLE %(table)s ENGINE=MyISAM;" -e "END:FOR_EVERY_TABLE:ALTER TABLE %(table)s ENGINE=InnoDB;" Cool, uh? -- Davide Alberani <[EMAIL PROTECTED]> [PGP KeyID: 0x465BFD47] http://erlug.linux.it/~da/ ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Imdbpy-devel mailing list Imdbpy-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/imdbpy-devel