On Jul 13, 2005, at 9:57 PM, Alvaro Herrera wrote:
On Thu, Jul 14, 2005 at 02:46:01PM +1000, Neil Conway wrote:
Vivek Khera wrote:
The first sentence rules out MySQL, so the second sentence should read
"So that leaves Postgres". Your problem is solved ;-)
(If you are accustomed to Oracle, you are probably expecting an ACID
database, which rules out MySQL too).
Does MySQL with InnoDB not qualify as an ACID-compliant database?
Not if you intermix InnoDB tables with MyISAM tables, which AFAIK many
people seem to do.
Don't forget that MySQL will create a table as MyISAM, even when told to create it as an InnoDB table, if, by some chance, InnoDB is not enabled. InnoDB has to be specified at the time of table creation, but MySQL, true to form, will not generate a warning that InnoDB is not enabled or present, and will instead create the table using MyISAM. Worse yet, if this is not caught, and since MySQL also fakes transaction support, it can look like everything is working, until data has to be rolled back, and it can't be. Needless to say, this can lead to some pretty messed data in your tables, depending on your application.
It is the silence, combined with doing what it feels like and not what you tell it to do, that makes me shy away from MySQL for applications where data integrity is vital. You can't trust an error to be raised when it should be. Very dangerous. I've heard these issues are being addressed in 5.0 or 5.1 (I forget which).