This means that the norm of creating your model and then using
'tg-admin sql create' will not work for creating the needed InnoDB
tables; the tables created will be of the non-transactional MyISAM
type. Instead, it will be necessary to figure out what SQLObject
would
do (probably using debugging output), and then do it manually, with
just appending 'ENGINE=INNODB' onto the CREATE statements.
You can do this quite easily by hand by simple doing a `tg-admin sql
sql`, and changing the output to contain the relevant 'ENGINE=INNODB'
data. I also believe that you can set up your MySQL installation to
use InnoDB by default, although I am not positive, as I tend to avoid
MySQL.
This sure breaks the 'ease of use' paradigm for TurboGears. What work
is being done to address this problem?
Not really. When you choose a database backend, you should be aware
of the limitations of that database, and be prepared to deal with
them. SQLite, for example, also doesn't really support transactions,
but it can still be used as an SQLObject backend. Using transactions
on a database that doesn't support transactions (SQLite, MySQL MyISAM
backend, etc.) won't hurt anything, but transactions just won't
work. This is something that you should know going into using either
MySQL or SQLite.
It might be wise, however, to have tg-admin prompt a user to ask
which storage mechanism to use if MySQL is the database type, and
warn them that transactions don't work unless you pick InnoDB.
In the meantime, PostgreSQL is also free, and is a real RDBMS that
doesn't suffer from a weak default storage backend.
--
Jonathan LaCour
http://cleverdevil.org