Reason #1843 why MySQL is a toy
From their own documentation:
Error handling in InnoDB is not always the same as specified in the SQL standard. According to the standard, any error during an SQL statement should cause the rollback of that statement. InnoDB sometimes rolls back only part of the statement, or the whole transaction.
Um, no, last I read the spec, and certainly the way ACID-compliant databases are supposed to behave, is that if you do something wrong inside a transaction, the entire transaction is rolled back. When in interactive mode, there’s some shakiness about whether a syntax error should abort the transaction, but often you’re in “auto-commit” mode, which is treating each statement as its own transaction.
The idea that you might “roll back only part of the statement” is terrifying. I mean it’s wrong on a scale that shows a complete disregard for anything vaguely having to do with data integrity. This is a very “simple” concept, and while implementation can be complicated, it’s not an unknown. Not implementing transactional semantics like this correctly means you basically don’t have transactions.
You can call them transactions, but they’re not if they don’t behave according to ACID guidelines.
This entry was posted at 11:00 am on 14 September 2004 and is filed under PostgreSQL. You can follow any responses to this entry through the post-specific RSS 2.0 feed.
So is PostgreSQL, it’s “more free” if you know what I mean, and actually behaves correctly. That’s my #1 requirement of a DB, that it do what it’s told. MyQSL has so many gotcha’s that it’s disturbing that anyone uses it.
If you are just throwing log files into a database (something I do a lot of in my job), then yeah, MySQL is fine. The minute you are using a RDBMS as more than a hopped-up file, then MySQL starts to not look so good. I can tolerate dumb behavior for log files, but the minute customer data hits it, I’m getting nervous.
Responses are currently closed, but you can trackback from your own site.
Yeah, but it’s a toy that’s free, widely available, has lots of APIs written for it, and suits the needs of 90% of db-driven applications.