

I really hope they will work on data integrity in the upcoming releases, but I fear it's not going to happen. If you want to proper, free database, go with PostgreSQL. Then you _know_ you don't get any type checks and fancy things like that, so you code for it. If you need something lean and fast, try SQLite. I know it's popular database, but I would probably not recommend MySQL for any project. Inserting a row with a primary key value outside the legal range? It'll give no errors, but it also wont insert the row. This has the potential to create great data loss. Will it honour the constraint? Not so much.Ĭreateing an InnoDB table, for (some) referential integrity? Sure, it'll give no errors, but if innodb support is disabled for any reason, it will create MyISAM tables instead, without any hint or warning. You want a contraint? Sure, it'll accept that query.

Adding an integer and a string? No problem. With MySQL, I have seen tables get badly corrupted, sometimes even beyond repair(!) if a disk runs full. In terms of data integrity, PostgreSQL is kilometers ahead of MySQL. That would be fine, though, if it weren't for the failing integrity. PostgreSQL, that they forget that MySQL is usually only fast for really simple queries. I don't mean this in a bad way, but a lot of people are so focused on the performance of MySQL vs. Many people see MySQL as the consistent winner in database benchmarks.
