Contents | Next
This is the MySQL reference manual; it documents MySQL
version 3.22.29.
MySQL is a very fast, multi-threaded, multi-user and robust SQL
(Structured Query Language) database server.
For Unix and OS/2 platforms, MySQL is basically free; for Microsoft
platforms you must get a MySQL license after a trial time of 30
days. See section 3 MySQL licensing and support.
The MySQL home page
provides the latest information about MySQL.
For a discussion of MySQL's capabilities, see section 1.5 The main features of MySQL.
For installation instructions, see section 4 Installing MySQL. For tips on porting
MySQL to new machines or operating systems, see section G Comments on porting to other systems.
For information about upgrading from a 3.21 release, see
section 4.16.2 Upgrading from a 3.21 version to 3.22.
For a tutorial introduction to MySQL, see
section 8 MySQL Tutorial.
For examples of SQL and benchmarking information, see the benchmarking
directory ('sql-bench' in the distribution).
For a history of new features and bug fixes, see section D MySQL change history.
For a list of currently known bugs and misfeatures, see section E Known errors and design deficiencies in MySQL.
For future plans, see section F List of things we want to add to MySQL in the future (The TODO).
For a list of all the contributors to this project, see section C Contributors to MySQL.
IMPORTANT:
Send bug (error) reports, questions and comments to the mailing list at
For source distributions, the mysqlbug script can be found in the
'scripts' directory. For binary distributions, mysqlbug can
be found in the 'bin' directory.
If you have any suggestions concerning additions or corrections to this
manual, please send them to the manual team at
(docs@mysql.com).
MySQL is a true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular and
standardized database language in the world. MySQL is a
client/server implementation that consists of a server daemon
mysqld and many different client programs and libraries.
SQL is a standardized language that makes it easy to store, update and
access information. For example, you can use SQL to retrieve product
information and store customer information for a web site.
MySQL is also fast and flexible enough to allow you to store
logs and pictures in it.
The main goals of MySQL are speed, robustness and ease of use.
MySQL was originally developed because we needed a SQL server
that could handle very large databases an order of magnitude faster than
what any database vendor could offer to us on inexpensive hardware. We
have now been using MySQL since 1996 in an environment with
more than 40 databases containing 10,000 tables, of which more than 500
have more than 7 million rows. This is about 100 gigabytes of
mission-critical data.
The base upon which MySQL is built is a set of routines that
have been used in a highly demanding production environment for many
years. Although MySQL is still under development, it already
offers a rich and highly useful function set.
The official way to pronounce MySQL is "My Ess Que Ell" (Not
MY-SEQUEL).
This manual is currently available in Texinfo, plain text, Info, HTML,
PostScript and PDF versions. Because of their size, PostScript and PDF
versions are not included with the main MySQL distribution, but
are available for separate download at
http://www.mysql.com.
The primary document is the Texinfo file. The HTML version is produced
automatically with a modified version of texi2html. The plain
text and Info versions are produced with makeinfo. The Postscript
version is produced using texi2dvi and dvips. The PDF
version is produced with pdftex.
This manual is written and maintained by David Axmark, Michael (Monty)
Widenius, Paul DuBois and Kim Aldale. For other contributors, see
section C Contributors to MySQL.
This manual uses certain typographical conventions:
constant
-
Constant-width font is used for command names and options; SQL statements;
database, table and column names; C and Perl code; and environment variables.
Example: "To see how
mysqladmin works, invoke it with the
--help option."
- 'filename'
-
Constant-width font with surrounding quotes is used for filenames and
pathnames. Example: "The distribution is installed under the
'/usr/local/' directory."
- 'c'
-
Constant-width font with surrounding quotes is also used to indicate
character sequences. Example: "To specify a wildcard, use the '%'
character."
- italic
-
Italic font is used for emphasis, like this.
- boldface
-
Boldface font is used for access privilege names (e.g., "do not grant the
process privilege lightly") and to convey especially strong
emphasis.
When commands are shown that are meant to be executed by a particular
program, the program is indicated by the prompt shown with the command. For
example, shell> indicates a command that you execute from your login
shell, and mysql> indicates a command that you execute from the
mysql client:
shell> type a shell command here
mysql> type a mysql command here
Shell commands are shown using Bourne shell syntax. If you are using a
csh-style shell, you may need to issue commands slightly differently.
For example, the sequence to set an environment variable and run a command
looks like this in Bourne shell syntax:
shell> VARNAME=value some_command
For csh, you would execute the sequence like this:
shell> setenv VARNAME value
shell> some_command
Database, table and column names often must be substituted into commands. To
indicate that such substitution is necessary, this manual uses
db_name, tbl_name and col_name. For example, you might
see a statement like this:
mysql> SELECT col_name FROM db_name.tbl_name;
This means that if you were to enter a similar statement, you would supply
your own database, table and column names, perhaps like this:
mysql> SELECT author_name FROM biblio_db.author_list;
SQL statements may be written in uppercase or lowercase. When this manual
shows a SQL statement, uppercase is used for particular keywords if those
keywords are under discussion (to emphasize them) and lowercase is used for
the rest of the statement. So you might see the following in a discussion of
the SELECT statement:
mysql> SELECT count(*) FROM tbl_name;
On the other hand, in a discussion of the COUNT() function, the
statement would be written like this:
mysql> select COUNT(*) from tbl_name;
If no particular emphasis is intended, all keywords are written uniformly
in uppercase.
In syntax descriptions, square brackets ('[' and ']') are used
to indicate optional words or clauses:
DROP TABLE [IF EXISTS] tbl_name
When a syntax element consists of a number of alternatives, the alternatives
are separated by vertical bars ('|'). When one member from a set of
choices may be chosen, the alternatives are listed within square brackets.
When one member from a set of choices must be chosen, the alternatives are
listed within braces ('{' and '}'):
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
{DESCRIBE | DESC} tbl_name {col_name | wild}
We once started off with the intention of using mSQL to connect to our
tables using our own fast low-level (ISAM) routines. However, after some
testing we came to the conclusion that mSQL was not fast enough or
flexible enough for our needs. This resulted in a new SQL interface to our
database but with almost the same API interface as mSQL. This API was
chosen to ease porting of third-party code.
The derivation of the name MySQL is not perfectly clear. Our base
directory and a large number of our libraries and tools have had the prefix
"my" for well over 10 years. However, Monty's daughter (some years younger)
is also named My. So which of the two gave its name to MySQL is
still a mystery, even for us.
While this manual is still the right place for up to date techical
information, its primary goal is to contain everything there is to know
about MySQL. And it is sometimes nice to have a bound book to read
in bed or while you travel. Here are a list of books about MySQL (in
English).
| Title | MySQL
|
| Publisher | New Riders
|
| Author | Paul DuBois
|
| Pub Date | 1st Edition December 1999
|
| ISBN | 0735709211
|
| Pages | 800
|
| Price | $49.99 US
|
Foreword by Michael "Monty" Widenius, MySQL Moderator
In MySQL, Paul DuBois provides you with a comprehensive guide to
one of the most popular relational database systems. Paul has
contributed to the online documentation for MySQL, and is an
active member of the MySQL community. The principal MySQL
developer, Monty Widenius, and a network of his fellow developers
reviewed the manuscript, providing Paul with the kind of insight
no one else could supply.
Instead of merely giving you a general overview of MySQL, Paul
teaches you how to make the most of its capabilities. Through two
sample database applications that run throughout the book, he
gives you solutions to problems you're sure to face. He helps you
integrate MySQL efficiently with third-party tools, such as PHP
and Perl, enabling you to generate dynamic Web pages through
database queries. He teaches you to write programs that access
MySQL databases, and also provides a comprehensive set of
references to column types, operators, functions, SQL syntax,
MySQL programming, C API, Perl DBI, and PHP API. MySQL simply
gives you the kind of information you won't find anywhere else.
If you use MySQL, this book provides you with:
-
An introduction to MySQL and SQL
-
Coverage of MySQL's data types and how to use them
-
Thorough treatment of how to write client programs in C
-
A guide to using the Perl DBI and PHP APIs for developing
command-line and Web-based applications
-
Tips on administrative issues such as user accounts, backup,
crash recovery, and security
-
Help in choosing an ISP for MySQL access
-
A comprehensive reference for MySQL's data types, operators,
functions, and SQL statements and utilities
-
Complete reference guides for MySQL's C API, the Perl DBI API,
and PHP's MySQL-related functions
| Title | MySQL & mSQL
|
| Publisher | O'Reilly
|
| Authors | Randy Jay Yarger, George Reese & Tim King
|
| Pub Date | 1st Edition July 1999
|
| ISBN | 1-56592-434-7, Order Number: 4347
|
| Pages | 506
|
| Price | $34.95
|
This book teaches you how to use MySQL and mSQL, two popular and
robust database products that support key subsets of SQL on both Linux
and UNIX systems. Anyone who knows basic C, Java, Perl, or Python can
write a program to interact with a database, either as a stand-alone
application or through a Web page. This book takes you through the
whole process, from installation and configuration to programming
interfaces and basic administration. Includes ample tutorial
material.
The following list describes some of the important characteristics
of MySQL:
This section addresses the questions, "how stable is
MySQL?" and, "can I depend on MySQL in this project?"
Here we will try to clarify some issues and to answer some of the more
important questions that seem to concern many people. This section has been
put together from information gathered from the mailing list (which is very
active in reporting bugs).
At TcX, MySQL has worked without any problems in our projects since
mid-1996. When MySQL was released to a wider public, we noticed that
there were some pieces of "untested code" that were quickly found by the
new users who made queries in a manner different than our own. Each new
release has had fewer portability problems than the previous one (even though
each has had many new features), and we hope that it will be possible to label
one of the next releases "stable".
Each release of MySQL has been usable and there have been problems
only when users start to use code from "the gray zones". Naturally, outside
users can't know what the gray zones are; this section attempts to indicate
those that are currently known. The descriptions deal with the 3.22.x
version of MySQL. All known and reported bugs are fixed in the
latest version, with the exception of the bugs listed in the bugs section,
which are things that are "design"-related. See section E Known errors and design deficiencies in MySQL.
MySQL is written in multiple layers and different independent
modules. These modules are listed below with an indication of how
well-tested each of them is:
- The ISAM table handler -- Stable
-
This manages storage and retrieval of all data in MySQL 3.22
and earlier versions. In all MySQL releases there hasn't been a
single (reported) bug in this code. The only known way to get a
corrupted table is to kill the server in the middle of an update. Even
that is unlikely to destroy any data beyond rescue, because all data are
flushed to disk between each query. There hasn't been a single bug
report about lost data because of bugs in MySQL, either.
- The MyISAM table handler -- Beta
-
This is new in MySQL 3.23. It's largely based on the ISAM table code
but has a lot of new very useful features.
- The parser and lexical analyser -- Stable
-
There hasn't been a single reported bug in this system for a long time.
- The C client code -- Stable
-
No known problems. In early 3.20 releases, there were some limitations in
the send/receive buffer size. As of 3.21.x, the buffer size is now dynamic up
to a default of 24M.
- Standard client programs -- Stable
-
These include
mysql, mysqladmin and mysqlshow,
mysqldump, and mysqlimport.
- Basic SQL -- Stable
-
The basic SQL function system and string classes and dynamic memory
handling. Not a single reported bug in this system.
- Query optimizer -- Stable
-
- Range optimizer -- Gamma
-
- Join optimizer -- Stable
-
- Locking -- Gamma
-
This is very system-dependent. On some systems there are big problems
using standard OS locking (
fcntl()). In these cases, you should run the
MySQL daemon with the --skip-locking flag. Problems are known
to occur on some Linux systems and on SunOS when using NFS-mounted file
systems.
- Linux threads -- Gamma
-
The only problem found has been with the
fcntl() call, which is fixed
by using the --skip-locking option to mysqld. Some people
have reported lockup problems with the 0.5 release.
- Solaris 2.5+ pthreads -- Stable
-
We use this for all our production work.
- MIT-pthreads (Other systems) -- Gamma
-
There have been no reported bugs since 3.20.15 and no known bugs since
3.20.16. On some systems, there is a "misfeature" where some operations are
quite slow (a 1/20 second sleep is done between each query). Of course,
MIT-pthreads may slow down everything a bit, but index-based
SELECT
statements are usually done in one time frame so there shouldn't be a mutex
locking/thread juggling.
- Other thread implementions -- Alpha - Beta
-
The ports to other systems are still very new and may have bugs, possibly
in MySQL, but most often in the thread implementation itself.
LOAD DATA ..., INSERT ... SELECT -- Stable
-
Some people have thought they have found bugs here, but these usually have
turned out to be misunderstandings. Please check the manual before reporting
problems!
ALTER TABLE -- Stable
-
Small changes in 3.22.12.
- DBD -- Stable
-
Now maintained by Jochen Wiedmann
mysqlaccess -- Stable
-
Written and maintained by Yves Carlier
GRANT -- Gamma
-
Big changes made in MySQL 3.22.12.
- MyODBC (uses ODBC SDK 2.5) -- Gamma
-
It seems to work well with some programs.
TcX provides email support for paying customers, but the MySQL
mailing list usually provides answers to common questions. Bugs are
usually fixed right away with a patch; for serious bugs, there is almost
always a new release.
MySQL itself has no problems with Year 2000 (Y2K) compliance:
-
MySQL uses Unix time functions and has no problems with dates
until
2069; all 2-digit years are regarded to be in the range
1970 to 2069, which means that if you store 01 in a
year column, MySQL treats it as 2001.
-
All MySQL date
functions are stored in one file 'sql/time.cc' and coded very carefully
to be year 2000-safe.
-
In MySQL 3.22 and later versions, the new
YEAR column type
can store years 0 and 1901 to 2155 in 1 byte and display
them using 2 or 4 digits.
You may run into problems with applications that use MySQL in a
way that is not Y2K-safe. For example, many old applications store
or manipulate years using 2-digit values (which are ambiguous) rather than
4-digit values. This problem may be compounded by applications that use
values such as 00 or 99 as "missing" value indicators.
Unfortunately, these problems may be difficult to fix, since different
applications may be written by different programmers, each of whom may
use a different set of conventions and date-handling functions.
Here is a simple demonstration illustrating that MySQL doesn't have
any problems with dates until the year 2030!
mysql> DROP TABLE IF EXISTS y2k;
mysql> CREATE TABLE y2k (date date, date_time datetime, time_stamp timestamp);
mysql> INSERT INTO y2k VALUES ("1998-12-31","1998-12-31 23:59:59",19981231235959);
mysql> INSERT INTO y2k VALUES ("1999-01-01","1999-01-01 00:00:00",19990101000000);
mysql> INSERT INTO y2k VALUES ("1999-09-09","1999-09-09 23:59:59",19990909235959);
mysql> INSERT INTO y2k VALUES ("2000-01-01","2000-01-01 00:00:00",20000101000000);
mysql> INSERT INTO y2k VALUES ("2000-02-28","2000-02-28 00:00:00",20000228000000);
mysql> INSERT INTO y2k VALUES ("2000-02-29","2000-02-29 00:00:00",20000229000000);
mysql> INSERT INTO y2k VALUES ("2000-03-01","2000-03-01 00:00:00",20000301000000);
mysql> INSERT INTO y2k VALUES ("2000-12-31","2000-12-31 23:59:59",20001231235959);
mysql> INSERT INTO y2k VALUES ("2001-01-01","2001-01-01 00:00:00",20010101000000);
mysql> INSERT INTO y2k VALUES ("2004-12-31","2004-12-31 23:59:59",20041231235959);
mysql> INSERT INTO y2k VALUES ("2005-01-01","2005-01-01 00:00:00",20050101000000);
mysql> INSERT INTO y2k VALUES ("2030-01-01","2030-01-01 00:00:00",20300101000000);
mysql> INSERT INTO y2k VALUES ("2050-01-01","2050-01-01 00:00:00",20500101000000);
mysql> SELECT * FROM y2k;
+------------+---------------------+----------------+
| date | date_time | time_stamp |
+------------+---------------------+----------------+
| 1998-12-31 | 1998-12-31 23:59:59 | 19981231235959 |
| 1999-01-01 | 1999-01-01 00:00:00 | 19990101000000 |
| 1999-09-09 | 1999-09-09 23:59:59 | 19990909235959 |
| 2000-01-01 | 2000-01-01 00:00:00 | 20000101000000 |
| 2000-02-28 | 2000-02-28 00:00:00 | 20000228000000 |
| 2000-02-29 | 2000-02-29 00:00:00 | 20000229000000 |
| 2000-03-01 | 2000-03-01 00:00:00 | 20000301000000 |
| 2000-12-31 | 2000-12-31 23:59:59 | 20001231235959 |
| 2001-01-01 | 2001-01-01 00:00:00 | 20010101000000 |
| 2004-12-31 | 2004-12-31 23:59:59 | 20041231235959 |
| 2005-01-01 | 2005-01-01 00:00:00 | 20050101000000 |
| 2030-01-01 | 2030-01-01 00:00:00 | 20300101000000 |
| 2050-01-01 | 2050-01-01 00:00:00 | 00000000000000 |
+------------+---------------------+----------------+
13 rows in set (0.00 sec)
This shows that the DATE and DATETIME types are will not
give any problems with future dates (they handle dates until the year
9999).
The TIMESTAMP type, that is used to store the current time, has a
range up to only 2030-01-01. TIMESTAMP has a range of
1970 to 2030 on 32-bit machines (signed value). On 64-bit
machines it handles times up to 2106 (unsigned value).
Even though MySQL is Y2K-compliant, it is your responsibility to
provide unambiguous input. See section 7.3.6.1 Y2K issues and date types for MySQL's rules
for dealing with ambiguous date input data (data containing 2-digit year
values).
This book has been recommended by a several people on the MySQL
mailing list:
Judith S. Bowman, Sandra L. Emerson and Marcy Darnovsky
The Practical SQL Handbook: Using Structured Query Language
Second Edition
Addison-Wesley
ISBN 0-201-62623-3
http://www.awl.com
This book has also received some recommendations by MySQL users:
Martin Gruber
Understanding SQL
ISBN 0-89588-644-8
Publisher Sybex 510 523 8233
Alameda, CA USA
A SQL tutorial is available on the net at
http://www.geocities.com/SiliconValley/Vista/2207/sql1.html
SQL in 21 Tagen (online book in German language):
http://www.mut.de/leseecke/buecher/sql/inhalt.htm
1.9.1 Tutorials
1.9.2 Porting MySQL / Using MySQL on different systems
1.9.3 Perl related links
1.9.4 MySQL discussion forums
1.9.5 Commercial applications that support MySQL
1.9.6 SQL Clients/Report writers
1.9.7 Web development tools that support MySQL
1.9.8 Databse design tools with MySQL support
1.9.9 Web servers with MySQL tools
1.9.10 Extensions for other programs
1.9.11 Using MySQL with other programs
1.9.12 ODBC related links
1.9.13 API related links
1.9.14 Other MySQL-related links
1.9.15 SQL and database interfaces
1.9.16 Examples of MySQL use
1.9.17 General database links
There are also many web pages that use
MySQL. See section A Some MySQL users. Send any additions to this list to
MySQL logo somewhere (It is okay to have it on a "used tools" page
or something similar) to be added.
To subscribe to the main MySQL mailing list, send a message to the
electronic mail address mysql-subscribe@lists.mysql.com.
To unsubscribe from the main MySQL mailing list, send a message to
the electronic mail address mysql-unsubscribe@lists.mysql.com.
Only the address to which you send your messages is significant. The
subject line and the body of the message are ignored.
If your reply address is not valid, you can specify your address explicitly.
Adding a hyphen to the subscribe or unsubscribe command word, followed by
your address with the '@' character in your address replaced by a
'='. For example, to subscribe john@host.domain, send a message
to mysql-subscribe-john=host.domain@lists.mysql.com.
Mail to mysql-subscribe@lists.mysql.com or
ezmlm mailing list processor. Information about ezmlm is available at
the ezmlm Website.
To post a message to the list itself, send your message to
mysql@lists.mysql.com. However, please do not send mail about
subscribing or unsubscribing to mysql@lists.mysql.com, since any
mail sent to that address is distributed automatically to thousands of other
users.
Your local site may have many subscribers to mysql@lists.mysql.com.
If so, it may have a local mailing list, so that messages sent from
lists.mysql.com to your site are propagated to the local list. In such
cases, please contact your system administrator to be added to or dropped
from the local MySQL list.
The following MySQL mailing lists exist:
announce
-
This is for announcement of new versions of MySQL and related
programs. This is a low volume list that we think all MySQL
users should be on.
mysql
-
The main list for general MySQL discussion. Please note that some
topics are better discussed on the more-specialized lists. If you post to the
wrong list, you may not get an answer!
mysql-digest
-
The
mysql list in digest form. That means you get all individual
messages, sent as one large mail message once a day.
java
-
Discussion about MySQL and Java. Mostly about the JDBC drivers.
java-digest
-
A digest version of the
java list.
win32
-
All things concerning MySQL on Microsoft operating systems such as
Windows NT.
win32-digest
-
A digest version of the
win32 list.
myodbc
-
All things concerning connecting to MySQL with ODBC.
myodbc-digest
-
A digest version of the
myodbc list.
msql-mysql-modules
-
A list about the Perl support in MySQL.
msql-mysql-modules-digest
-
A digest version of the
msql-mysql-modules list.
developer
-
A list for people who work on the MySQL code.
developer-digest
-
A digest version of the
developer list.
You subscribe or unsubscribe to all lists in the same way as described
above. In your subscribe or unsubscribe message, just put the appropriate
mailing list name rather than mysql. For example, to subscribe to or
unsubscribe from the myodbc list, send a message to
Before posting a bug report or question, please do the following:
If you can't find an answer in the manual or the archives, check with your
local MySQL expert. If you still can't find an answer to your
question, go ahead and read the next section about how to send mail to
Writing a good bug report takes patience, but doing it right the first time
saves time for us and for you. This section will help you write your report
correctly so that you don't waste your time doing things that may not help us
much or at all.
We encourage everyone to use the mysqlbug script to generate a bug
report (or a report about any problem), if possible. mysqlbug can be
found in the 'scripts' directory in the source distribution, or, for a
binary distribution, in the 'bin' directory under your MySQL
installation directory. If you are unable to use mysqlbug, you should
still include all the necessary information listed in this section.
The mysqlbug script helps you generate a report by determining much
of the following information automatically, but if something important is
missing, please include it with your message! Please read this section
carefully and make sure that all the information described here is included
in your report.
Remember that it is possible to respond to a message containing too much
information, but not to one containing too little. Often people omit facts
because they think they know the cause of a problem and assume that some
details don't matter. A good principle is: if you are in doubt about stating
something, state it! It is a thousand times faster and less troublesome to
write a couple of lines more in your report than to be forced to ask again
and wait for the answer because you didn't include enough information the
first time.
The most common errors are that people don't indicate the version number of
the MySQL distribution they are using, or don't indicate what
platform they have MySQL installed on (including the platform
version number). This is highly relevant information and in 99 cases out of
100 the bug report is useless without it! Very often we get questions like
"Why doesn't this work for me?" and then we find that the feature
requested wasn't implemented in that MySQL version, or that a bug
described in a report has been fixed already in newer MySQL
versions. Sometimes the error is platform dependent; in such cases, it is
next to impossible to fix anything without knowing the operating system and
the version number of the platform.
Remember also to provide information about your compiler, if it is related to
the problem. Often people find bugs in compilers and think the problem is
MySQL related. Most compilers are under development all the time and
become better version by version, too. To determine whether or not your
problem depends on your compiler, we need to know what compiler is used.
Note that every compiling problem should be regarded as a bug report and
reported accordingly.
It is most helpful when a good description of the problem is included in the
bug report. That is, a good example of all the things you did that led to
the problem and the problem itself exactly described. The best reports are
those that include a full example showing how to reproduce the bug or
problem.
If a program produces an error message, it is very important to include the
message in your report! If we try to search for something from the archives
using programs, it is better that the error message reported exactly matches
the one that the program produces. (Even the case sensitivity should be
observed!) You should never try to remember what the error message was;
instead, copy and paste the entire message into your report!
If you have a problem with MyODBC, you should try to genereate a MyODBC
trace file. See section 16.6 Reporting problems with MyODBC.
Please remember that many of the people who will read your report will
do so using an 80-column display. When generating reports or examples
using the mysql command line tool, you should therefore use
the --vertical option (or the \G statement terminator)
for output which would exceed the available width for such a display
(for example, with the EXPLAIN SELECT statement; see the
example below).
Please include the following information in your report:
-
The version number of the MySQL distribution you are using (for
example, MySQL 3.22.22). You can find out which version you are
running by executing
mysqladmin version. mysqladmin can be
found in the 'bin' directory under your MySQL installation
directory.
-
The manufacturer and model of the machine you are working on.
-
The operating system name and version. For most operating systems, you can
get this information by executing the Unix command
uname -a.
-
Sometimes the amount of memory (real and virtual) is relevant.
If in doubt, include these values.
-
If you are using a source distribution of MySQL, the name and
version number of the compiler used is needed.
If you have a binary distribution, the distribution name is needed.
-
If the problem occurs during compilation, include the exact error
message(s) and also a few lines of context around the offending code in the
file where the error occurred.
-
If any database table is related to the problem, include the output from
mysqldump --no-data db_name tbl_name1 tbl_name2 ... This is very easy
to do and is a powerful way to get information about any table in a database
that will help us create a situation matching the one you have.
-
For speed-related bugs or problems with
SELECT statements, you should
always include the output of EXPLAIN SELECT ..., and at least the
number of rows that the SELECT statement produces. The more
information you give about your situation, the more likely it is that someone
can help you! For example, the following is an example of a very good bug
report (it should of course be posted with the mysqlbug script):
Example run using the mysql command line tool (note the use of the
\G statement terminator for statements whose output width would
otherwise exceed that of an 80-column display device):
mysql> SHOW VARIABLES;
mysql> SHOW COLUMNS FROM ...\G
<output-from-SHOW-COLUMNS>
mysql> EXPLAIN SELECT ...\G
<output-from-EXPLAIN>
mysql> FLUSH STATUS;
mysql> SELECT ...;
<A short version of the output from SELECT,
including the time taken to run the query>
mysql> SHOW STATUS;
<output from SHOW STATUS>
-
If a bug or problem occurs while running MySQL, try to provide an
input script that will reproduce the anomaly. This script should include any
necessary source files. The more closely the script can reproduce your
situation, the better.
If you can't provide a script, you should at least include the output
from
mysqladmin variables extended-status processlist in your mail to
provide some information of how your system is performing!
-
If you think that MySQL produces a strange result from a query,
include not only the result, but also your opinion of what the result
should be and an account describing the basis for your opinion.
-
When giving an example of the problem, it's better to use the variable names,
table names, etc., that exist in your actual situation than to come up with
new names. The problem could be related to the name of a variable, table,
etc.! These cases are rare, perhaps, but it is better to be safe than
sorry. After all, it should be easier for you to provide an example that
uses your actual situation and it is by all means better for us. In case you
have data you don't want to show to others, you can use
ftp to
transfer it to ftp://www.mysql.com/pub/mysql/secret/. If the data are
really top secret and you don't want to show them even to us, then go ahead
and provide an example using other names, but please regard this as the last
choice.
-
Include all the options given to the relevant programs, if possible. For
example, indicate the options that you use when you start the
mysqld
daemon and that you use to run any MySQL client programs. The
options to programs like mysqld and mysql, and to the
configure script are often keys to answers and very relevant! It is
never a bad idea to include them anyway! If you use any modules, such as
Perl or PHP, please include the version number(s) of those as well.
-
If you can't produce a test case in a few rows, or if the test table
is too big to be mailed to the mailing list (more than 10 rows), you should
dump your tables using
mysqldump and create a 'README' file
that describes your problem.
Create a compressed archive of your files using
tar and gzip or zip, and use ftp
to transfer the archive to ftp://www.mysql.com/pub/mysql/secret/.
Then send a short description of the problem to mysql@lists.mysql.com.
-
If your question is related to the privilege system, please include the
output of
mysqlaccess, the output of mysqladmin reload and all
the error messages you get when trying to connect! When you test your
privileges, you should first run mysqlaccess. After this, execute
mysqladmin reload version, and last you should try to connect with the
program that gives you trouble. mysqlaccess can be found in the
'bin' directory under your MySQL installation directory.
-
If you have a patch for a bug, that is good. But don't assume the patch is
all we need or that we will use it even if you don't provide some necessary
information such as test cases showing the bug that your patch fixes. We
might find problems with your patch or we might not understand it at all; if
so, we can't use it.
If we can't verify exactly what the patch is meant for, we won't use it.
Test cases will help us here. Show that the patch will handle all the
situations that may occur. If we find a borderline case (even a rare one)
where the patch won't work, the patch may be useless.
-
Guesses about what the bug is, why it occurs, or what it depends on,
are usually wrong. Even we can't guess such things without first
using a debugger to determine the real cause of a bug.
-
Indicate in your mail message that you have checked the reference manual
and mail archive so others know that you have tried to solve your
problem yourself.
-
If you get a
parse error, please check your syntax closely! If
you can't find something wrong with it, it's extremely likely that your
current version of MySQL doesn't support the query you are
using. If you are using the current version and the manual at
http://www.mysql.com/doc.html doesn't cover the syntax you are
using, MySQL doesn't support your query. In this case, your
only options are to implement the syntax yourself or email
If the manual covers the syntax you are using, but you have an older version
of MySQL, you should check the MySQL change history to see
when the syntax was implemented. See section D MySQL change history. In this case, you have the
option of upgrading to a newer version of MySQL.
-
If you have a problem such that your data appears corrupt or you get
errors when you access some particular table, you should first check and then
try repairing your tables with
myisamchk.
See section 13 Maintaining a MySQL installation.
-
If you often get corrupted tables you should try to find out when and
why this happens! In this case, the
'mysql-data-directory/'hostname'.err' file may contain some
information about what happened. Please include any relevant
information from this file in your bug report! Normally
mysqld should
NEVER crash a table if nothing killed it in the middle of an
update! If you can find the source of why mysqld dies, it's much
easier for us to provide you with a fix for the problem!
-
If possible, download the most recent version of MySQL and check
whether or not it solves your problem. All versions of MySQL are
thoroughly tested and should work without problems! We believe in making
everything as backward compatible as possible and you should be able to
switch MySQL versions in minutes! See section 4.3 Which MySQL version to use.
If you are a support customer, please cross-post the bug report to
the appropriate mailing list to see if someone else has experienced (and
perhaps solved) the problem.
For information on reporting bugs in MyODBC, see section 16.2 How to report problems with MyODBC.
For solutions to some common problems, see See section 18 Problems and common errors.
When answers are sent to you individually and not to the mailing list,
it is considered good etiquette to summarize the answers and send the
summary to the mailing list so that others may have the benefit of
responses you received that helped you solve your problem!
If you consider your answer to have broad interest, you may want to post it
to the mailing list instead of replying directly to the individual who
asked. Try to make your answer general enough that people other than the
original poster may benefit from it. When you post to the list, please make
sure that your answer is not a duplication of a previous answer.
Try to summarize the essential part of the question in your reply; don't feel
obliged to quote the entire original message.
Please don't post mail messages from your browser with HTML mode turned on!
Many users doesn't read mail with a browser!
This chapter describes MySQL licensing and support arrangements,
including:
The formal terms of the license for non-Microsoft operating systems such as
Unix or OS/2 are specified in section J The MySQL server license for non Microsoft operating systems. Basically, our licensing
policy is as follows:
-
For normal internal use, MySQL generally costs nothing. You do not
have to pay us if you do not want to.
-
A license is required if:
-
You sell the MySQL server directly or as a part of another product
or service
-
You charge for installing and maintaining a MySQL server at some
client site
-
You include MySQL in a distribution that is non redistributable
and you charge for some part of that distribution
-
For circumstances under which a MySQL license is required, you need
a license per machine that runs the
mysqld server. However, a
multiple-CPU machine counts as a single machine, and there is no restriction
on the number of MySQL servers that run on one machine, or on the
number of clients concurrently connected to a server running on that
machine!
-
You do not need a license to include client code in commercial programs. The
client access part of MySQL is in the public domain. The
mysql command line client includes code from the readline
library that is under the GNU Public License.
-
For customers who have purchased 1 license or MySQL support, we provide
additional functionality. Currently, this means we provide the
myisampack utility for creating fast compressed read-only
databases. (The server includes support for reading such databases but
not the packing tool used to create them.) When support agreements
generate sufficient revenue, we will release this tool under the same
license as the MySQL server.
-
If your use of MySQL does not require a license, but you like
MySQL and want to encourage further development, you are certainly
welcome to purchase a license anyway.
-
If you use MySQL in a commercial context such that
you profit by its use, we ask that you further the development of
MySQL by purchasing some level of support. We feel that if
MySQL helps your business, it is reasonable to ask that you help
MySQL. (Otherwise, if you ask us support questions, you are not
only using for free something into which we've put a lot a work, you're
asking us to provide free support, too.)
For use under Microsoft operating systems (Win95/Win98/WinNT), you need a
MySQL license after a trial period of 30 days, with the exception
that licenses may be obtained upon request at no cost for educational
use or for university- or government-sponsored research settings. See section K The MySQL license for Microsoft operating systems. A shareware version of MySQL-Win32 that you can try before
buying is available at http://www.mysql.com/mysql_w32.htmy. After
you have paid, you will get a password that will enable you to access
the newest MySQL-Win32 version.
If you have any questions as to whether or not a license is required for your
particular use of MySQL, please contact us.
See section 3.5.2 Contact information.
If you require a MySQL license, the easiest way to pay for it is to
use the license form at TcX's secure server at
https://www.mysql.com/license.htmy. Other forms of payment are discussed
in section 3.5.1 Payment information.
There are several different copyrights on the MySQL distribution:
-
The MySQL-specific source needed to build the
mysqlclient
library and programs in the 'client' directory is in the public
domain. Each file that is in the public domain has a header which clearly
states so. This includes everything in the 'client' directory and some parts of
the mysys, mystring and dbug libraries.
-
Some small parts of the source (GNU
getopt) are covered by the
"GNU LIBRARY LIBRARY GENERAL PUBLIC LICENSE". See the
'mysys/COPYING.LIB' file.
-
Some small parts of the source (GNU
readline) are covered by the
"GNU GENERAL PUBLIC LICENSE". See the 'readline/COPYING' file.
-
Some parts of the source (the
regexp library) are covered by a Berkeley
style copyright.
-
The other source needed for the MySQL server on non-Microsoft
platforms is covered by the "MySQL FREE PUBLIC LICENSE", which is based on
the "Aladdin FREE PUBLIC LICENSE." See section J The MySQL server license for non Microsoft operating systems. When running
MySQL on any Microsoft operating system, other licensing applies.
The following points set forth the philosophy behind our copyright policy:
-
The SQL client library should be totally free so that it can be included in
commercial products without limitations.
-
People who want free access to the software into which we have put a lot of
work can have it, so long as they do not try to make money directly by
distributing it for profit.
-
People who want the right to keep their own software proprietary, but also
want the value from our work, can pay for the privilege.
-
That means normal in-house use is FREE. But if you use MySQL for
something important to you, you may want to help further its development by
purchasing a license or a support contract. See section 3.6 Types of commercial support.
We may choose to distribute older versions of MySQL with the GPL in
the future. However, these versions will be identified as GNU MySQL.
Also, all copyright notices in the relevant files will be changed to the
GPL.
This section is a clarification of the license terms that are set forth in
the "MySQL FREE PUBLIC LICENSE" (FPL). See section J The MySQL server license for non Microsoft operating systems.
MySQL may be used freely, including by commercial
entities for evaluation or unsupported internal use. However,
distribution for commercial purposes of MySQL, or
anything containing or derived from MySQL in whole or in part,
requires a written commercial license from TcX AB, the sole entity
authorized to grant such licenses.
You may not include MySQL "free" in a package containing
anything for which a charge is being made, except as noted below.
The intent of the exception provided in the second clause of the license is
to allow commercial organizations operating an FTP server or a bulletin board
to distribute MySQL freely from it, provided that:
-
The organization complies with the other provisions of the FPL, which
include among other things a requirement to distribute the full source
code of MySQL and of any derived work, and to distribute the
FPL itself along with MySQL;
-
The only charge for downloading MySQL is a charge based on the
distribution service and not one based on the content of the information
being retrieved (i.e., the charge would be the same for retrieving a
random collection of bits of the same size);
-
The server or BBS is accessible to the general public, i.e., the phone
number or IP address is not kept secret, and anyone may obtain access to
the information (possibly by paying a subscription or access fee that is
not dependent on or related to purchasing anything else).
If you want to distribute software in a commercial context that incorporates
MySQL and you do not want to meet these conditions, you
should contact TcX AB to find out about commercial licensing, which involves
a payment. The only ways you legally can distribute MySQL or
anything containing MySQL are by distributing MySQL under
the requirements of the FPL, or by getting a commercial license from TcX AB.
This section describes some situations illustrating whether or not you must
license the MySQL server. Generally these examples involve
providing MySQL as part of a product or service that you are selling
to a customer, or requiring that MySQL be used in conjunction with
your product. In such cases, it is your responsibility to obtain a license
for the customer if one is necessary. (This requirement is waived if your
customer already has a MySQL license. But the seller must send
customer information and the license number to TcX, and the license must be a
full license, not an OEM license.)
Note that a single MySQL license covers any number of
CPUs/users/customers/mysqld servers on a machine!
To determine whether or not you need a MySQL license when selling
your application, you should ask whether the proper functioning of your
application is contingent on the use of MySQL and whether you
include MySQL with your product. There are several cases to
consider:
-
Does your application require MySQL to function properly?
If your product requires MySQL, you need a license for any machine
that runs the
mysqld server. For example, if you've designed your
application around MySQL, then you've really made a commercial
product that requires the engine, so you need a license.
If your application does not require MySQL, you need not obtain a
license. For example, if MySQL just added some new optional
features to your product (such as adding logging to a database if
MySQL is used rather than logging to a text file), it should fall
within normal use, and a license would not be required.
In other words, you need a license if you sell a product designed
specifically for use with MySQL or that requires the MySQL
server to function at all. This is true whether or not you provide
MySQL for your client as part of your product distribution.
It also depends on what you're doing for the client. Do you plan to provide
your client with detailed instructions on installing MySQL with your
software? Then your product may be contingent on the use of MySQL;
if so, you need to buy a license. If you are simply tying into a database
that you expect already to have been installed by the time your software is
purchased, then you probably don't need a license.
-
Do you include MySQL in a distribution and charge for that
distribution?
If you include MySQL with a distribution that you sell to customers,
you will need a license for any machine that runs the
mysqld server,
because in this case you are selling a system that includes MySQL.
This is true whether the use of MySQL with your product
is required or optional.
-
Do you neither require for your product nor include MySQL with it?
Suppose you want to sell a product that is designed generally to use "some
database" and that can be configured to use any of several supported
alternative database systems (MySQL, PostgreSQL, or something
else). That is, your product does not not require MySQL, but can
support any database with a base level of functionality, and you don't rely
on anything that only MySQL supports. Does one of you owe us money
if your customer actually does choose to use MySQL?
In this case, if you don't provide, obtain or set up MySQL for the
customer should the customer decide to use it, neither of you need a
license. If you do perform that service, see section 3.4.2 Selling MySQL-related services.
If you perform MySQL installation on a client's machine and any
money changes hands for the service (directly or indirectly), then you must
buy a MySQL license.
If you sell an application for which MySQL is not strictly required
but can be used, a license may be indicated, depending on how MySQL
is set up. Suppose your product neither requires MySQL nor includes
it in your product distribution, but can be configured to use MySQL
for those customers who so desire. (This would be the case, for example, if
your product can use any of a number of database engines.)
If the customer obtains and installs MySQL, no license is needed.
If you perform that service for your customer, then a license is needed
because then you are selling a service that includes MySQL.
Internet Service Providers (ISPs) often host MySQL servers for
their customers.
If you are an ISP that allows customers to install and administer
MySQL for themselves on your machine with no assistance from you,
neither you nor your customer need a MySQL license.
If you charge for MySQL installation and administrative support as
part of your customer service, then you need a license because you are selling
a service that includes MySQL.
If you use MySQL in conjunction with a web server, you don't have to
pay for a license.
This is true even if you run a commercial web server that uses
MySQL, since you are not selling MySQL itself. However, in
this case we would like you to purchase MySQL support, because
MySQL is helping your enterprise.
Our current license prices are shown below. All prices are in US
Dollars. If you pay by credit card, the currency is EURO (European Union Euro)
so the prices will differ slightly.
| Number of licenses | Price per copy | Total
|
| 1 | US $200 | US $200
|
| 10 pack | US $150 | US $1500
|
| 50 pack | US $120 | US $6000
|
For high volume (OEM) purchases, the following prices apply:
| Number of licenses | Price per copy | Minimum at one time | Minimum payment
|
| 100-999 | US $40 | 100 | US $4000
|
| 1000-2499 | US $25 | 200 | US $5000
|
| 2500-4999 | US $20 | 400 | US $8000
|
For OEM purchases, you must act as the middle-man for eventual problems
or extension requests from your users. We also require that OEM
customers have at least an extended email support contract.
If you have a low-margin high-volume product, you can always talk to us
about other terms (for example, a percent of the sale price). If you do,
please be informative about your product, pricing, market and any other
information that may be relevant.
After buying 1 MySQL license, you will get a personal copy of
the myisampack utility. You are not allowed to redistribute this
utility but you can distribute tables packed with it.
A full-price license is not a support agreement and includes very minimal
support. This means that we try to answer any relevant question. If the
answer is in the documentation, we will direct you to the appropriate
section. If you have not purchased a license or support, we probably will not
answer at all.
If you discover what we consider a real bug, we are likely to fix it in
any case. But if you pay for support we will notify you about the fix
status instead of just fixing it in a later release.
More comprehensive support is sold separately. Descriptions of what each
level of support includes are given in section 3.6 Types of commercial support. Costs for the various
types of commercial support are shown below. Support level prices are in
EURO (European Union Euro). One EURO is about 1.17 USD.
| Type of support | Cost per year
|
| Basic email support | EURO 170
|
| Extended email support | EURO 1000
|
| Login support | EURO 2000
|
| Extended login support | EURO 5000
|
You may upgrade from any
lower level of support to a higher level of support for the difference
between the prices of the two support levels.
Currently we can take SWIFT payments, cheques or credit cards.
Payment should be made to:
Postgirot Bank AB
105 06 STOCKHOLM, SWEDEN
TCX DataKonsult AB
BOX 6434
11382 STOCKHOLM, SWEDEN
SWIFT address: PGSI SESS
Account number: 96 77 06 - 3
Specify: license and/or support and your name and email address.
In Europe and Japan you can use EuroGiro (that should be less expensive) to the
same account.
If you want to pay by cheque, make it payable to "Monty Program KB" and
mail it to the address below:
TCX DataKonsult AB
BOX 6434, Torsgatan 21
11382 STOCKHOLM, SWEDEN
If you want to pay by credit card over the Internet, you can use
TcX's secure license form.
You can also print a copy of the license form, fill it in and send it by fax
to:
+46-8-729 69 05
If you want us to bill you, you can use the license form and write "bill
us" in the comment field. You can also mail a message to
with your company information and ask us to bill you.
For commercial licensing, or if you have any questions about any of the
information in this section, please contact the MySQL licensing
team. The much preferred method is by E-Mail to
these may take much longer (Fax +46-8-729 69 05).
David Axmark
Detron HB
Kungsgatan 65 B
753 21 UPPSALA
SWEDEN
Voice Phone +46-18-10 22 80 (Timezone GMT+1. Swedish and English spoken)
Basic email support is a very inexpensive support option and should be
thought of more as a way to support our development of MySQL than as
a real support option.
At this support level, the MySQL mailing lists are the preferred
means of communication. Questions normally should be mailed to the primary
mailing list (mysql@lists.mysql.com) or one of the other regular
lists (for example, mysql-win32@lists.mysql.com for Windows-related
MySQL questions), as someone else already may have experienced and
solved the problem you have. See section 2.2 Asking questions or reporting bugs.
However, by purchasing basic email support, you also have access to the
support address mysql-support@mysql.com, which is not available as part
of the minimal support that you get by purchasing a MySQL license.
This means that for especially critical questions, you can cross-post your
message to mysql-support@mysql.com. (If the message contains sensitive
data, you should post only to mysql-support@mysql.com.)
REMEMBER! to ALWAYS include your registration number and
expiration date when you send a message to
Basic email support includes the following types of service:
-
If your question is already answered in the manual, we will inform you of the
correct section in which you can find the answer. If the answer is not in
the manual, we will point you in the right direction to solve your problem.
-
We guarantee a timely answer for your email messages. We can't guarantee
that we can solve any problem, but at least you will receive an answer if we
can contact you by email.
-
We will help with unexpected problems when you install MySQL from a
binary distribution on supported platforms. This level of support does not
cover installing MySQL from a source distribution. "Supported"
platforms are those for which MySQL is known to work.
See section 4.2 Operating systems supported by MySQL.
-
We will help you with bugs and missing features. Any bugs that are found are
fixed for the next MySQL release. If the bug is critical for
you, we will mail you a patch for it as soon the bug is fixed. Critical
bugs always have the highest priority for us, to ensure that they are
fixed as soon as possible.
-
Your suggestions for the further development of MySQL will be
taken into consideration. By taking email support you have already
helped the further development of MySQL. If you want to have
more input, upgrade to a higher level of support.
-
If you want us to help optimize your system, you must upgrade to a
higher level of support.
-
We include a binary version of the
myisampack packing tool for
creating fast compressed read-only databases. The current server includes
support for reading such databases but not the packing tool used to
create them.
Extended email support includes everything in basic email support with
these additions:
-
Your email will be dealt with before mail from basic email support users and
non-registered users.
-
Your suggestions for the further development of MySQL will
receive strong consideration. Simple extensions that suit the basic
goals of MySQL are implemented in a matter of days. By taking
extended email support you have already helped the further development
of MySQL.
-
Typical questions that are covered by extended email support are:
-
We will answer and (within reason) solve questions that relate to possible
bugs in MySQL. As soon as the bug is found and corrected, we
will mail a patch for it.
-
We will help with unexpected problems when you install MySQL from a
source or binary distribution on supported platforms.
-
We will answer questions about missing features and offer hints how to work
around them.
-
We will provide hints on optimizing
mysqld for your situation.
-
You are allowed to influence the priority of items on the MySQL
TODO. This will ensure that the features you really need will be implemented
sooner than they might be otherwise.
Login support includes everything in extended email support with
these additions:
-
Your email will be dealt with even before mail from extended email
support users.
-
Your suggestions for the further development of MySQL will
be taken into very high consideration. Realistic extensions that can be
implemented in a couple of hours and that suit the basic goals of
MySQL will be implemented as soon as possible.
-
If you have a very specific problem, we can try to log in on your system
to solve the problem "in place."
-
Like any database vendor, we can't guarantee that we can rescue any data from
crashed tables, but if the worst happens we will help you rescue as much as
possible. MySQL has proven itself very reliable, but anything is
possible due to circumstances beyond our control (for example, if your system
crashes or someone kills the server by executing a
kill -9 command).
-
We will provide hints on optimizing your system and your queries.
-
You are allowed to call a MySQL developer (in moderation) and
discuss your MySQL-related problems.
Extended login support includes everything in login support with these
additions:
This chapter describes how to obtain and install MySQL:
Check the MySQL home page for
information about the current version and for downloading instructions.
However, the Internet connection at TcX is not so fast; we would
prefer that you do the actual downloading from one of the mirror sites
listed below.
Please report bad or out of date mirrors to webmaster@mysql.com.
Europe:
-
Austria [Univ. of Technology/Vienna]
WWW
FTP
-
Bulgaria [Naturella]
FTP
-
Croatia [HULK]
WWW
FTP
-
Czech Republic [Masaryk University in Brno]
WWW
FTP
-
Czech Republic [www.sopik.cz]
WWW
-
Denmark [Borsen]
WWW
-
Denmark [SunSITE]
WWW
FTP
-
Estonia [OKinteractive]
WWW
-
France [minet]
WWW
-
Finland [EUnet]
WWW
-
Finland [clinet]
FTP
-
Germany [Bonn University, Bonn]
WWW
FTP
-
Germany [Wolfenbuettel]
WWW
FTP
-
Germany [Staufen]
WWW
-
Germany [Cable & Wireless]
FTP
-
Greece [NTUA, Athens]
WWW
FTP
-
Island [GM]
WWW
WWW
-
Italy [Teta Srl]
WWW
-
Ireland [Ireland On-Line/Dublin]
WWW
FTP
-
Poland [Sunsite]
WWW
FTP
-
Portugal [lerianet]
WWW
FTP
-
Russia [DirectNet]
WWW
-
Russia [IZHCOM]
WWW
FTP
-
Russia [Scientific Center/Chernogolovka]
FTP
-
Romania [Timisoara]
WWW
FTP
-
Romania [Bucharest]
WWW
FTP
-
Spain [MasterD]
WWW
-
Sweden [Sunet]
WWW
FTP
-
Switzerland [Sunsite]
WWW
FTP
-
UK [Omnipotent/UK]
WWW
FTP
-
UK [PLiG/UK]
WWW
FTP
-
UK [SunSITE]
WWW
FTP
-
Ukraine [PACO]
WWW
FTP
North America:
-
Canada [Tryc]
WWW
-
Canada [Cyberus]
WWW
FTP
-
USA [Hurricane Electric/San Jose]
WWW
-
USA [Circle Net/North Carolina]
WWW
-
USA [Gina net/Florida]
WWW
-
USA [pingzero/Los Angeles]
WWW
-
USA [Wisconsin University/Wisconsin]
WWW
FTP
-
USA [DIGEX]
FTP
South America:
-
Brazil [Matrix]
WWW
-
Chile [Vision]
WWW
Asia:
-
China [Freecode]
WWW
-
China [Netfirm]
WWW
-
Korea [KREONet]
WWW
-
Japan [Soft Agency]
WWW
-
Japan [Nagoya Syouka University]
WWW
FTP
-
Singapore [HJC]
WWW
FTP
-
Taiwan [HT]
WWW
Australia:
-
Australia [AARNet/Queensland]
WWW
FTP
-
Australia [Tas]
WWW
FTP
-
Australia [Blue Planet/Melbourne]
WWW
-
Australia [ITworks Consulting/Victoria]
WWW
Africa:
-
South-Africa [Mweb/]
WWW
-
South-Africa [The Internet Solution/Johannesburg]
FTP
We use GNU Autoconf so it is possible to port MySQL to all modern
systems with working Posix threads and a C++ compiler. (To compile only the
client code, a C++ compiler is required but not threads.) We use and develop
the software ourselves primarily on Sun Solaris (versions 2.5 & 2.6) and to a
lesser extent on RedHat Linux 5.0.
MySQL has been reported to compile sucessfully on the following
operating system/thread package combinations. Note that for many operating
systems, the native thread support works only in the latest versions.
-
AIX 4.x with native threads
-
BSDI 2.x with the included MIT-pthreads package
-
BSDI 3.0, 3.1 and 4.x with native threads
-
DEC UNIX 4.x with native threads
-
FreeBSD 2.x with the included MIT-pthreads package
-
FreeBSD 3.x with native threads
-
HP-UX 10.20 with the included MIT-pthreads package
-
HP-UX 11.x with the native threads.
-
Linux 2.0+ with LinuxThreads 0.7.1 or
glibc 2.0.7
-
MacOS X Server
-
NetBSD 1.3/1.4 Intel and NetBSD 1.3 Alpha (Requires GNU make)
-
OpenBSD 2.x with the included MIT-pthreads package
-
OS/2 Warp 3, FixPack 29 and OS/2 Warp 4, FixPack 4
-
SGI Irix 6.x with native threads
-
Solaris 2.5, 2.6 and 2.7 with native threads on SPARC and x86
-
SunOS 4.x with the included MIT-pthreads package
-
SCO OpenServer with a recent port of the FSU Pthreads package
-
SCO UnixWare 7.0.1
-
Tru64 Unix
-
Win95, Win98 and NT (the newest version is currently available only for
users with a MySQL license or MySQL email support).
For those who wish to test before they buy, we have released
MySQL 3.21.29 (an
older version) as shareware.
The first decision to make is whether you want to use the latest development
release or the last stable release:
-
Normally, if you are beginning to use MySQL for the first time or
trying to port it to some system for which there is no binary distribution,
we recommend going with the development release (currently 3.22.x). This is
because there are usually no really serious bugs in the development release,
and you can easily test it on your machine with the
crash-me and
benchmark tests.
See section 10.8 Using your own benchmarks.
-
Otherwise, if you are running an old system and want to upgrade, but don't
want to take chances with 3.22, you should upgrade to 3.21.33. We have tried
to fix only fatal bugs and make small, relatively safe changes to that
version.
The second decision to make is whether you want to use a source distribution or
a binary distribution:
-
If you want to run MySQL on a platform for which a current binary
distribution exists, use that. Generally, it will be easier to install
than a source distribution.
-
If you want to read (and/or modify) the C and C++ code that makes up
MySQL, you should get a source distribution. The source code is
always the ultimate manual. Source distributions also contain more
tests and examples than binary distributions.
The MySQL naming scheme uses release numbers that consist of three
numbers and a suffix. For example, a release name like
mysql-3.21.17-beta is interpreted like this:
-
The first number (
3) describes the file format. All
version 3 releases have the same file format. When a version 4 appears, every
table will have to be converted to the new format (nice tools for this will
be included, of course).
-
The second number (
21) is the release level. Normally there are two to
choose from. One is the release/stable branch (currently 21) and the
other is the development branch (currently 22) . Normally both are
stable, but the development version may have quirks, missing documentation on
new features or may fail to compile on some systems.
-
The third number (
17) is the version number within the
release level. This is incremented for each new distribution. Usually you
want the latest version for the release level you have choosen.
-
The suffix (
beta) indicates the stability level of
the release. The possible suffixes are:
alpha indicates that the release contains some large section of
new code that hasn't been 100% tested. Known bugs (usually there are none)
should be documented in the News section. See section D MySQL change history. There are also new
commands and extensions in most alpha releases.
-
beta means that all new code has been tested. No major new features
were added. There should be no known bugs.
-
gamma is a beta that has been around a while and seems to work fine.
This is what many other companies call a release.
-
If there is no suffix, it means that the version has been run for a while
at many different sites with no reports of bugs other than platform-specific
bugs. This is what we call a stable release.
All versions of MySQL are run through our standard tests and
benchmarks to ensure that they are relatively safe to use. Since the standard
tests are extended over time to check for all previously found bugs,
the test suite keeps getting better.
Note that all releases have been tested at least with:
- An internal test suite
-
This is part of a production system for a customer. It has many tables with
hundreds of megabytes of data.
- The MySQL benchmark suite
-
This runs a range of common queries. It is also a test to see whether the
latest batch of optimizations actually made the code faster.
See section 10.8 Using your own benchmarks.
- The
crash-me test
-
This tries to determine what features the database supports and what its
capabilities and limitations are.
See section 10.8 Using your own benchmarks.
Another test is that we use the newest MySQL version in our internal
production environment, on at least one machine. We have more than 100
gigabytes of data to work with.
MySQL is evolving quite rapidly here at TcX and we want
to share this with other MySQL users. We try to make a release
when we have very useful features that others seem to have a need for.
We also try to help out users who request features that are easy to
implement. We also take note of what our licensed users want to have and
we especially take note of what our extended email supported customers
want and try to help them out.
No one has to download a new release. The News section will tell you if
the new release has something you really want. See section D MySQL change history.
We use the following policy when updating MySQL:
-
For each minor update, the last number in the version string is incremented.
When there are major new features or minor incompatibilities with previous
versions, the second number in the version string is incremented. When the
file format changes, the first number is increased.
-
Stable tested releases are meant to appear about 1-2 times a year, but
if small bugs are found, a release with only bug-fixes will be released.
-
Working releases are meant to appear about every 1-8 weeks.
-
Binary distributions for some platforms will be made by us for major releases.
Other people may make binary distributions for other systems but probably
less frequently.
-
We usually make patches available as soon as we have located and fixed
small bugs.
-
For non-critical but annoying bugs, we will make patches available if they
are sent to us. Otherwise we will combine many of them into a larger
patch.
-
If there is, by any chance, a fatal bug in a release we will make a new
release as soon as possible. We would like other companie