Table of Contents
Preface
General Information
About This Manual
Conventions Used in This Manual
Overview of MySQL AB
Overview of the MySQL Database Management System
History of MySQL
The Main Features of MySQL
MySQL Stability
How Large MySQL Tables Can Be
Year 2000 Compliance
Overview of the MaxDB Database Management System
What is MaxDB?
History of MaxDB
Features of MaxDB
Licensing and Support
Feature Differences Between MaxDB and MySQL
Interoperability Features Between MaxDB and MySQL
MaxDB-Related Links
MySQL Development Roadmap
What's New in MySQL 5.0
MySQL Information Sources
MySQL Mailing Lists
Guidelines for Using the Mailing Lists
MySQL Community Support at the MySQL Forums
MySQL Community Support on Internet Relay Chat (IRC)
How to Report Bugs or Problems
MySQL Standards Compliance
What Standards MySQL Follows
Selecting SQL Modes
Running MySQL in ANSI Mode
MySQL Extensions to Standard SQL
MySQL Differences from Standard SQL
Subquery Support
SELECT INTO TABLE
Transactions and Atomic Operations
Stored Routines and Triggers
Foreign Keys
Views
'--' as the Start of a Comment
How MySQL Deals with Constraints
PRIMARY KEY and UNIQUE Index Constraints
Constraints on Invalid Data
ENUM and SET Constraints
Installing and Upgrading MySQL
General Installation Issues
Operating Systems Supported by MySQL
Choosing Which MySQL Distribution to Install
Choosing Which Version of MySQL to Install
Choosing a Distribution Format
How and When Updates Are Released
Release Philosophy¡ªNo Known Bugs in Releases
MySQL Binaries Compiled by MySQL AB
How to Get MySQL
Verifying Package Integrity Using MD5 Checksums or GnuPG
Verifying the MD5 Checksum
Signature Checking Using GnuPG
Signature Checking Using RPM
Installation Layouts
Standard MySQL Installation Using a Binary Distribution
Installing MySQL on Windows
Choosing An Installation Package
Installing MySQL with the Automated Installer
Using the MySQL Installation Wizard
Introduction to the Installation Wizard
Downloading and Starting the MySQL Installation Wizard
Choosing an Install Type
The Custom Install Dialog
The Confirmation Dialog
Changes Made by MySQL Installation Wizard
Upgrading MySQL with the Installation Wizard
Using the Configuration Wizard
Introduction to the Configuration Wizard
Starting the MySQL Configuration Wizard
Choosing a Maintenance Option
Choosing a Configuration Type
The Server Type Dialog
The Database Usage Dialog
The InnoDB Tablespace Dialog
The Concurrent Connections Dialog
The Networking and Strict Mode Options Dialog
The Character Set Dialog
The Service Options Dialog
The Security Options Dialog
The Confirmation Dialog
The Location of the my.ini File
Editing the my.ini File
Installing MySQL from a Noinstall Zip Archive
Extracting the Install Archive
Creating an Option File
Selecting a MySQL Server type
Starting the Server for the First Time
Starting MySQL from the Windows Command Line
Starting MySQL as a Windows Service
Testing The MySQL Installation
Troubleshooting a MySQL Installation Under Windows
Upgrading MySQL on Windows
MySQL on Windows Compared to MySQL on Unix
Installing MySQL on Linux
Installing MySQL on Mac OS X
Installing MySQL on Solaris
Installing MySQL on NetWare
Installing MySQL on Other Unix-Like Systems
MySQL Installation Using a Source Distribution
Source Installation Overview
Typical configure Options
Installing from the Development Source Tree
Dealing with Problems Compiling MySQL
MIT-pthreads Notes
Installing MySQL from Source on Windows
Building MySQL Using VC++
Creating a Windows Source Package from the Latest Development Source
Compiling MySQL Clients on Windows
Post-Installation Setup and Testing
Windows Post-Installation Procedures
Unix Post-Installation Procedures
Problems Running mysql_install_db
Starting and Stopping MySQL Automatically
Starting and Troubleshooting the MySQL Server
Securing the Initial MySQL Accounts
Upgrading MySQL
Upgrading from MySQL 5.0 to 5.1
Upgrading from MySQL 4.1 to 5.0
Copying MySQL Databases to Another Machine
Downgrading MySQL
Downgrading to MySQL 4.1
Operating System-Specific Notes
Linux Notes
Linux Operating System Notes
Linux Binary Distribution Notes
Linux Source Distribution Notes
Linux Post-Installation Notes
Linux x86 Notes
Linux SPARC Notes
Linux Alpha Notes
Linux PowerPC Notes
Linux MIPS Notes
Linux IA-64 Notes
SELinux Notes
Mac OS X Notes
Mac OS X 10.x (Darwin)
Mac OS X Server 1.2 (Rhapsody)
Solaris Notes
Solaris 2.7/2.8 Notes
Solaris x86 Notes
BSD Notes
FreeBSD Notes
NetBSD Notes
OpenBSD 2.5 Notes
BSD/OS Version 2.x Notes
BSD/OS Version 3.x Notes
BSD/OS Version 4.x Notes
Other Unix Notes
HP-UX Version 10.20 Notes
HP-UX Version 11.x Notes
IBM-AIX notes
SunOS 4 Notes
Alpha-DEC-UNIX Notes (Tru64)
Alpha-DEC-OSF/1 Notes
SGI Irix Notes
SCO UNIX and OpenServer 5.0.x Notes
SCO OpenServer 6.0.x Notes
SCO UnixWare 7.1.x and OpenUNIX 8.0.0 Notes
OS/2 Notes
Perl Installation Notes
Installing Perl on Unix
Installing ActiveState Perl on Windows
Problems Using the Perl DBI/DBD Interface
Tutorial
Connecting to and Disconnecting from the Server
Entering Queries
Creating and Using a Database
Creating and Selecting a Database
Creating a Table
Loading Data into a Table
Retrieving Information from a Table
Selecting All Data
Selecting Particular Rows
Selecting Particular Columns
Sorting Rows
Date Calculations
Working with NULL Values
Pattern Matching
Counting Rows
Using More Than one Table
Getting Information About Databases and Tables
Using mysql in Batch Mode
Examples of Common Queries
The Maximum Value for a Column
The Row Holding the Maximum of a Certain Column
Maximum of Column per Group
The Rows Holding the Group-wise Maximum of a Certain Field
Using User-Defined Variables
Using Foreign Keys
Searching on Two Keys
Calculating Visits Per Day
Using AUTO_INCREMENT
Queries from the Twin Project
Find All Non-distributed Twins
Show a Table of Twin Pair Status
Using MySQL with Apache
Using MySQL Programs
Overview of MySQL Programs
Invoking MySQL Programs
Specifying Program Options
Using Options on the Command Line
Using Option Files
Preconfigured Option Files
Using Environment Variables to Specify Options
Using Options to Set Program Variables
Database Administration
Overview of Server-Side Programs
mysqld ?The MySQL Server
mysqld Command Options
Server System Variables
Using System Variables
Structured System Variables
Dynamic System Variables
Server Status Variables
The Server SQL Mode
The MySQL Server Shutdown Process
MySQL Server-Side Help Support
The mysqld-max Extended MySQL Server
MySQL Server Startup Programs
mysqld_safe ?MySQL Server Startup Script
mysql.server ?MySQL Server Startup Script
mysqld_multi ?Manage Multiple MySQL Servers
mysqlmanager ?The MySQL Instance Manager
Starting the MySQL Server with MySQL Instance Manager
Connecting to the MySQL Instance Manager and Creating User Accounts
Instance Manager Users and Passwords
MySQL Server Accounts for Status Monitoring
MySQL Instance Manager Command Options
MySQL Instance Manager Configuration Files
Commands Recognized by the MySQL Instance Manager
Installation-Related Programs
mysql_fix_privilege_tables ?Upgrade MySQL System Tables
mysql_upgrade ?Check Tables for MySQL Upgrade
General Security Issues
General Security Guidelines
Making MySQL Secure Against Attackers
Security-Related mysqld Options
Security Issues with LOAD DATA LOCAL
How to Run MySQL as a Normal User
The MySQL Access Privilege System
What the Privilege System Does
How the Privilege System Works
Privileges Provided by MySQL
Connecting to the MySQL Server
Access Control, Stage 1: Connection Verification
Access Control, Stage 2: Request Verification
When Privilege Changes Take Effect
Causes of Access denied Errors
Password Hashing as of MySQL 4.1
Implications of Password Hashing Changes for Application Programs
MySQL User Account Management
MySQL Usernames and Passwords
Adding New User Accounts to MySQL
Removing User Accounts from MySQL
Limiting Account Resources
Assigning Account Passwords
Keeping Your Password Secure
Using Secure Connections
Basic SSL Concepts
Using SSL Connections
SSL Command Options
Setting Up SSL Certificates for MySQL
Connecting to MySQL Remotely from Windows with SSH
Backup and Recovery
Database Backups
Example Backup and Recovery Strategy
Backup Policy
Using Backups for Recovery
Backup Strategy Summary
Point-in-Time Recovery
Specifying Times for Recovery
Specifying Positions for Recovery
Table Maintenance and Crash Recovery
Using myisamchk for Crash Recovery
How to Check MyISAM Tables for Errors
How to Repair Tables
Table Optimization
Getting Information About a Table
Setting Up a Table Maintenance Schedule
MySQL Localization and International Usage
The Character Set Used for Data and Sorting
Using the German Character Set
Setting the Error Message Language
Adding a New Character Set
The Character Definition Arrays
String Collating Support
Multi-Byte Character Support
Problems With Character Sets
MySQL Server Time Zone Support
MySQL Server Logs
The Error Log
The General Query Log
The Binary Log
The Slow Query Log
Server Log Maintenance
Running Multiple MySQL Servers on the Same Machine
Running Multiple Servers on Windows
Starting Multiple Windows Servers at the Command Line
Starting Multiple Windows Servers as Services
Running Multiple Servers on Unix
Using Client Programs in a Multiple-Server Environment
The MySQL Query Cache
How the Query Cache Operates
Query Cache SELECT Options
Query Cache Configuration
Query Cache Status and Maintenance
Replication
Introduction to Replication
Replication Implementation Overview
Replication Implementation Details
Replication Master Thread States
Replication Slave I/O Thread States
Replication Slave SQL Thread States
Replication Relay and Status Files
How to Set Up Replication
Replication Compatibility Between MySQL Versions
Upgrading a Replication Setup
Upgrading Replication to 5.0
Replication Features and Known Problems
Replication Startup Options
How Servers Evaluate Replication Rules
Replication FAQ
Troubleshooting Replication
How to Report Replication Bugs or Problems
Auto-Increment in Multiple-Master Replication
Optimization
Optimization Overview
MySQL Design Limitations and Tradeoffs
Designing Applications for Portability
What We Have Used MySQL For
The MySQL Benchmark Suite
Using Your Own Benchmarks
Optimizing SELECT and Other Statements
Optimizing Queries with EXPLAIN
Estimating Query Performance
Speed of SELECT Queries
WHERE Clause Optimization
Range Optimization
The Range Access Method for Single-Part Indexes
The Range Access Method for Multiple-Part Indexes
Index Merge Optimization
The Index Merge Intersection Access Algorithm
The Index Merge Union Access Algorithm
The Index Merge Sort-Union Access Algorithm
IS NULL Optimization
DISTINCT Optimization
LEFT JOIN and RIGHT JOIN Optimization
Nested Join Optimization
Outer Join Simplification
ORDER BY Optimization
GROUP BY Optimization
Loose index scan
Tight index scan
LIMIT Optimization
How to Avoid Table Scans
Speed of INSERT Statements
Speed of UPDATE Statements
Speed of DELETE Statements
Other Optimization Tips
Locking Issues
Locking Methods
Table Locking Issues
Concurrent Inserts
Optimizing Database Structure
Design Choices
Make Your Data as Small as Possible
Column Indexes
Multiple-Column Indexes
How MySQL Uses Indexes
The MyISAM Key Cache
Shared Key Cache Access
Multiple Key Caches
Midpoint Insertion Strategy
Index Preloading
Key Cache Block Size
Restructuring a Key Cache
MyISAM Index Statistics Collection
How MySQL Opens and Closes Tables
Drawbacks to Creating Many Tables in the Same Database
Optimizing the MySQL Server
System Factors and Startup Parameter Tuning
Tuning Server Parameters
Controlling Query Optimizer Performance
How Compiling and Linking Affects the Speed of MySQL
How MySQL Uses Memory
How MySQL Uses DNS
Disk Issues
Using Symbolic Links
Using Symbolic Links for Databases on Unix
Using Symbolic Links for Tables on Unix
Using Symbolic Links for Databases on Windows
Client and Utility Programs
Overview of Client and Utility Programs
myisam_ftdump ?Display Full-Text Index information
myisamchk ?MyISAM Table-Maintenance Utility
myisamchk General Options
myisamchk Check Options
myisamchk Repair Options
Other myisamchk Options
myisamchk Memory Usage
myisamlog ?Display MyISAM Log File Contents
myisampack ?Generate Compressed, Read-Only MyISAM Tables
mysql ?The MySQL Command-Line Tool
mysql Options
mysql Commands
mysql Server-Side Help
Executing SQL Statements from a Text File
mysql Tips
Displaying Query Results Vertically
Using the --safe-updates Option
Disabling mysql Auto-Reconnect
mysql_explain_log ?Use EXPLAIN on Statements in Query Log
mysqlaccess ?Client for Checking Access Privileges
mysqladmin ?Client for Administering a MySQL Server
mysqlbinlog ?Utility for Processing Binary Log Files
mysqlcheck ?A Table Maintenance and Repair Program
mysqldump ?A Database Backup Program
mysqlhotcopy ?A Database Backup Program
mysqlimport ?A Data Import Program
mysqlshow ?Display Database, Table, and Column Information
mysql_zap ?Kill Processes That Match a Pattern
perror ?Explain Error Codes
replace ?A String-Replacement Utility
Language Structure
Literal Values
Strings
Numbers
Hexadecimal Values
Boolean Values
Bit-Field Values
NULL Values
Database, Table, Index, Column, and Alias Names
Identifier Qualifiers
Identifier Case Sensitivity
User-Defined Variables
Comment Syntax
Treatment of Reserved Words in MySQL
Character Set Support
Character Sets and Collations in General
Character Sets and Collations in MySQL
Specifying Character Sets and Collations
Server Character Set and Collation
Database Character Set and Collation
Table Character Set and Collation
Column Character Set and Collation
Character String Literal Character Set and Collation
National Character Set
Examples of Character Set and Collation Assignment
Compatibility with Other DBMSs
Connection Character Sets and Collations
Collation Issues
Using COLLATE in SQL Statements
COLLATE Clause Precedence
BINARY Operator
Some Special Cases Where the Collation Determination Is Tricky
Collations Must Be for the Right Character Set
An Example of the Effect of Collation
Operations Affected by Character Set Support
Result Strings
CONVERT() and CAST()
SHOW Statements and INFORMATION_SCHEMA
Unicode Support
UTF-8 for Metadata
Character Sets and Collations That MySQL Supports
Unicode Character Sets
West European Character Sets
Central European Character Sets
South European and Middle East Character Sets
Baltic Character Sets
Cyrillic Character Sets
Asian Character Sets
The cp932 Character Set
FAQ: MySQL Chinese, Japanese, and Korean Character Sets
SELECT shows non-Latin characters as "?"s. Why?
Troubles with GB character sets (Chinese)
Troubles with big5 character set (Chinese)
Troubles with character-set conversions (Japanese)
The Great Yen Sign problem (Japanese)
Troubles with euckr character set (Korean)
The “Data truncated?message
Troubles with Access, Perl, PHP, etc.
How can I get old MySQL 4.0 behaviour back?
Why do some LIKE and FULLTEXT searches fail?
What CJK character sets are available?
Is character X available in all character sets?
Strings don't sort correctly in Unicode (I)
Strings don't sort correctly in Unicode (II)
My supplementary characters get rejected
Shouldn't it be CJKV (V for Vietnamese)?
Will MySQL fix any CJK problems in version 5.1?
When will MySQL translate the manual again?
Whom can I talk to?
Data Types
Data Type Overview
Overview of Numeric Types
Overview of Date and Time Types
Overview of String Types
Data Type Default Values
Numeric Types
Date and Time Types
The DATETIME, DATE, and TIMESTAMP Types
TIMESTAMP Properties as of MySQL 4.1
The TIME Type
The YEAR Type
Y2K Issues and Date Types
String Types
The CHAR and VARCHAR Types
The BINARY and VARBINARY Types
The BLOB and TEXT Types
The ENUM Type
The SET Type
Data Type Storage Requirements
Choosing the Right Type for a Column
Using Data Types from Other Database Engines
Functions and Operators
Operators
Operator Precedence
Type Conversion in Expression Evaluation
Comparison Functions and Operators
Logical Operators
Control Flow Functions
String Functions
String Comparison Functions
Numeric Functions
Arithmetic Operators
Mathematical Functions
Date and Time Functions
What Calendar Is Used By MySQL?
Full-Text Search Functions
Boolean Full-Text Searches
Full-Text Searches with Query Expansion
Full-Text Stopwords
Full-Text Restrictions
Fine-Tuning MySQL Full-Text Search
Cast Functions and Operators
Other Functions
Bit Functions
Encryption and Compression Functions
Information Functions
Miscellaneous Functions
Functions and Modifiers for Use with GROUP BY Clauses
GROUP BY (Aggregate) Functions
GROUP BY Modifiers
GROUP BY and HAVING with Hidden Fields
SQL Statement Syntax
Data Definition Statements
ALTER DATABASE Syntax
ALTER TABLE Syntax
CREATE DATABASE Syntax
CREATE INDEX Syntax
CREATE TABLE Syntax
Silent Column Specification Changes
DROP DATABASE Syntax
DROP INDEX Syntax
DROP TABLE Syntax
RENAME TABLE Syntax
Data Manipulation Statements
DELETE Syntax
DO Syntax
HANDLER Syntax
INSERT Syntax
INSERT ... SELECT Syntax
INSERT DELAYED Syntax
INSERT ... ON DUPLICATE KEY UPDATE Syntax
LOAD DATA INFILE Syntax
REPLACE Syntax
SELECT Syntax
JOIN Syntax
UNION Syntax
Subquery Syntax
The Subquery as Scalar Operand
Comparisons Using Subqueries
Subqueries with ANY, IN, and SOME
Subqueries with ALL
Row Subqueries
EXISTS and NOT EXISTS
Correlated Subqueries
Subqueries in the FROM clause
Subquery Errors
Optimizing Subqueries
Rewriting Subqueries as Joins for Earlier MySQL Versions
TRUNCATE Syntax
UPDATE Syntax
MySQL Utility Statements
DESCRIBE Syntax
HELP Syntax
USE Syntax
MySQL Transactional and Locking Statements
START TRANSACTION, COMMIT, and ROLLBACK Syntax
Statements That Cannot Be Rolled Back
Statements That Cause an Implicit Commit
SAVEPOINT and ROLLBACK TO SAVEPOINT Syntax
LOCK TABLES and UNLOCK TABLES Syntax
SET TRANSACTION Syntax
XA Transactions
XA Transaction SQL Syntax
XA Transaction States
Database Administration Statements
Account Management Statements
CREATE USER Syntax
DROP USER Syntax
GRANT Syntax
RENAME USER Syntax
REVOKE Syntax
SET PASSWORD Syntax
Table Maintenance Statements
ANALYZE TABLE Syntax
BACKUP TABLE Syntax
CHECK TABLE Syntax
CHECKSUM TABLE Syntax
OPTIMIZE TABLE Syntax
REPAIR TABLE Syntax
RESTORE TABLE Syntax
SET Syntax
SHOW Syntax
SHOW CHARACTER SET Syntax
SHOW COLLATION Syntax
SHOW COLUMNS Syntax
SHOW CREATE DATABASE Syntax
SHOW CREATE PROCEDURE and SHOW CREATE FUNCTION Syntax
SHOW CREATE TABLE Syntax
SHOW CREATE VIEW Syntax
SHOW DATABASES Syntax
SHOW ENGINE Syntax
SHOW ENGINES Syntax
SHOW ERRORS Syntax
SHOW GRANTS Syntax
SHOW INDEX Syntax
SHOW INNODB STATUS Syntax
SHOW LOGS Syntax
SHOW OPEN TABLES Syntax
SHOW PRIVILEGES Syntax
SHOW PROCEDURE STATUS and SHOW FUNCTION STATUS Syntax
SHOW PROCESSLIST Syntax
SHOW STATUS Syntax
SHOW TABLE STATUS Syntax
SHOW TABLES Syntax
SHOW TRIGGERS Syntax
SHOW VARIABLES Syntax
SHOW WARNINGS Syntax
Other Administrative Statements
CACHE INDEX Syntax
FLUSH Syntax
KILL Syntax
LOAD INDEX INTO CACHE Syntax
RESET Syntax
Replication Statements
SQL Statements for Controlling Master Servers
PURGE MASTER LOGS Syntax
RESET MASTER Syntax
SET SQL_LOG_BIN Syntax
SHOW BINLOG EVENTS Syntax
SHOW BINARY LOGS Syntax
SHOW MASTER STATUS Syntax
SHOW SLAVE HOSTS Syntax
SQL Statements for Controlling Slave Servers
CHANGE MASTER TO Syntax
LOAD DATA FROM MASTER Syntax
LOAD TABLE tbl_name FROM MASTER Syntax
MASTER_POS_WAIT() Syntax
RESET SLAVE Syntax
SET GLOBAL SQL_SLAVE_SKIP_COUNTER Syntax
SHOW SLAVE STATUS Syntax
START SLAVE Syntax
STOP SLAVE Syntax
SQL Syntax for Prepared Statements
Storage Engines and Table Types
The MyISAM Storage Engine
MyISAM Startup Options
Space Needed for Keys
MyISAM Table Storage Formats
Static (Fixed-Length) Table Characteristics
Dynamic Table Characteristics
Compressed Table Characteristics
MyISAM Table Problems
Corrupted MyISAM Tables
Problems from Tables Not Being Closed Properly
The InnoDB Storage Engine
InnoDB Overview
InnoDB Contact Information
InnoDB Configuration
Using Per-Table Tablespaces
Using Raw Devices for the Shared Tablespace
InnoDB Startup Options and System Variables
Creating the InnoDB Tablespace
Dealing with InnoDB Initialization Problems
Creating and Using InnoDB Tables
How to Use Transactions in InnoDB with Different APIs
Converting MyISAM Tables to InnoDB
How AUTO_INCREMENT Columns Work in InnoDB
FOREIGN KEY Constraints
InnoDB and MySQL Replication
Adding and Removing InnoDB Data and Log Files
Backing Up and Recovering an InnoDB Database
Forcing InnoDB Recovery
Checkpoints
Moving an InnoDB Database to Another Machine
InnoDB Transaction Model and Locking
InnoDB Lock Modes
InnoDB and AUTOCOMMIT
InnoDB and TRANSACTION ISOLATION LEVEL
Consistent Non-Locking Read
SELECT ... FOR UPDATE and SELECT ... LOCK IN SHARE MODE Locking Reads
Next-Key Locking: Avoiding the Phantom Problem
An Example of Consistent Read in InnoDB
Locks Set by Different SQL Statements in InnoDB
Implicit Transaction Commit and Rollback
Deadlock Detection and Rollback
How to Cope with Deadlocks
InnoDB Performance Tuning Tips
SHOW ENGINE INNODB STATUS and the InnoDB Monitors
Implementation of Multi-Versioning
InnoDB Table and Index Structures
Physical Structure of an Index
Insert Buffering
Adaptive Hash Indexes
Physical Row Structure
InnoDB File Space Management and Disk I/O
InnoDB Disk I/O
File Space Management
Defragmenting a Table
InnoDB Error Handling
InnoDB Error Codes
Operating System Error Codes
Restrictions on InnoDB Tables
InnoDB Troubleshooting
Troubleshooting InnoDB Data Dictionary Operations
The MERGE Storage Engine
MERGE Table Problems
The MEMORY (HEAP) Storage Engine
The BDB (BerkeleyDB) Storage Engine
Operating Systems Supported by BDB
Installing BDB
BDB Startup Options
Characteristics of BDB Tables
Things We Need to Fix for BDB
Restrictions on BDB Tables
Errors That May Occur When Using BDB Tables
The EXAMPLE Storage Engine
The FEDERATED Storage Engine
Description of the FEDERATED Storage Engine
How to use FEDERATED Tables
Limitations of the FEDERATED Storage Engine
The ARCHIVE Storage Engine
The CSV Storage Engine
The BLACKHOLE Storage Engine
MySQL Cluster
MySQL Cluster Overview
Basic MySQL Cluster Concepts
MySQL Cluster Nodes, Node Groups, Replicas, and Partitions
Simple Multi-Computer How-To
Hardware, Software, and Networking
Multi-Computer Installation
Multi-Computer Configuration
Initial Startup
Loading Sample Data and Performing Queries
Safe Shutdown and Restart
MySQL Cluster Configuration
Building MySQL Cluster from Source Code
Installing the Software
Quick Test Setup of MySQL Cluster
Configuration File
Basic Example Configuration for a MySQL Cluster
The MySQL Cluster connectstring
Defining the Computers Making up a MySQL Cluster
Defining the MySQL Cluster Management Server
Defining MySQL Cluster Data Nodes
Defining the SQL Nodes in a MySQL Cluster
MySQL Cluster TCP/IP Connections
MySQL Cluster TCP/IP Connections Using Direct Connections
MySQL Cluster Shared-Memory Connections
MySQL Cluster SCI Transport Connections
Overview of Cluster Configuration Parameters
Cluster Data Node Configuration Parameters
Cluster Management Node Configuration Parameters
Cluster SQL Node Configuration Parameters
Configuring Parameters for Local Checkpoints
Upgrading and Downgrading MySQL Cluster
Performing a Rolling Upgrade or Downgrade
Cluster Upgrade and Downgrade Compatibility
Process Management in MySQL Cluster
MySQL Server Process Usage for MySQL Cluster
ndbd, the Storage Engine Node Process
ndb_mgmd, the Management Server Process
ndb_mgm, the Management Client Process
Command Options for MySQL Cluster Processes
MySQL Cluster-Related Command Options for mysqld
Command Options for ndbd
Command Options for ndb_mgmd
Command Options for ndb_mgm
Management of MySQL Cluster
MySQL Cluster Startup Phases
Commands in the Management Client
Event Reports Generated in MySQL Cluster
Logging Management Commands
Log Events
Using CLUSTERLOG STATISTICS
Single-User Mode
On-line Backup of MySQL Cluster
Cluster Backup Concepts
Using The Management Client to Create a Backup
How to Restore a Cluster Backup
Configuration for Cluster Backup
Backup Troubleshooting
Using High-Speed Interconnects with MySQL Cluster
Configuring MySQL Cluster to use SCI Sockets
Understanding the Impact of Cluster Interconnects
Known Limitations of MySQL Cluster
MySQL Cluster Development Roadmap
MySQL Cluster Changes in MySQL 5.0
MySQL 5.1 Development Roadmap for MySQL Cluster
MySQL Cluster FAQ
MySQL Cluster Glossary
Spatial Extensions
Introduction to MySQL Spatial Support
The OpenGIS Geometry Model
The Geometry Class Hierarchy
Class Geometry
Class Point
Class Curve
Class LineString
Class Surface
Class Polygon
Class GeometryCollection
Class MultiPoint
Class MultiCurve
Class MultiLineString
Class MultiSurface
Class MultiPolygon
Supported Spatial Data Formats
Well-Known Text (WKT) Format
Well-Known Binary (WKB) Format
Creating a Spatially Enabled MySQL Database
MySQL Spatial Data Types
Creating Spatial Values
Creating Geometry Values Using WKT Functions
Creating Geometry Values Using WKB Functions
Creating Geometry Values Using MySQL-Specific Functions
Creating Spatial Columns
Populating Spatial Columns
Fetching Spatial Data
Analyzing Spatial Information
Geometry Format Conversion Functions
Geometry Functions
General Geometry Functions
Point Functions
LineString Functions
MultiLineString Functions
Polygon Functions
MultiPolygon Functions
GeometryCollection Functions
Functions That Create New Geometries from Existing Ones
Geometry Functions That Produce New Geometries
Spatial Operators
Functions for Testing Spatial Relations Between Geometric Objects
Relations on Geometry Minimal Bounding Rectangles (MBRs)
Functions That Test Spatial Relationships Between Geometries
Optimizing Spatial Analysis
Creating Spatial Indexes
Using a Spatial Index
MySQL Conformance and Compatibility
Stored Procedures and Functions
Stored Routines and the Grant Tables
Stored Routine Syntax
CREATE PROCEDURE and CREATE FUNCTION Syntax
ALTER PROCEDURE and ALTER FUNCTION Syntax
DROP PROCEDURE and DROP FUNCTION Syntax
CALL Statement Syntax
BEGIN ... END Compound Statement Syntax
DECLARE Statement Syntax
Variables in Stored Routines
DECLARE Local Variables
Variable SET Statement
SELECT ... INTO Statement
Conditions and Handlers
DECLARE Conditions
DECLARE Handlers
Cursors
Declaring Cursors
Cursor OPEN Statement
Cursor FETCH Statement
Cursor CLOSE Statement
Flow Control Constructs
IF Statement
CASE Statement
LOOP Statement
LEAVE Statement
ITERATE Statement
REPEAT Statement
WHILE Statement
Stored Procedures, Functions, Triggers, and Replication: Frequently Asked Questions
Binary Logging of Stored Routines and Triggers
Triggers
CREATE TRIGGER Syntax
DROP TRIGGER Syntax
Using Triggers
Views
ALTER VIEW Syntax
CREATE VIEW Syntax
DROP VIEW Syntax
The INFORMATION_SCHEMA Database
The INFORMATION_SCHEMA SCHEMATA Table
The INFORMATION_SCHEMA TABLES Table
The INFORMATION_SCHEMA COLUMNS Table
The INFORMATION_SCHEMA STATISTICS Table
The INFORMATION_SCHEMA USER_PRIVILEGES Table
The INFORMATION_SCHEMA SCHEMA_PRIVILEGES Table
The INFORMATION_SCHEMA TABLE_PRIVILEGES Table
The INFORMATION_SCHEMA COLUMN_PRIVILEGES Table
The INFORMATION_SCHEMA CHARACTER_SETS Table
The INFORMATION_SCHEMA COLLATIONS Table
The INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY Table
The INFORMATION_SCHEMA TABLE_CONSTRAINTS Table
The INFORMATION_SCHEMA KEY_COLUMN_USAGE Table
The INFORMATION_SCHEMA ROUTINES Table
The INFORMATION_SCHEMA VIEWS Table
The INFORMATION_SCHEMA TRIGGERS Table
Other INFORMATION_SCHEMA Tables
Extensions to SHOW Statements
Precision Math
Types of Numeric Values
DECIMAL Data Type Changes
Expression Handling
Rounding Behavior
Precision Math Examples
APIs and Libraries
libmysqld, the Embedded MySQL Server Library
MySQL C API
C API Data types
C API Function Overview
C API Function Descriptions
mysql_affected_rows()
mysql_autocommit()
mysql_change_user()
mysql_character_set_name()
mysql_close()
mysql_commit()
mysql_connect()
mysql_create_db()
mysql_data_seek()
mysql_debug()
mysql_drop_db()
mysql_dump_debug_info()
mysql_eof()
mysql_errno()
mysql_error()
mysql_escape_string()
mysql_fetch_field()
mysql_fetch_field_direct()
mysql_fetch_fields()
mysql_fetch_lengths()
mysql_fetch_row()
mysql_field_count()
mysql_field_seek()
mysql_field_tell()
mysql_free_result()
mysql_get_character_set_info()
mysql_get_client_info()
mysql_get_client_version()
mysql_get_host_info()
mysql_get_proto_info()
mysql_get_server_info()
mysql_get_server_version()
mysql_hex_string()
mysql_info()
mysql_init()
mysql_insert_id()
mysql_kill()
mysql_library_end()
mysql_library_init()
mysql_list_dbs()
mysql_list_fields()
mysql_list_processes()
mysql_list_tables()
mysql_more_results()
mysql_next_result()
mysql_num_fields()
mysql_num_rows()
mysql_options()
mysql_ping()
mysql_query()
mysql_real_connect()
mysql_real_escape_string()
mysql_real_query()
mysql_refresh()
mysql_reload()
mysql_rollback()
mysql_row_seek()
mysql_row_tell()
mysql_select_db()
mysql_set_character_set()
mysql_set_local_infile_default()
mysql_set_local_infile_handler()
mysql_set_server_option()
mysql_shutdown()
mysql_sqlstate()
mysql_ssl_set()
mysql_stat()
mysql_store_result()
mysql_thread_id()
mysql_use_result()
mysql_warning_count()
C API Prepared Statements
C API Prepared Statement Data types
C API Prepared Statement Function Overview
C API Prepared Statement Function Descriptions
mysql_stmt_affected_rows()
mysql_stmt_attr_get()
mysql_stmt_attr_set()
mysql_stmt_bind_param()
mysql_stmt_bind_result()
mysql_stmt_close()
mysql_stmt_data_seek()
mysql_stmt_errno()
mysql_stmt_error()
mysql_stmt_execute()
mysql_stmt_fetch()
mysql_stmt_fetch_column()
mysql_stmt_field_count()
mysql_stmt_free_result()
mysql_stmt_init()
mysql_stmt_insert_id()
mysql_stmt_num_rows()
mysql_stmt_param_count()
mysql_stmt_param_metadata()
mysql_stmt_prepare()
mysql_stmt_reset()
mysql_stmt_result_metadata()
mysql_stmt_row_seek()
mysql_stmt_row_tell()
mysql_stmt_send_long_data()
mysql_stmt_sqlstate()
mysql_stmt_store_result()
C API Prepared statement problems
C API Handling of Multiple Statement Execution
C API Handling of Date and Time Values
C API Threaded Function Descriptions
my_init()
mysql_thread_init()
mysql_thread_end()
mysql_thread_safe()
C API Embedded Server Function Descriptions
mysql_server_init()
mysql_server_end()
Common Questions and Problems When Using the C API
Why mysql_store_result() Sometimes Returns NULL After mysql_query() Returns Success
What Results You Can Get from a Query
How to Get the Unique ID for the Last Inserted Row
Problems Linking with the C API
Building Client Programs
How to Make a Threaded Client
MySQL PHP API
Common Problems with MySQL and PHP
Enabling Both mysql and mysqli in PHP
MySQL Perl API
MySQL C++ API
Borland C++
MySQL Python API
MySQL Tcl API
MySQL Eiffel Wrapper
MySQL Program Development Utilities
msql2mysql ?Convert mSQL Programs for Use with MySQL
mysql_config ?Get Compile Options for Compiling Clients
Connectors
MySQL Connector/ODBC
Introduction to MyODBC
MyODBC Versions
General Information About ODBC and MyODBC
MyODBC Architecture
ODBC Driver Managers
How to Install MyODBC
Where to Get MyODBC
Supported Platforms
Installing MyODBC from a binary distribution
Installing MyODBC from a Binary Distribution on Windows
Installing the Windows MyODBC Driver using an installer
Installing the Windows MyODBC Driver using the Zipped DLL package
Handling Installation Errors
Installing MyODBC from a Binary Distribution on Unix
Installing MyODBC from a Binary Tarball Distribution
Installing MyODBC from an RPM Distribution
Installing MyODBC on Mac OS X
Installing the MyODBC Driver
Installing MyODBC from a source distribution
Installing MyODBC from a Source Distribution on Windows
Building MyODBC 3.51
Testing
Building MyODBC 2.50
Installing MyODBC from a Source Distribution on Unix
Typical configure Options
Additional configure Options
Building and Compilation
Building Shared Libraries
Installing Driver Libraries
Testing MyODBC on Unix
Building MyODBC from Source on Mac OS X
Building MyODBC from Source on HP-UX
Building MyODBC from Source on AIX
Installing MyODBC from the Development Source Tree
MyODBC Configuration
Data Source Names
Configuring a MyODBC DSN on Windows
Adding a MyODBC DSN on Windows
Checking MyODBC DSN Configuration on Windows
MyODBC DSN Configuration Options
Errors and Debugging
Configuring a MyODBC DSN on Mac OS X
Configuring a MyODBC DSN on Unix
MyODBC Connection Parameters
Connecting Without a Predefined DSN
ODBC Connection Pooling
Getting an ODBC Trace File
Enabling ODBC Tracing on Windows
Enabling ODBC Tracing on Mac OS X
Enabling ODBC Tracing on Unix
Enabling a MyODBC Log
MyODBC Examples
Basic MyODBC Application Steps
Step-by-step Guide to Connecting to a MySQL Database through MyODBC
MyODBC and Third-Party ODBC Tools
Applications Tested with MyODBC
Using MyODBC with Microsoft Word or Excel
Using MyODBC and Microsoft Access
Exporting Access Data to MySQL
Importing MySQL Data to Access
Linking MySQL Data to Access Tables
MyODBC Programming Examples
Using MyODBC with Visual Basic Using ADO, DAO and RDO
ADO: rs.addNew, rs.delete, and rs.update
DAO: rs.addNew, rs.update, and Scrolling
RDO: rs.addNew and rs.update
Using MyODBC with .NET
Using MyODBC with ODBC.NET and C# (C sharp)
Using MyODBC with ODBC.NET and Visual Basic
MyODBC Reference
MyODBC API Reference
MyODBC Data Types
MyODBC Error Codes
MyODBC Notes and Tips
MyODBC General Functionality
Obtaining Auto-Increment Values
Dynamic Cursor Support
MyODBC Performance
Setting ODBC Query Timeout in Windows
MyODBC Application Specific Tips
Using MyODBC with Microsoft Applications
Microsoft Access
Microsoft Excel and Column Types
Microsoft Visual Basic
Microsoft Visual InterDev
Visual Objects
Microsoft ADO
Using MyODBC with Active Server Pages (ASP)
Using MyODBC with Visual Basic (ADO, DAO and RDO) and ASP
Using MyODBC with Borland Applications
Using MyODBC with Borland Builder 4
Using MyODBC with Delphi
Using MyODBC with C++ Builder
Using MyODBC with ColdFusion
Using MyODBC with OpenOffice
Using MyODBC with Sambar Server
Using MyODBC with Pervasive Software DataJunction
Using MyODBC with SunSystems Vision
MyODBC Errors and Resolutions
MyODBC Support
MyODBC Community Support
How to Report MyODBC Problems or Bugs
How to Submit a MyODBC Patch
MyODBC Change History
Credits
Connector/NET
Connector/NET Versions
How to install Connector/NET
Installing Connector/NET on Windows
Installing Connector/NET using the Installer
Installing Connector/NET using the Zip package
Installing Connector/NET on Unix with Mono
Installing Connector/NET using the Source
Connector/NET Examples
MySqlCommand
Class MySqlCommand Constructor Form 1
Class MySqlCommand Constructor Form 2
Class MySqlCommand Constructor Form 3
Class MySqlCommand Constructor Form 4
ExecuteNonQuery
ExecuteReader1
ExecuteReader
Prepare
ExecuteScalar
CommandText
CommandTimeout
CommandType
Connection
IsPrepared
Parameters
Transaction
UpdatedRowSource
MySqlCommandBuilder
Class MySqlCommandBuilder Constructor
Class MySqlCommandBuilder Constructor Form 1
Class MySqlCommandBuilder Constructor Form 2
Class MySqlCommandBuilder Constructor Form 3
DataAdapter
QuotePrefix
QuoteSuffix
DeriveParameters
GetDeleteCommand
GetInsertCommand
GetUpdateCommand
RefreshSchema
MySqlConnection
Class MySqlConnection Constructor (Default)
Class MySqlConnection Constructor Form 1
Open
Database
State
ServerVersion
Close
CreateCommand
BeginTransaction
BeginTransaction1
ChangeDatabase
StateChange
InfoMessage
ConnectionTimeout
ConnectionString
MySqlDataAdapter
Class MySqlDataAdapter Constructor
Class MySqlDataAdapter Constructor Form 1
Class MySqlDataAdapter Constructor Form 2
Class MySqlDataAdapter Constructor Form 3
DeleteCommand
InsertCommand
UpdateCommand
SelectCommand
MySqlDataReader
GetBytes
GetTimeSpan
GetDateTime
GetMySqlDateTime
GetString
GetDecimal
GetDouble
GetFloat
GetGiud
GetInt16
GetInt32
GetInt64
GetUInt16
GetUInt32
GetUInt64
MySqlException
MySqlParameter
MySqlParameterCollection
MySqlTransaction
Rollback
Commit
Connector/NET Reference
MySql.Data.MySqlClient
MySql.Data.MySqlClientHierarchy
MySqlCommand Class
MySqlCommand Members
MySqlCommandBuilder Class
MySqlCommandBuilder Members
MySqlException Class
MySqlException Members
MySqlHelper Class
MySqlHelper Members
MySqlErrorCode Enumeration
MySql.Data.Types
MySql.Data.TypesHierarchy
MySqlConversionException Class
MySqlConversionException Members
MySqlDateTime Class
MySqlDateTime Members
Connector/NET Notes and Tips
Connecting to MySQL Using Connector/NET
Introduction
Creating a Connection String
Opening a Connection
Handling Connection Errors
Using the Connector/NET with Prepared Statements
Introduction
Preparing Statements in Connector/NET
Accessing Stored Procedures with Connector/NET
Introduction
Creating Stored Procedures from Connector/NET
Calling a Stored Procedure from Connector/NET
Handling BLOB Data With Connector/NET
Introduction
Preparing the MySQL Server
Writing a File to the Database
Reading a BLOB from the Database to a File on Disk
Using Connector/NET with Crystal Reports
Introduction
Creating a Data Source
Creating the Report
Displaying the Report
Handling Date and Time Information in Connector/NET
Introduction
Problems when Using Invalid Dates
Restricting Invalid Dates
Handling Invalid Dates
Handling NULL Dates
Connector/NET Support
Connector/NET Community Support
How to report Connector/NET Problems or Bugs
Connector/NET Change History
MySQL Connector/J
Basic JDBC concepts
Connecting to MySQL Using the DriverManager Interface
Using Statements to Execute SQL
Using CallableStatements to Execute Stored Procedures
Retrieving AUTO_INCREMENT Column Values
Installing Connector/J
Required Software Versions
Java Versions Supported
MySQL Server Version Guidelines
Installing the Driver and Configuring the CLASSPATH
Upgrading from an Older Version
Upgrading from MySQL Connector/J 3.0 to 3.1
JDBC-Specific Issues When Upgrading to MySQL Server 4.1 or Newer
Installing from the Development Source Tree
JDBC Reference
Driver/Datasource Class Names, URL Syntax and Configuration Properties for Connector/J
JDBC API Implementation Notes
Java, JDBC and MySQL Types
Using Character Sets and Unicode
Connecting Securely Using SSL
Using Master/Slave Replication with ReplicationConnection
Using Connector/J with J2EE and Other Java Frameworks
General J2EE Concepts
Understanding Connection Pooling
Using Connector/J with Tomcat
Using Connector/J with JBoss
Diagnosing Connector/J Problems
Common Problems and Solutions
How to Report Connector/J Bugs or Problems
MySQL Connector/J Change History
Changes in MySQL Connector/J 5.0.3 (26 July 2006)
Changes in MySQL Connector/J 5.0.2-beta (11 July 2006)
Changes in MySQL Connector/J 5.0.1-beta (Not Released)
Changes in MySQL Connector/J 5.0.0-beta (22 December 2005)
Changes in MySQL Connector/J 3.1.14 (not yet released)
Changes in MySQL Connector/J 3.1.13 (26 May 2006)
Changes in MySQL Connector/J 3.1.12 (30 November 2005)
Changes in MySQL Connector/J 3.1.11-stable (07 October 2005)
Changes in MySQL Connector/J 3.1.10-stable (23 June 2005)
Changes in MySQL Connector/J 3.1.9-stable (22 June 2005)
Changes in MySQL Connector/J 3.1.8-stable (14 April 2005)
Changes in MySQL Connector/J 3.1.7-stable (18 February 2005)
Changes in MySQL Connector/J 3.1.6-stable (23 December 2004)
Changes in MySQL Connector/J 3.1.5-gamma (02 December 2004)
Changes in MySQL Connector/J 3.1.4-beta (04 September 2004)
Changes in MySQL Connector/J 3.1.3-beta (07 July 2004)
Changes in MySQL Connector/J 3.1.2-alpha (09 June 2004)
Changes in MySQL Connector/J 3.1.1-alpha (14 February 2004)
Changes in MySQL Connector/J 3.1.0-alpha (18 February 2003)
Changes in MySQL Connector/J 3.0.17-ga (23 June 2005)
Changes in MySQL Connector/J 3.0.16-ga (15 November 2004)
Changes in MySQL Connector/J 3.0.15-production (04 September 2004)
Changes in MySQL Connector/J 3.0.14-production (28 May 2004)
Changes in MySQL Connector/J 3.0.13-production (27 May 2004)
Changes in MySQL Connector/J 3.0.12-production (18 May 2004)
Changes in MySQL Connector/J 3.0.11-stable (19 February 2004)
Changes in MySQL Connector/J 3.0.10-stable (13 January 2004)
Changes in MySQL Connector/J 3.0.9-stable (07 October 2003)
Changes in MySQL Connector/J 3.0.8-stable (23 May 2003)
Changes in MySQL Connector/J 3.0.7-stable (08 April 2003)
Changes in MySQL Connector/J 3.0.6-stable (18 February 2003)
Changes in MySQL Connector/J 3.0.5-gamma (22 January 2003)
Changes in MySQL Connector/J 3.0.4-gamma (06 January 2003)
Changes in MySQL Connector/J 3.0.3-dev (17 December 2002)
Changes in MySQL Connector/J 3.0.2-dev (08 November 2002)
Changes in MySQL Connector/J 3.0.1-dev (21 September 2002)
Changes in MySQL Connector/J 3.0.0-dev (31 July 2002)
Changes in MySQL Connector/J 2.0.14 (16 May 2002)
Changes in MySQL Connector/J 2.0.13 (24 April 2002)
Changes in MySQL Connector/J 2.0.12 (07 April 2002)
Changes in MySQL Connector/J 2.0.11 (27 January 2002)
Changes in MySQL Connector/J 2.0.10 (24 January 2002)
Changes in MySQL Connector/J 2.0.9 (13 January 2002)
Changes in MySQL Connector/J 2.0.8 (25 November 2001)
Changes in MySQL Connector/J 2.0.7 (24 October 2001)
Changes in MySQL Connector/J 2.0.6 (16 June 2001)
Changes in MySQL Connector/J 2.0.5 (13 June 2001)
Changes in MySQL Connector/J 2.0.3 (03 December 2000)
Changes in MySQL Connector/J 2.0.1 (06 April 2000)
Changes in MySQL Connector/J 2.0.0pre5 (21 February 2000)
Changes in MySQL Connector/J 2.0.0pre4 (10 January 2000)
Changes in MySQL Connector/J 2.0.0pre (17 August 1999)
Changes in MySQL Connector/J 1.2b (04 July 1999)
Changes in MySQL Connector/J 1.2a (14 April 1999)
Changes in MySQL Connector/J 1.1i (24 March 1999)
Changes in MySQL Connector/J 1.1h (08 March 1999)
Changes in MySQL Connector/J 1.1g (19 February 1999)
Changes in MySQL Connector/J 1.1f (31 December 1998)
Changes in MySQL Connector/J 1.1b (03 November 1998)
Changes in MySQL Connector/J 1.1 (02 September 1998)
Changes in MySQL Connector/J 1.0 (24 August 1998)
Changes in MySQL Connector/J 0.9d (04 August 1998)
Changes in MySQL Connector/J 0.9 (28 July 1998)
Changes in MySQL Connector/J 0.8 (06 July 1998)
Changes in MySQL Connector/J 0.7 (01 July 1998)
Changes in MySQL Connector/J 0.6 (21 May 1998)
MySQL Connector/MXJ
Introduction
Supported Platforms
JUnit Test Requirements
Running the JUnit Tests
Running as part of the JDBC Driver
Running within a Java Object
The MysqldResource API
Running within a JMX Agent (custom)
Deployment in a standard JMX Agent environment (JBoss)
Installation
Connector/PHP
Extending MySQL
MySQL Internals
MySQL Threads
MySQL Test Suite
Adding New Functions to MySQL
Features of the User-Defined Function Interface
CREATE FUNCTION Syntax
DROP FUNCTION Syntax
Adding a New User-Defined Function
UDF Calling Sequences for Simple Functions
UDF Calling Sequences for Aggregate Functions
UDF Argument Processing
UDF Return Values and Error Handling
Compiling and Installing User-Defined Functions
User-Defined Function Security Precautions
Adding a New Native Function
Adding New Procedures to MySQL
Procedure Analyse
Writing a Procedure
Problems and Common Errors
How to Determine What Is Causing a Problem
Common Errors When Using MySQL Programs
Access denied
Can't connect to [local] MySQL server
Connection to MySQL Server Failing on Windows
Client does not support authentication protocol
Password Fails When Entered Interactively
Host 'host_name' is blocked
Too many connections
Out of memory
MySQL server has gone away
Packet too large
Communication Errors and Aborted Connections
The table is full
Can't create/write to file
Commands out of sync
Ignoring user
Table 'tbl_name' doesn't exist
Can't initialize character set
File Not Found
Installation-Related Issues
Problems Linking to the MySQL Client Library
Problems with File Permissions
Administration-Related Issues
How to Reset the Root Password
What to Do If MySQL Keeps Crashing
How MySQL Handles a Full Disk
Where MySQL Stores Temporary Files
How to Protect or Change the MySQL Unix Socket File
Time Zone Problems
Query-Related Issues
Case Sensitivity in Searches
Problems Using DATE Columns
Problems with NULL Values
Problems with Column Aliases
Rollback Failure for Non-Transactional Tables
Deleting Rows from Related Tables
Solving Problems with No Matching Rows
Problems with Floating-Point Comparisons
Optimizer-Related Issues
Table Definition-Related Issues
Problems with ALTER TABLE
How to Change the Order of Columns in a Table
TEMPORARY TABLE Problems
Known Issues in MySQL
Open Issues in MySQL
Error Codes and Messages
Server Error Codes and Messages
Client Error Codes and Messages
Credits
Developers at MySQL AB
Contributors to MySQL
Documenters and translators
Libraries used by and included with MySQL
Packages that support MySQL
Tools that were used to create MySQL
Supporters of MySQL
MySQL Change History
Changes in release 5.0.x (Production)
Changes in release 5.0.25 (Not yet released)
Changes in release 5.0.24 (Not yet released)
Changes in release 5.0.23 (Not released)
Changes in release 5.0.22 (24 May 2006)
Changes in release 5.0.21 (02 May 2006)
Changes in release 5.0.20a (18 April 2006)
Changes in release 5.0.20 (31 March 2006)
Changes in release 5.0.19 (04 March 2006)
Changes in release 5.0.18 (21 December 2005)
Changes in release 5.0.17 (14 December 2005)
Changes in release 5.0.16 (10 November 2005)
Changes in release 5.0.15 (19 October 2005: Production)
Changes in release 5.0.14 (Not released)
Changes in release 5.0.13 (22 September 2005: Release Candidate)
Changes in release 5.0.12 (02 September 2005)
Changes in release 5.0.11 (06 August 2005)
Changes in release 5.0.10 (27 July 2005)
Changes in release 5.0.9 (15 July 2005)
Changes in release 5.0.8 (Not released)
Changes in release 5.0.7 (10 June 2005)
Changes in release 5.0.6 (26 May 2005)
Changes in release 5.0.5 (Not released)
Changes in release 5.0.4 (16 April 2005)
Changes in release 5.0.3 (23 March 2005: Beta)
Changes in release 5.0.2 (01 December 2004)
Changes in release 5.0.1 (27 July 2004)
Changes in release 5.0.0 (22 December 2003: Alpha)
Changes in MySQL Cluster
Changes in MySQL Cluster-5.0.7 (10 June 2005)
Changes in MySQL Cluster-5.0.6 (26 May 2005)
Changes in MySQL Cluster-5.0.5 (Not released)
Changes in MySQL Cluster-5.0.4 (16 April 2005)
Changes in MySQL Cluster-5.0.3 (23 March 2005: Beta)
Changes in MySQL Cluster-5.0.1 (27 July 2004)
Changes in MySQL Cluster-4.1.13 (15 July 2005)
Changes in MySQL Cluster-4.1.12 (13 May 2005)
Changes in MySQL Cluster-4.1.11 (01 April 2005)
Changes in MySQL Cluster-4.1.10 (12 February 2005)
Changes in MySQL Cluster-4.1.9 (13 January 2005)
Changes in MySQL Cluster-4.1.8 (14 December 2004)
Changes in MySQL Cluster-4.1.7 (23 October 2004)
Changes in MySQL Cluster-4.1.6 (10 October 2004)
Changes in MySQL Cluster-4.1.5 (16 September 2004)
Changes in MySQL Cluster-4.1.4 (31 August 2004)
Changes in MySQL Cluster-4.1.3 (28 June 2004)
MySQL Connector/ODBC (MyODBC) Change History
Changes in MyODBC 3.51.13
Changes in MyODBC 3.51.12
Changes in MyODBC 3.51.11
MySQL Connector/NET Change History
Version 1.0.8
Version 1.0.7
Version 1.0.6
Version 1.0.5
Version 1.0.4 1-20-05
Version 1.0.3-gamma 12-10-04
Version 1.0.2-gamma 04-11-15
Version 1.0.1-beta2 04-10-27
Version 1.0.0 04-09-01
Version 0.9.0 04-08-30
Version 0.76
Version 0.75
Version 0.74
Version 0.71
Version 0.70
Version 0.68
Version 0.65
Version 0.60
Version 0.50
Porting to Other Systems
Debugging a MySQL Server
Compiling MySQL for Debugging
Creating Trace Files
Debugging mysqld under gdb
Using a Stack Trace
Using Server Logs to Find Causes of Errors in mysqld
Making a Test Case If You Experience Table Corruption
Debugging a MySQL Client
The DBUG Package
Comments about RTS Threads
Differences Between Thread Packages
Environment Variables
Regular Expressions
Limits in MySQL
Limits of Joins
Feature Restrictions
Restrictions on Stored Routines and Triggers
Restrictions on Server-Side Cursors
Restrictions on Subqueries
Restrictions on Views
Restrictions on XA Transactions
GNU General Public License
MySQL FLOSS License Exception