Or the following list, the missing referential integrity still remains
as a MySQL nogo. MySQL is perfect for your average website, but
definitely not for company critical data.
Weird behaviour
1. You can define a varchar/char field 'auto_increment'.
2. SELECT 'A' = 'a' gets you true.
3. Int(10) is the same as int(1) eventhough the manual says differently.

4. Tablenames are treated case-sensitive on *n?x systems, not on
windows.
5. Change a piece of a table definition and mysql creates a temporary
copy of the table, very nice if you have a 6GB table occupying a 10GB
tablespace... (yes, the change will fail)
6. Adding indices result in a similar temporary copy.
7. What does zerofill do to a integer field? A database is meant to
store data, not to format it while storing.
8. When I define a char(32) (md5-strings anyone) field, I really don't
mean varchar(32) (MySQL automatically changes all char(X >4) to
varchar(X)).
9. This is correct according to mysql: SELECT a, b, count(c) FROM d
GROUP BY a; what will MySQL do with the b?
10. If you update a record and set it to the same value, mysql'll define
that as unaffected. Even if it does change a timestamp field.

Bugs
1. Insert a NULL value in a NOT NULL field and the query gets executed.
In short, you can't force NOT NULL...
2. Under high loads MySQL will restart itself occasionally. When a child
doesn't die fast enough "socket already in use"-error occurs.
3. Replication doesn't work that well.
4. MySQL will always try to insert a date into a date field, even if you
supply an empty or bogus string (it'll insert 0000-00-00 then).
5. When underflowing or overflowing a integer field, mysql will insert
the largest or smallest possible value instead.
6. Long texts are chopped to the correct size, not denied.
7. MySQL will also insert 0 into a numeric field if you supply an empty
or bogus string.
8. Close a connection and a long query still runs on... The only way to
kill it is via the (mysql)admin
9. Connections with a timeout? Very nice when you need to do a lot of
calculations on your data or a query lasts very long. "Lost connection
to MySQL server during query"
10. You can insert the same value twice in a ENUM-field
11. You can't use a Temporary table more than once in a query.
http://www.mysql.com/doc/en/Temporary_table_problems.html

Missing functionality
1. No subselects in 3.x versions and a partial implementation in 4.0.x.
2. No triggers.
3. No foreign keys with default tableformat.
4. No (free) decent hotbackup tool (in the distribution).
5. No transactionsupport in the default tableformat.
6. No procedural language(s).
7. No stored procedures/functions.
8. No ipaddress or geometrical datatypes.
9. JDBC driver still buggy.
10. No specific character encoding and multibyte charsupport.
11. MySQL has trouble optimising complex queries, SELECT ... FROM ...
WHERE something BETWEEN ... can be considerd complex in some cases...
12. It can't use multiple indices for filtering records from one table.
13. It can't do ORDER BY ... DESC that well, it'll do a filesort. Even
if there are only two results to sort.
14. There is no locale and timezone support.
15. No rowlevel tablelocking, except in innodb.
16. No views.
17. Unions are not available in the more mainstream 3.x releases, only
in the brand new 4.x releases.
18. The explain command hardly explains anything.
19. No real boolean/bit/bitarray type.
20. No CHECK-contraints.


Micha Schopman
Software Engineer
Modern Media, Databankweg 12 M, 3821 AL  Amersfoort
Tel 033-4535377, Fax 033-4535388
KvK Amersfoort 39081679, Rabo 39.48.05.380
[Todays Threads] [This Message] [Subscription] [Fast Unsubscribe] [User Settings] [Donations and Support]

Reply via email to