MySQL 5.1 Reference Manual

Copyright 1997-2008 MySQL AB

This documentation is NOT distributed under a GPL license. Use of this documentation is subject to the following terms: You may create a printed copy of this documentation solely for your own personal use. Conversion to other formats is allowed as long as the actual content is not altered or edited in any way. You shall not publish or distribute this documentation in any form or on any media, except if you distribute the documentation in a manner similar to how MySQL disseminates it (that is, electronically for download on a Web site with the software) or on a CD-ROM or similar medium, provided however that the documentation is disseminated together with the software on the same medium. Any other use, such as any dissemination of printed copies or use of this documentation, in whole or in part, in another publication, requires the prior written consent from an authorized representative of MySQL AB. MySQL AB reserves any and all rights to this documentation not expressly granted above.

For more information on the terms of this license, for details on how the MySQL documentation is built and produced, or if you are interested in doing a translation, please contact us at .

If you want help with using MySQL, please visit either the MySQL Forums or MySQL Mailing Lists where you can discuss your issues with other MySQL users.

For additional documentation on MySQL products, including translations of the documentation into other languages, and downloadable versions in variety of formats, including HTML, CHM and PDF formats, see MySQL Documentation Library.

Abstract

This is the MySQL Reference Manual. It documents MySQL 5.1 through 5.1.28.

Document generated on: 2008-08-25 (revision: 11606)


Table of Contents

Preface
1. General Information
1.1. About This Manual
1.2. Conventions Used in This Manual
1.3. Overview of MySQL AB
1.4. Overview of the MySQL Database Management System
1.4.1. What is MySQL?
1.4.2. History of MySQL
1.4.3. The Main Features of MySQL
1.5. MySQL Development Roadmap
1.5.1. What's New in MySQL 5.1
1.5.2. What's Planned for MySQL 6.0
1.6. MySQL Information Sources
1.6.1. MySQL Mailing Lists
1.6.2. MySQL Community Support at the MySQL Forums
1.6.3. MySQL Community Support on Internet Relay Chat (IRC)
1.6.4. MySQL Enterprise
1.7. How to Report Bugs or Problems
1.8. MySQL Standards Compliance
1.8.1. What Standards MySQL Follows
1.8.2. Selecting SQL Modes
1.8.3. Running MySQL in ANSI Mode
1.8.4. MySQL Extensions to Standard SQL
1.8.5. MySQL Differences from Standard SQL
1.8.6. How MySQL Deals with Constraints
2. Installing and Upgrading MySQL
2.1. General Installation Issues
2.1.1. Operating Systems Supported by MySQL Community Server
2.1.2. Choosing Which MySQL Distribution to Install
2.1.3. How to Get MySQL
2.1.4. Verifying Package Integrity Using MD5 Checksums or GnuPG
2.1.5. Installation Layouts
2.2. Standard MySQL Installation Using a Binary Distribution
2.3. Installing MySQL on Windows
2.3.1. Choosing An Installation Package
2.3.2. Installing MySQL with the Automated Installer
2.3.3. Using the MySQL Installation Wizard
2.3.4. Using the Configuration Wizard
2.3.5. Installing MySQL from a Noinstall Zip Archive
2.3.6. Extracting the Install Archive
2.3.7. Creating an Option File
2.3.8. Selecting a MySQL Server Type
2.3.9. Starting the Server for the First Time
2.3.10. Starting MySQL from the Windows Command Line
2.3.11. Starting MySQL as a Windows Service
2.3.12. Testing The MySQL Installation
2.3.13. Troubleshooting a MySQL Installation Under Windows
2.3.14. Upgrading MySQL on Windows
2.3.15. MySQL on Windows Compared to MySQL on Unix
2.4. Installing MySQL from RPM Packages on Linux
2.5. Installing MySQL on Mac OS X
2.6. Installing MySQL on Solaris
2.7. Installing MySQL on NetWare
2.8. Installing MySQL from tar.gz Packages on Other Unix-Like Systems
2.9. MySQL Installation Using a Source Distribution
2.9.1. Source Installation Overview
2.9.2. Typical configure Options
2.9.3. Installing from the Development Source Tree
2.9.4. Dealing with Problems Compiling MySQL
2.9.5. MIT-pthreads Notes
2.9.6. Installing MySQL from Source on Windows
2.9.7. Compiling MySQL Clients on Windows
2.10. Post-Installation Setup and Testing
2.10.1. Windows Post-Installation Procedures
2.10.2. Unix Post-Installation Procedures
2.10.3. Securing the Initial MySQL Accounts
2.11. Upgrading MySQL
2.11.1. Upgrading from MySQL 5.0 to 5.1
2.11.2. Copying MySQL Databases to Another Machine
2.12. Downgrading MySQL
2.12.1. Downgrading to MySQL 5.0
2.13. Operating System-Specific Notes
2.13.1. Linux Notes
2.13.2. Mac OS X Notes
2.13.3. Solaris Notes
2.13.4. BSD Notes
2.13.5. Other Unix Notes
2.14. Environment Variables
2.15. Perl Installation Notes
2.15.1. Installing Perl on Unix
2.15.2. Installing ActiveState Perl on Windows
2.15.3. Problems Using the Perl DBI/DBD Interface
3. Tutorial
3.1. Connecting to and Disconnecting from the Server
3.2. Entering Queries
3.3. Creating and Using a Database
3.3.1. Creating and Selecting a Database
3.3.2. Creating a Table
3.3.3. Loading Data into a Table
3.3.4. Retrieving Information from a Table
3.4. Getting Information About Databases and Tables
3.5. Using mysql in Batch Mode
3.6. Examples of Common Queries
3.6.1. The Maximum Value for a Column
3.6.2. The Row Holding the Maximum of a Certain Column
3.6.3. Maximum of Column per Group
3.6.4. The Rows Holding the Group-wise Maximum of a Certain Field
3.6.5. Using User-Defined Variables
3.6.6. Using Foreign Keys
3.6.7. Searching on Two Keys
3.6.8. Calculating Visits Per Day
3.6.9. Using AUTO_INCREMENT
3.7. Queries from the Twin Project
3.7.1. Find All Non-distributed Twins
3.7.2. Show a Table of Twin Pair Status
3.8. Using MySQL with Apache
4. MySQL Programs
4.1. Overview of MySQL Programs
4.2. Using MySQL Programs
4.2.1. Invoking MySQL Programs
4.2.2. Connecting to the MySQL Server
4.2.3. Specifying Program Options
4.2.4. Setting Environment Variables
4.3. MySQL Server and Server-Startup Programs
4.3.1. mysqld — The MySQL Server
4.3.2. mysqld_safe — MySQL Server Startup Script
4.3.3. mysql.server — MySQL Server Startup Script
4.3.4. mysqld_multi — Manage Multiple MySQL Servers
4.4. MySQL Installation-Related Programs
4.4.1. comp_err — Compile MySQL Error Message File
4.4.2. make_win_bin_dist — Package MySQL Distribution as ZIP Archive
4.4.3. mysqlbug — Generate Bug Report
4.4.4. mysql_fix_privilege_tables — Upgrade MySQL System Tables
4.4.5. mysql_install_db — Initialize MySQL Data Directory
4.4.6. mysql_secure_installation — Improve MySQL Installation Security
4.4.7. mysql_tzinfo_to_sql — Load the Time Zone Tables
4.4.8. mysql_upgrade — Check Tables for MySQL Upgrade
4.5. MySQL Client Programs
4.5.1. mysql — The MySQL Command-Line Tool
4.5.2. mysqladmin — Client for Administering a MySQL Server
4.5.3. mysqlcheck — A Table Maintenance and Repair Program
4.5.4. mysqldump — A Database Backup Program
4.5.5. mysqlimport — A Data Import Program
4.5.6. mysqlshow — Display Database, Table, and Column Information
4.5.7. mysqlslap — Load Emulation Client
4.6. MySQL Administrative and Utility Programs
4.6.1. innochecksum — Offline InnoDB File Checksum Utility
4.6.2. myisam_ftdump — Display Full-Text Index information
4.6.3. myisamchk — MyISAM Table-Maintenance Utility
4.6.4. myisamlog — Display MyISAM Log File Contents
4.6.5. myisampack — Generate Compressed, Read-Only MyISAM Tables
4.6.6. mysqlaccess — Client for Checking Access Privileges
4.6.7. mysqlbinlog — Utility for Processing Binary Log Files
4.6.8. mysqlhotcopy — A Database Backup Program
4.6.9. mysqlmanager — The MySQL Instance Manager
4.6.10. mysql_convert_table_format — Convert Tables to Use a Given Storage Engine
4.6.11. mysql_find_rows — Extract SQL Statements from Files
4.6.12. mysql_fix_extensions — Normalize Table Filename Extensions
4.6.13. mysql_setpermission — Interactively Set Permissions in Grant Tables
4.6.14. mysql_waitpid — Kill Process and Wait for Its Termination
4.6.15. mysql_zap — Kill Processes That Match a Pattern
4.7. MySQL Program Development Utilities
4.7.1. msql2mysql — Convert mSQL Programs for Use with MySQL
4.7.2. mysql_config — Get Compile Options for Compiling Clients
4.7.3. my_print_defaults — Display Options from Option Files
4.7.4. resolve_stack_dump — Resolve Numeric Stack Trace Dump to Symbols
4.8. Miscellaneous Programs
4.8.1. perror — Explain Error Codes
4.8.2. replace — A String-Replacement Utility
4.8.3. resolveip — Resolve Hostname to IP Address or Vice Versa
5. MySQL Server Administration
5.1. The MySQL Server
5.1.1. Option and Variable Reference
5.1.2. Command Options
5.1.3. System Variables
5.1.4. Session System Variables
5.1.5. Using System Variables
5.1.6. Status Variables
5.1.7. SQL Modes
5.1.8. Server-Side Help
5.1.9. Server Response to Signals
5.1.10. The Shutdown Process
5.2. MySQL Server Logs
5.2.1. Selecting General Query and Slow Query Log Output Destinations
5.2.2. The Error Log
5.2.3. The General Query Log
5.2.4. The Binary Log
5.2.5. The Slow Query Log
5.2.6. Server Log Maintenance
5.3. General Security Issues
5.3.1. General Security Guidelines
5.3.2. Making MySQL Secure Against Attackers
5.3.3. Security-Related mysqld Options
5.3.4. Security Issues with LOAD DATA LOCAL
5.3.5. How to Run MySQL as a Normal User
5.4. The MySQL Access Privilege System
5.4.1. What the Privilege System Does
5.4.2. How the Privilege System Works
5.4.3. Privileges Provided by MySQL
5.4.4. Access Control, Stage 1: Connection Verification
5.4.5. Access Control, Stage 2: Request Verification
5.4.6. When Privilege Changes Take Effect
5.4.7. Causes of Access denied Errors
5.4.8. Password Hashing as of MySQL 4.1
5.5. MySQL User Account Management
5.5.1. MySQL Usernames and Passwords
5.5.2. Adding New User Accounts to MySQL
5.5.3. Removing User Accounts from MySQL
5.5.4. Limiting Account Resources
5.5.5. Assigning Account Passwords
5.5.6. Keeping Your Password Secure
5.5.7. Using SSL for Secure Connections
5.6. Running Multiple MySQL Servers on the Same Machine
5.6.1. Running Multiple Servers on Windows
5.6.2. Running Multiple Servers on Unix
5.6.3. Using Client Programs in a Multiple-Server Environment
6. Backup and Recovery
6.1. Database Backups
6.2. Example Backup and Recovery Strategy
6.2.1. Backup Policy
6.2.2. Using Backups for Recovery
6.2.3. Backup Strategy Summary
6.3. Point-in-Time Recovery
6.3.1. Specifying Times for Recovery
6.3.2. Specifying Positions for Recovery
6.4. Table Maintenance and Crash Recovery
6.4.1. Using myisamchk for Crash Recovery
6.4.2. How to Check MyISAM Tables for Errors
6.4.3. How to Repair Tables
6.4.4. Table Optimization
6.4.5. Getting Information About a Table
6.4.6. Setting Up a Table Maintenance Schedule
7. Optimization
7.1. Optimization Overview
7.1.1. MySQL Design Limitations and Tradeoffs
7.1.2. Designing Applications for Portability
7.1.3. What We Have Used MySQL For
7.1.4. The MySQL Benchmark Suite
7.1.5. Using Your Own Benchmarks
7.2. Optimizing SELECT and Other Statements
7.2.1. Optimizing Queries with EXPLAIN
7.2.2. Estimating Query Performance
7.2.3. Speed of SELECT Queries
7.2.4. WHERE Clause Optimization
7.2.5. Range Optimization
7.2.6. Index Merge Optimization
7.2.7. Condition Pushdown Optimization
7.2.8. IS NULL Optimization
7.2.9. LEFT JOIN and RIGHT JOIN Optimization
7.2.10. Nested Join Optimization
7.2.11. Outer Join Simplification
7.2.12. ORDER BY Optimization
7.2.13. GROUP BY Optimization
7.2.14. DISTINCT Optimization
7.2.15. Optimizing IN/=ANY Subqueries
7.2.16. LIMIT Optimization
7.2.17. How to Avoid Table Scans
7.2.18. INFORMATION_SCHEMA Optimization
7.2.19. Speed of INSERT Statements
7.2.20. Speed of UPDATE Statements
7.2.21. Speed of DELETE Statements
7.2.22. Other Optimization Tips
7.3. Locking Issues
7.3.1. Internal Locking Methods
7.3.2. Table Locking Issues
7.3.3. Concurrent Inserts
7.3.4. External Locking
7.4. Optimizing Database Structure
7.4.1. Design Choices
7.4.2. Make Your Data as Small as Possible
7.4.3. Column Indexes
7.4.4. Multiple-Column Indexes
7.4.5. How MySQL Uses Indexes
7.4.6. The MyISAM Key Cache
7.4.7. MyISAM Index Statistics Collection
7.4.8. How MySQL Opens and Closes Tables
7.4.9. Drawbacks to Creating Many Tables in the Same Database
7.5. Optimizing the MySQL Server
7.5.1. System Factors and Startup Parameter Tuning
7.5.2. Tuning Server Parameters
7.5.3. Controlling Query Optimizer Performance
7.5.4. The MySQL Query Cache
7.5.5. Examining Thread Information
7.5.6. How Compiling and Linking Affects the Speed of MySQL
7.5.7. How MySQL Uses Threads for Client Connections
7.5.8. How MySQL Uses Memory
7.5.9. How MySQL Uses Internal Temporary Tables
7.5.10. How MySQL Uses DNS
7.6. Disk Issues
7.6.1. Using Symbolic Links
8. Language Structure
8.1. Literal Values
8.1.1. Strings
8.1.2. Numbers
8.1.3. Hexadecimal Values
8.1.4. Boolean Values
8.1.5. Bit-Field Values
8.1.6. NULL Values
8.2. Schema Object Names
8.2.1. Identifier Qualifiers
8.2.2. Identifier Case Sensitivity
8.2.3. Mapping of Identifiers to Filenames
8.2.4. Function Name Parsing and Resolution
8.3. Reserved Words
8.4. User-Defined Variables
8.5. Comment Syntax
9. Internationalization and Localization
9.1. Character Set Support
9.1.1. Character Sets and Collations in General
9.1.2. Character Sets and Collations in MySQL
9.1.3. Specifying Character Sets and Collations
9.1.4. Connection Character Sets and Collations
9.1.5. Collation Issues
9.1.6. String Repertoire
9.1.7. Operations Affected by Character Set Support
9.1.8. Unicode Support
9.1.9. UTF-8 for Metadata
9.1.10. Column Character Set Conversion
9.1.11. Character Sets and Collations That MySQL Supports
9.2. The Character Set Used for Data and Sorting
9.2.1. Using the German Character Set
9.3. Setting the Error Message Language
9.4. Adding a New Character Set
9.4.1. The Character Definition Arrays
9.4.2. String Collating Support
9.4.3. Multi-Byte Character Support
9.5. How to Add a New Collation to a Character Set
9.5.1. Collation Implementation Types
9.5.2. Choosing a Collation ID
9.5.3. Adding a Simple Collation to an 8-Bit Character Set
9.5.4. Adding a UCA Collation to a Unicode Character Set
9.6. Problems With Character Sets
9.7. MySQL Server Time Zone Support
9.8. MySQL Server Locale Support
10. Data Types
10.1. Data Type Overview
10.1.1. Overview of Numeric Types
10.1.2. Overview of Date and Time Types
10.1.3. Overview of String Types
10.1.4. Data Type Default Values
10.2. Numeric Types
10.3. Date and Time Types
10.3.1. The DATETIME, DATE, and TIMESTAMP Types
10.3.2. The TIME Type
10.3.3. The YEAR Type
10.3.4. Year 2000 Issues and Date Types
10.4. String Types
10.4.1. The CHAR and VARCHAR Types
10.4.2. The BINARY and VARBINARY Types
10.4.3. The BLOB and TEXT Types
10.4.4. The ENUM Type
10.4.5. The SET Type
10.5. Data Type Storage Requirements
10.6. Choosing the Right Type for a Column
10.7. Using Data Types from Other Database Engines
11. Functions and Operators
11.1. Operator and Function Reference
11.2. Operators
11.2.1. Operator Precedence
11.2.2. Type Conversion in Expression Evaluation
11.2.3. Comparison Functions and Operators
11.2.4. Logical Operators
11.3. Control Flow Functions
11.4. String Functions
11.4.1. String Comparison Functions
11.4.2. Regular Expressions
11.5. Numeric Functions
11.5.1. Arithmetic Operators
11.5.2. Mathematical Functions
11.6. Date and Time Functions
11.7. What Calendar Is Used By MySQL?
11.8. Full-Text Search Functions
11.8.1. Natural Language Full-Text Searches
11.8.2. Boolean Full-Text Searches
11.8.3. Full-Text Searches with Query Expansion
11.8.4. Full-Text Stopwords
11.8.5. Full-Text Restrictions
11.8.6. Fine-Tuning MySQL Full-Text Search
11.9. Cast Functions and Operators
11.10. XML Functions
11.11. Other Functions
11.11.1. Bit Functions
11.11.2. Encryption and Compression Functions
11.11.3. Information Functions
11.11.4. Miscellaneous Functions
11.12. Functions and Modifiers for Use with GROUP BY Clauses
11.12.1. GROUP BY (Aggregate) Functions
11.12.2. GROUP BY Modifiers
11.12.3. GROUP BY and HAVING with Hidden Fields
12. SQL Statement Syntax
12.1. Data Definition Statements
12.1.1. ALTER DATABASE Syntax
12.1.2. ALTER LOGFILE GROUP Syntax
12.1.3. ALTER SERVER Syntax
12.1.4. ALTER TABLE Syntax
12.1.5. ALTER TABLESPACE Syntax
12.1.6. CREATE DATABASE Syntax
12.1.7. CREATE INDEX Syntax
12.1.8. CREATE LOGFILE GROUP Syntax
12.1.9. CREATE SERVER Syntax
12.1.10. CREATE TABLE Syntax
12.1.11. CREATE TABLESPACE Syntax
12.1.12. DROP DATABASE Syntax
12.1.13. DROP INDEX Syntax
12.1.14. DROP LOGFILE GROUP Syntax
12.1.15. DROP SERVER Syntax
12.1.16. DROP TABLE Syntax
12.1.17. DROP TABLESPACE Syntax
12.1.18. RENAME DATABASE Syntax
12.1.19. RENAME TABLE Syntax
12.2. Data Manipulation Statements
12.2.1. DELETE Syntax
12.2.2. DO Syntax
12.2.3. HANDLER Syntax
12.2.4. INSERT Syntax
12.2.5. LOAD DATA INFILE Syntax
12.2.6. REPLACE Syntax
12.2.7. SELECT Syntax
12.2.8. Subquery Syntax
12.2.9. TRUNCATE Syntax
12.2.10. UPDATE Syntax
12.3. MySQL Utility Statements
12.3.1. DESCRIBE Syntax
12.3.2. EXPLAIN Syntax
12.3.3. HELP Syntax
12.3.4. USE Syntax
12.4. MySQL Transactional and Locking Statements
12.4.1. START TRANSACTION, COMMIT, and ROLLBACK Syntax
12.4.2. Statements That Cannot Be Rolled Back
12.4.3. Statements That Cause an Implicit Commit
12.4.4. SAVEPOINT and ROLLBACK TO SAVEPOINT Syntax
12.4.5. LOCK TABLES and UNLOCK TABLES Syntax
12.4.6. SET TRANSACTION Syntax
12.4.7. XA Transactions
12.5. Database Administration Statements
12.5.1. Account Management Statements
12.5.2. Table Maintenance Statements
12.5.3. Plugin and User-Defined Function Statements
12.5.4. SET Syntax
12.5.5. SHOW Syntax
12.5.6. Other Administrative Statements
12.6. Replication Statements
12.6.1. SQL Statements for Controlling Master Servers
12.6.2. SQL Statements for Controlling Slave Servers
12.7. SQL Syntax for Prepared Statements
12.7.1. Automatic Prepared Statement Repreparation
13. Storage Engines
13.1. Overview of MySQL Storage Engine Architecture
13.1.1. The Common Database Server Layer
13.1.2. Pluggable Storage Engine Architecture
13.2. Supported Storage Engines
13.2.1. Choosing a Storage Engine
13.2.2. Comparing Transaction and Non-Transaction Engines
13.2.3. Other Storage Engines
13.3. Setting the Storage Engine
13.4. The MyISAM Storage Engine
13.4.1. MyISAM Startup Options
13.4.2. Space Needed for Keys
13.4.3. MyISAM Table Storage Formats
13.4.4. MyISAM Table Problems
13.5. The InnoDB Storage Engine
13.5.1. InnoDB Overview
13.5.2. InnoDB Contact Information
13.5.3. InnoDB Configuration
13.5.4. InnoDB Startup Options and System Variables
13.5.5. Creating the InnoDB Tablespace
13.5.6. Creating and Using InnoDB Tables
13.5.7. Adding and Removing InnoDB Data and Log Files
13.5.8. Backing Up and Recovering an InnoDB Database
13.5.9. Moving an InnoDB Database to Another Machine
13.5.10. InnoDB Transaction Model and Locking
13.5.11. InnoDB Performance Tuning Tips
13.5.12. Implementation of Multi-Versioning
13.5.13. InnoDB Table and Index Structures
13.5.14. InnoDB File Space Management and Disk I/O
13.5.15. InnoDB Error Handling
13.5.16. Restrictions on InnoDB Tables
13.5.17. InnoDB Troubleshooting
13.6. The MERGE Storage Engine
13.6.1. MERGE Table Problems
13.7. The MEMORY (HEAP) Storage Engine
13.8. The EXAMPLE Storage Engine
13.9. The FEDERATED Storage Engine
13.9.1. FEDERATED Storage Engine Overview
13.9.2. How to Create FEDERATED Tables
13.9.3. FEDERATED Storage Engine Notes and Tips
13.9.4. FEDERATED Storage Engine Resources
13.10. The ARCHIVE Storage Engine
13.11. The CSV Storage Engine
13.11.1. Repairing and Checking CSV Tables
13.11.2. CSV Limitations
13.12. The BLACKHOLE Storage Engine
14. High Availability and Scalability
14.1. Using MySQL with DRBD for High Availability
14.1.1. Configuring the DRBD Environment
14.1.2. Configuring MySQL for DRBD
14.1.3. Optimizing Performance and Reliability
14.2. Using Linux HA Heartbeat
14.2.1. Heartbeat Configuration
14.2.2. Using Heartbeat with MySQL and DRBD
14.2.3. Using Heartbeat with DRBD and dopd
14.2.4. Dealing with System Level Errors
15. MySQL and Virtualization
15.1. Common Issues with Virtualization
15.1.1. Virtualization Performance Issues
15.1.2. Virtualization Storage Issues
15.1.3. Virtualization Networking Issues
15.2. Using MySQL within an Amazon EC2 Instance
15.2.1. Setting Up MySQL on an EC2 AMI
15.2.2. EC2 Instance Limitations
15.2.3. Deploying a MySQL Database Using EC2
15.3. Virtualization Resources
16. Using MySQL with memcached
16.1. Installing memcached
16.2. Using memcached
16.2.1. memcached Deployment
16.2.2. Memory allocation within memcached
16.2.3. Using namespaces
16.2.4. Data Expiry
16.2.5. memcached Hash Types
16.3. memcached Interfaces
16.3.1. Using libmemcached
16.3.2. Using MySQL and memcached with Perl
16.3.3. Using MySQL and memcached with Python
16.3.4. Using MySQL and memcached with PHP
16.3.5. Using MySQL and memcached with Ruby
16.3.6. Using MySQL and memcached with Java
16.3.7. Using the MySQL memcached UDFs
16.4. Getting memcached Statistics
16.4.1. memcached General Statistics
16.4.2. memcached Slabs Statistics
16.4.3. memcached Item Statistics
16.4.4. memcached Size Statistics
16.5. memcached FAQ
17. MySQL Proxy
17.1. MySQL Proxy Supported Platforms
17.2. Installing MySQL Proxy
17.2.1. Installing MySQL Proxy from a binary distribution
17.2.2. Installing MySQL Proxy from a source distribution
17.2.3. Installing MySQL Proxy from the Subversion repository
17.3. MySQL Proxy Command-Line Options
17.4. MySQL Proxy Scripting
17.4.1. Proxy Scripting Sequence During Query Injection
17.4.2. Internal Structures
17.4.3. Capturing a connection with connect_server()
17.4.4. Examining the handshake with read_handshake()
17.4.5. Examining the authentication credentials with read_auth()
17.4.6. Accessing authentication information with read_auth_result()
17.4.7. Manipulating Queries with read_query()
17.4.8. Manipulating Results with read_query_result()
17.5. Using MySQL Proxy
17.5.1. Using the Administration Interface
17.6. MySQL Proxy FAQ
18. MySQL Load Balancer
18.1. Installing MySQL Load Balancer
18.2. Getting Started
18.3. Using MySQL Load Balancer
18.4. Known Issues
18.5. MySQL Load Balancer FAQ
19. Replication
19.1. Replication Configuration
19.1.1. How to Set Up Replication
19.1.2. Replication Formats
19.1.3. Replication Options and Variables
19.1.4. Common Replication Administration Tasks
19.2. Replication Solutions
19.2.1. Using Replication for Backups
19.2.2. Using Replication with Different Master and Slave Storage Engines
19.2.3. Using Replication for Scale-Out
19.2.4. Replicating Different Databases to Different Slaves
19.2.5. Improving Replication Performance
19.2.6. Switching Masters During Failover
19.2.7. Setting Up Replication Using SSL
19.3. Replication Notes and Tips
19.3.1. Replication Features and Issues
19.3.2. Replication Compatibility Between MySQL Versions
19.3.3. Upgrading a Replication Setup
19.3.4. Replication FAQ
19.3.5. Troubleshooting Replication
19.3.6. How to Report Replication Bugs or Problems
19.4. Replication Implementation
19.4.1. Replication Implementation Details
19.4.2. Replication Relay and Status Files
19.4.3. How Servers Evaluate Replication Rules
20. MySQL Cluster
20.1. MySQL Cluster Overview
20.1.1. MySQL Cluster Core Concepts
20.1.2. MySQL Cluster Nodes, Node Groups, Replicas, and Partitions
20.2. Simple Multi-Computer How-To
20.2.1. Hardware, Software, and Networking
20.2.2. Multi-Computer Installation
20.2.3. Multi-Computer Configuration
20.2.4. Initial Startup
20.2.5. Loading Sample Data and Performing Queries
20.2.6. Safe Shutdown and Restart
20.3. MySQL Cluster Configuration
20.3.1. Building MySQL Cluster from Source Code
20.3.2. Installing the Cluster Software
20.3.3. Quick Test Setup of MySQL Cluster
20.3.4. Configuration File
20.3.5. Overview of Cluster Configuration Parameters
20.3.6. Configuring Parameters for Local Checkpoints
20.4. MySQL Cluster Options and Variables
20.4.1. MySQL Cluster Server Option and Variable Reference
20.4.2. MySQL Cluster-Related Command Options for mysqld
20.4.3. MySQL Cluster System Variables
20.4.4. MySQL Cluster Status Variables
20.5. Upgrading and Downgrading MySQL Cluster
20.5.1. Performing a Rolling Restart of the Cluster
20.5.2. MySQL Cluster 5.1 and MySQL Cluster NDB 6.x Upgrade and Downgrade Compatibility
20.6. Process Management in MySQL Cluster
20.6.1. MySQL Server Process Usage for MySQL Cluster
20.6.2. ndbd — The Storage Engine Node Process
20.6.3. ndb_mgmd — The Management Server Process
20.6.4. ndb_mgm — The Management Client Process
20.6.5. Command Options for MySQL Cluster Processes
20.7. Management of MySQL Cluster
20.7.1. Summary of MySQL Cluster Start Phases
20.7.2. Commands in the MySQL Cluster Management Client
20.7.3. Event Reports Generated in MySQL Cluster
20.7.4. NDB Log Messages
20.7.5. Single User Mode
20.7.6. Quick Reference: MySQL Cluster SQL Statements
20.8. MySQL Cluster Security Issues
20.8.1. MySQL Cluster Security and Networking Issues
20.8.2. MySQL Cluster and MySQL Privileges
20.8.3. MySQL Cluster and MySQL Security Procedures
20.9. On-line Backup of MySQL Cluster
20.9.1. Cluster Backup Concepts
20.9.2. Using The Management Client to Create a Backup
20.9.3. ndb_restore — Restore a Cluster Backup
20.9.4. Configuration for Cluster Backup
20.9.5. Backup Troubleshooting
20.10. Cluster Utility Programs
20.10.1. ndb_config — Extract NDB Configuration Information
20.10.2. ndb_cpcd — Automate Testing for NDB Development
20.10.3. ndb_delete_all — Delete All Rows from NDB Table
20.10.4. ndb_desc — Describe NDB Tables
20.10.5. ndb_drop_index — Drop Index from NDB Table
20.10.6. ndb_drop_table — Drop NDB Table
20.10.7. ndb_error_reporter — NDB Error-Reporting Utility
20.10.8. ndb_print_backup_file — Print NDB Backup File Contents
20.10.9. ndb_print_schema_file — Print NDB Schema File Contents
20.10.10. ndb_print_sys_file — Print NDB System File Contents
20.10.11. ndbd_redo_log_reader — Check and Print Content of Cluster Redo Log
20.10.12. ndb_select_all — Print Rows from NDB Table
20.10.13. ndb_select_count — Print Row Counts for NDB Tables
20.10.14. ndb_show_tables — Display List of NDB Tables
20.10.15. ndb_size.pl — NDBCLUSTER Size Requirement Estimator
20.10.16. ndb_waiter — Wait for Cluster to Reach a Given Status
20.11. MySQL Cluster Replication
20.11.1. Abbreviations and Symbols
20.11.2. Assumptions and General Requirements
20.11.3. Known Issues in MySQL Cluster Replication
20.11.4. Cluster Replication Schema and Tables
20.11.5. Preparing the Cluster for Replication
20.11.6. Starting Replication (Single Replication Channel)
20.11.7. Using Two Replication Channels
20.11.8. Implementing Failover with MySQL Cluster
20.11.9. MySQL Cluster Backups With Replication
20.11.10. MySQL Cluster Replication Conflict Resolution
20.12. MySQL Cluster Disk Data Tables
20.12.1. Disk Data Objects
20.12.2. Disk Data Storage Requirements
20.12.3. Disk Data Configuration Parameters
20.13. Using High-Speed Interconnects with MySQL Cluster
20.13.1. Configuring MySQL Cluster to use SCI Sockets
20.13.2. MySQL Cluster Interconnects and Performance
20.14. Known Limitations of MySQL Cluster
20.14.1. Non-Compliance In SQL Syntax
20.14.2. Limits and Differences from Standard MySQL Limits
20.14.3. Limits Relating to Transaction Handling
20.14.4. Error Handling
20.14.5. Limits Associated with Database Objects
20.14.6. Unsupported Or Missing Features
20.14.7. Limitations Relating to Performance
20.14.8. Issues Exclusive to MySQL Cluster
20.14.9. Limitations Relating to Disk Data Storage
20.14.10. Limitations Relating to Multiple Cluster Nodes
20.14.11. Previous MySQL Cluster Issues Resolved in MySQL 5.1
20.15. MySQL Cluster Development Roadmap
20.15.1. Features Added in MySQL 5.1 Cluster
20.15.2. Features Added in MySQL Cluster NDB 6.1
20.15.3. Features Added in MySQL Cluster NDB 6.2
20.15.4. Features Added in MySQL Cluster NDB 6.3
20.16. MySQL Cluster Glossary
20.17. Changes in MySQL Cluster 6.x
20.17.1. Changes in MySQL Cluster NDB 6.3
20.17.2. Changes in MySQL Cluster NDB 6.2
20.17.3. Changes in MySQL Cluster NDB 6.1
21. Partitioning
21.1. Overview of Partitioning in MySQL
21.2. Partition Types
21.2.1. RANGE Partitioning
21.2.2. LIST Partitioning
21.2.3. HASH Partitioning
21.2.4. KEY Partitioning
21.2.5. Subpartitioning
21.2.6. How MySQL Partitioning Handles NULL Values
21.3. Partition Management
21.3.1. Management of RANGE and LIST Partitions
21.3.2. Management of HASH and KEY Partitions
21.3.3. Maintenance of Partitions
21.3.4. Obtaining Information About Partitions
21.4. Partition Pruning
21.5. Restrictions and Limitations on Partitioning
21.5.1. Partitioning Keys, Primary Keys, and Unique Keys
21.5.2. Partitioning Limitations Relating to Storage Engines
21.5.3. Partitioning Limitations Relating to Functions
22. Spatial Extensions
22.1. Introduction to MySQL Spatial Support
22.2. The OpenGIS Geometry Model
22.2.1. The Geometry Class Hierarchy
22.2.2. Class Geometry
22.2.3. Class Point
22.2.4. Class Curve
22.2.5. Class LineString
22.2.6. Class Surface
22.2.7. Class Polygon
22.2.8. Class GeometryCollection
22.2.9. Class MultiPoint
22.2.10. Class MultiCurve
22.2.11. Class MultiLineString
22.2.12. Class MultiSurface
22.2.13. Class MultiPolygon
22.3. Supported Spatial Data Formats
22.3.1. Well-Known Text (WKT) Format
22.3.2. Well-Known Binary (WKB) Format
22.4. Creating a Spatially Enabled MySQL Database
22.4.1. MySQL Spatial Data Types
22.4.2. Creating Spatial Values
22.4.3. Creating Spatial Columns
22.4.4. Populating Spatial Columns
22.4.5. Fetching Spatial Data
22.5. Analyzing Spatial Information
22.5.1. Geometry Format Conversion Functions
22.5.2. Geometry Functions
22.5.3. Functions That Create New Geometries from Existing Ones
22.5.4. Functions for Testing Spatial Relations Between Geometric Objects
22.5.5. Relations on Geometry Minimal Bounding Rectangles (MBRs)
22.5.6. Functions That Test Spatial Relationships Between Geometries
22.6. Optimizing Spatial Analysis
22.6.1. Creating Spatial Indexes
22.6.2. Using a Spatial Index
22.7. MySQL Conformance and Compatibility
23. Stored Procedures and Functions
23.1. Stored Routines and the Grant Tables
23.2. Stored Routine Syntax
23.2.1. CREATE FUNCTION Syntax
23.2.2. CREATE PROCEDURE and CREATE FUNCTION Syntax
23.2.3. ALTER PROCEDURE and ALTER FUNCTION Syntax
23.2.4. DROP FUNCTION Syntax
23.2.5. DROP PROCEDURE and DROP FUNCTION Syntax
23.2.6. CALL Statement Syntax
23.2.7. BEGIN ... END Compound Statement Syntax
23.2.8. DECLARE Statement Syntax
23.2.9. Variables in Stored Routines
23.2.10. Conditions and Handlers
23.2.11. Cursors
23.2.12. Flow Control Constructs
23.2.13. RETURN Statement Syntax
23.3. Stored Procedures, Functions, Triggers, and LAST_INSERT_ID()
23.4. Binary Logging of Stored Routines and Triggers
24. Triggers
24.1. CREATE TRIGGER Syntax
24.2. DROP TRIGGER Syntax
24.3. Using Triggers
25. Event Scheduler
25.1. Event Scheduler Overview
25.2. Event Scheduler Syntax
25.2.1. ALTER EVENT Syntax
25.2.2. CREATE EVENT Syntax
25.2.3. DROP EVENT Syntax
25.3. Event Metadata
25.4. Event Scheduler Status
25.5. The Event Scheduler and MySQL Privileges
25.6. Event Scheduler Limitations and Restrictions
26. Views
26.1. ALTER VIEW Syntax
26.2. CREATE VIEW Syntax
26.3. DROP VIEW Syntax
27. INFORMATION_SCHEMA Tables
27.1. The INFORMATION_SCHEMA SCHEMATA Table
27.2. The INFORMATION_SCHEMA TABLES Table
27.3. The INFORMATION_SCHEMA COLUMNS Table
27.4. The INFORMATION_SCHEMA STATISTICS Table
27.5. The INFORMATION_SCHEMA USER_PRIVILEGES Table
27.6. The INFORMATION_SCHEMA SCHEMA_PRIVILEGES Table
27.7. The INFORMATION_SCHEMA TABLE_PRIVILEGES Table
27.8. The INFORMATION_SCHEMA COLUMN_PRIVILEGES Table
27.9. The INFORMATION_SCHEMA CHARACTER_SETS Table
27.10. The INFORMATION_SCHEMA COLLATIONS Table
27.11. The INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY Table
27.12. The INFORMATION_SCHEMA TABLE_CONSTRAINTS Table
27.13. The INFORMATION_SCHEMA KEY_COLUMN_USAGE Table
27.14. The INFORMATION_SCHEMA ROUTINES Table
27.15. The INFORMATION_SCHEMA VIEWS Table
27.16. The INFORMATION_SCHEMA TRIGGERS Table
27.17. The INFORMATION_SCHEMA PLUGINS Table
27.18. The INFORMATION_SCHEMA ENGINES Table
27.19. The INFORMATION_SCHEMA PARTITIONS Table
27.20. The INFORMATION_SCHEMA EVENTS Table
27.21. The INFORMATION_SCHEMA FILES Table
27.22. The INFORMATION_SCHEMA PROCESSLIST Table
27.23. The INFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS Table
27.24. The INFORMATION_SCHEMA GLOBAL_STATUS and SESSION_STATUS Tables
27.25. The INFORMATION_SCHEMA GLOBAL_VARIABLES and SESSION_VARIABLES Tables
27.26. Other INFORMATION_SCHEMA Tables
27.27. Extensions to SHOW Statements
28. Precision Math
28.1. Types of Numeric Values
28.2. DECIMAL Data Type Changes
28.3. Expression Handling
28.4. Rounding Behavior
28.5. Precision Math Examples
29. APIs and Libraries
29.1. libmysqld, the Embedded MySQL Server Library
29.1.1. Compiling Programs with libmysqld
29.1.2. Restrictions When Using the Embedded MySQL Server
29.1.3. Options with the Embedded Server
29.1.4. Embedded Server Examples
29.1.5. Licensing the Embedded Server
29.2. MySQL C API
29.2.1. C API Data Types
29.2.2. C API Function Overview
29.2.3. C API Function Descriptions
29.2.4. C API Prepared Statements
29.2.5. C API Prepared Statement Data types
29.2.6. C API Prepared Statement Function Overview
29.2.7. C API Prepared Statement Function Descriptions
29.2.8. C API Prepared Statement Problems
29.2.9. C API Handling of Multiple Statement Execution
29.2.10. C API Handling of Date and Time Values
29.2.11. C API Threaded Function Descriptions
29.2.12. C API Embedded Server Function Descriptions
29.2.13. Controlling Automatic Reconnect Behavior
29.2.14. Common Questions and Problems When Using the C API
29.2.15. Building Client Programs
29.2.16. How to Make a Threaded Client
29.3. MySQL PHP API
29.3.1. MySQL
29.3.2. MySQL Improved Extension (Mysqli)
29.3.3. MySQL Functions (PDO_MYSQL)
29.3.4. Common Problems with MySQL and PHP
29.3.5. Enabling Both mysql and mysqli in PHP
29.4. MySQL Perl API
29.5. MySQL C++ API
29.6. MySQL Python API
29.7. MySQL Tcl API
29.8. MySQL Eiffel Wrapper
30. Connectors
30.1. MySQL Connector/ODBC
30.1.1. Connector/ODBC Versions
30.1.2. Connector/ODBC Introduction
30.1.3. Connector/ODBC Installation
30.1.4. Connector/ODBC Configuration
30.1.5. Connector/ODBC Examples
30.1.6. Connector/ODBC Reference
30.1.7. Connector/ODBC Notes and Tips
30.1.8. Connector/ODBC Support
30.2. MySQL Connector/NET
30.2.1. Connector/NET Versions
30.2.2. Connector/NET Installation
30.2.3. Connector/NET Examples and Usage Guide
30.2.4. Connector/NET Reference
30.2.5. Connector/NET Notes and Tips
30.2.6. Connector/NET Support
30.3. MySQL Visual Studio Plugin
30.3.1. Installing the MySQL Visual Studio Plugin
30.3.2. Creating a connection to the MySQL server
30.3.3. Using the MySQL Visual Studio Plugin
30.3.4. Visual Studio Plugin Support
30.4. MySQL Connector/J
30.4.1. Connector/J Versions
30.4.2. Connector/J Installation
30.4.3. Connector/J Examples
30.4.4. Connector/J (JDBC) Reference
30.4.5. Connector/J Notes and Tips
30.4.6. Connector/J Support
30.5. MySQL Connector/MXJ
30.5.1. Connector/MXJ Overview
30.5.2. Connector/MXJ Versions
30.5.3. Connector/MXJ Installation
30.5.4. Connector/MXJ Configuration
30.5.5. Connector/MXJ Reference
30.5.6. Connector/MXJ Notes and Tips
30.5.7. Connector/MXJ Support
30.6. Connector/PHP
31. Extending MySQL
31.1. MySQL Internals
31.1.1. MySQL Threads
31.1.2. MySQL Test Suite
31.2. The MySQL Plugin Interface
31.2.1. Characteristics of the Plugin Interface
31.2.2. Full-Text Parser Plugins
31.2.3. Writing Plugins
31.3. Adding New Functions to MySQL
31.3.1. Features of the User-Defined Function Interface
31.3.2. Adding a New User-Defined Function
31.3.3. Adding a New Native Function
31.4. Adding New Procedures to MySQL
31.4.1. PROCEDURE ANALYSE
31.4.2. Writing a Procedure
31.5. Debugging and Porting MySQL
31.5.1. Debugging a MySQL Server
31.5.2. Debugging a MySQL Client
31.5.3. The DBUG Package
31.5.4. Comments about RTS Threads
31.5.5. Differences Between Thread Packages
A. MySQL 5.1 Frequently Asked Questions
A.1. MySQL 5.1 FAQ — General
A.2. MySQL 5.1 FAQ — Storage Engines
A.3. MySQL 5.1 FAQ — Server SQL Mode
A.4. MySQL 5.1 FAQ — Stored Procedures
A.5. MySQL 5.1 FAQ — Triggers
A.6. MySQL 5.1 FAQ — Views
A.7. MySQL 5.0 FAQ — INFORMATION_SCHEMA
A.8. MySQL 5.1 FAQ — Migration
A.9. MySQL 5.1 FAQ — Security
A.10. MySQL 5.1 FAQ — MySQL Cluster
A.11. MySQL 5.1 FAQ — MySQL Chinese, Japanese, and Korean Character Sets
A.12. MySQL 5.1 FAQ — Connectors & APIs
A.13. MySQL 5.1 FAQ — Replication
A.14. MySQL 5.1 FAQ — MySQL, DRBD, and Heartbeat
A.14.1. Distributed Replicated Block Device (DRBD)
A.14.2. Linux Heartbeat
A.14.3. DRBD Architecture
A.14.4. DRBD and MySQL Replication
A.14.5. DRBD and File Systems
A.14.6. DRBD and LVM
A.14.7. DRBD and Virtualization
A.14.8. DRBD and Security
A.14.9. DRBD and System Requirements
A.14.10. DBRD and Support and Consulting
B. Errors, Error Codes, and Common Problems
B.1. Problems and Common Errors
B.1.1. How to Determine What Is Causing a Problem
B.1.2. Common Errors When Using MySQL Programs
B.1.3. Installation-Related Issues
B.1.4. Administration-Related Issues
B.1.5. Query-Related Issues
B.1.6. Optimizer-Related Issues
B.1.7. Table Definition-Related Issues
B.1.8. Known Issues in MySQL
B.2. Server Error Codes and Messages
B.3. Client Error Codes and Messages
C. MySQL Change History
C.1. Changes in release 5.1.x (Development)
C.1.1. Changes in MySQL 5.1.28 (Not yet released)
C.1.2. Changes in MySQL 5.1.27 (Not released)
C.1.3. Changes in MySQL 5.1.26 (30 June 2008)
C.1.4. Changes in MySQL 5.1.25 (28 May 2008)
C.1.5. Changes in MySQL 5.1.24-maria (Not yet released)
C.1.6. Changes in MySQL 5.1.24 (08 April 2008)
C.1.7. Changes in MySQL 5.1.23 (29 January 2008)
C.1.8. Changes in MySQL 5.1.22 (24 September 2007: Release Candidate)
C.1.9. Changes in MySQL 5.1.21 (16 August 2007)
C.1.10. Changes in MySQL 5.1.20 (25 June 2007)
C.1.11. Changes in MySQL 5.1.19 (25 May 2007)
C.1.12. Changes in MySQL 5.1.18 (08 May 2007)
C.1.13. Changes in MySQL 5.1.17 (04 April 2007)
C.1.14. Changes in MySQL 5.1.16 (26 February 2007)
C.1.15. Changes in MySQL 5.1.15 (25 January 2007)
C.1.16. Changes in MySQL 5.1.14 (05 December 2006)
C.1.17. Changes in MySQL 5.1.13 (Not released)
C.1.18. Changes in MySQL 5.1.12 (24 October 2006)
C.1.19. Changes in MySQL 5.1.11 (26 May 2006)
C.1.20. Changes in MySQL 5.1.10 (Not released)
C.1.21. Changes in MySQL 5.1.9 (12 April 2006)
C.1.22. Changes in MySQL 5.1.8 (Not released)
C.1.23. Changes in MySQL 5.1.7 (27 February 2006)
C.1.24. Changes in MySQL 5.1.6 (01 February 2006)
C.1.25. Changes in MySQL 5.1.5 (10 January 2006)
C.1.26. Changes in MySQL 5.1.4 (21 December 2005)
C.1.27. Changes in MySQL 5.1.3 (29 November 2005)
C.1.28. Changes in MySQL 5.1.2 (Not released)
C.1.29. Changes in MySQL 5.1.1 (Not released)
C.2. MySQL Connector/ODBC (MyODBC) Change History
C.2.1. Changes in MySQL Connector/ODBC 5.1.5 (18 August 2008)
C.2.2. Changes in MySQL Connector/ODBC 5.1.4 (15 April 2008)
C.2.3. Changes in MySQL Connector/ODBC 5.1.3 (26 March 2008)
C.2.4. Changes in MySQL Connector/ODBC 5.1.2 (13 February 2008)
C.2.5. Changes in MySQL Connector/ODBC 5.1.1 (13 December 2007)
C.2.6. Changes in MySQL Connector/ODBC 5.1.0 (10 September 2007)
C.2.7. Changes in MySQL Connector/ODBC 5.0.12 (Never released)
C.2.8. Changes in MySQL Connector/ODBC 5.0.11 (31 January 2007)
C.2.9. Changes in MySQL Connector/ODBC 5.0.10 (14 December 2006)
C.2.10. Changes in MySQL Connector/ODBC 5.0.9 (22 November 2006)
C.2.11. Changes in MySQL Connector/ODBC 5.0.8 (17 November 2006)
C.2.12. Changes in MySQL Connector/ODBC 5.0.7 (08 November 2006)
C.2.13. Changes in MySQL Connector/ODBC 5.0.6 (03 November 2006)
C.2.14. Changes in MySQL Connector/ODBC 5.0.5 (17 October 2006)
C.2.15. Changes in Connector/ODBC 5.0.3 (Connector/ODBC 5.0 Alpha 3) (20 June 2006)
C.2.16. Changes in Connector/ODBC 5.0.2 (Never released)
C.2.17. Changes in Connector/ODBC 5.0.1 (Connector/ODBC 5.0 Alpha 2) (05 June 2006)
C.2.18. Changes in MySQL Connector/ODBC 3.51.26 (07 July 2008)
C.2.19. Changes in MySQL Connector/ODBC 3.51.25 (11 April 2008)
C.2.20. Changes in MySQL Connector/ODBC 3.51.24 (14 March 2008)
C.2.21. Changes in MySQL Connector/ODBC 3.51.23 (09 January 2008)
C.2.22. Changes in MySQL Connector/ODBC 3.51.22 (13 November 2007)
C.2.23. Changes in MySQL Connector/ODBC 3.51.21 (08 October 2007)
C.2.24. Changes in MySQL Connector/ODBC 3.51.20 (10 September 2007)
C.2.25. Changes in MySQL Connector/ODBC 3.51.19 (10 August 2007)
C.2.26. Changes in MySQL Connector/ODBC 3.51.18 (08 August 2007)
C.2.27. Changes in MySQL Connector/ODBC 3.51.17 (14 July 2007)
C.2.28. Changes in MySQL Connector/ODBC 3.51.16 (14 June 2007)
C.2.29. Changes in MySQL Connector/ODBC 3.51.15 (07 May 2007)
C.2.30. Changes in MySQL Connector/ODBC 3.51.14 (08 March 2007)
C.2.31. Changes in MySQL Connector/ODBC 3.51.13 (Never released)
C.2.32. Changes in MySQL Connector/ODBC 3.51.12 (11 Febrauary 2005)
C.2.33. Changes in MySQL Connector/ODBC 3.51.11 (28 January 2005)
C.3. MySQL Connector/NET Change History
C.3.1. Changes in MySQL Connector/NET 5.3.0 (Not yet released)
C.3.2. Changes in MySQL Connector/NET 5.2.3 (19 August 2008)
C.3.3. Changes in MySQL Connector/NET 5.2.2 (12 May 2008)
C.3.4. Changes in MySQL Connector/NET 5.2.1 (27 February 2008)
C.3.5. Changes in MySQL Connector/NET 5.2.0 (11 February 2008)
C.3.6. Changes in MySQL Connector/NET 5.1.7 (Not yet released)
C.3.7. Changes in MySQL Connector/NET 5.1.6 (12 May 2008)
C.3.8. Changes in MySQL Connector/NET 5.1.5 (Not yet released)
C.3.9. Changes in MySQL Connector/NET 5.1.4 (20 November 2007)
C.3.10. Changes in MySQL Connector/NET 5.1.3 (21 September 2007)
C.3.11. Changes in MySQL Connector/NET 5.1.2 (18 June 2007)
C.3.12. Changes in MySQL Connector/NET 5.1.1 (23 May 2007)
C.3.13. Changes in MySQL Connector/NET 5.1.0 (01 May 2007)
C.3.14. Changes in MySQL Connector/NET 5.0.10 (Not yet released)
C.3.15. Changes in MySQL Connector/NET 5.0.9 (Not yet released)
C.3.16. Changes in MySQL Connector/NET 5.0.8 (21 August 2007)
C.3.17. Changes in MySQL Connector/NET 5.0.7 (18 May 2007)
C.3.18. Changes in MySQL Connector/NET 5.0.6 (22 March 2007)
C.3.19. Changes in MySQL Connector/NET 5.0.5 (07 March 2007)
C.3.20. Changes in MySQL Connector/NET 5.0.4 (Not released)
C.3.21. Changes in MySQL Connector/NET 5.0.3 (05 January 2007)
C.3.22. Changes in MySQL Connector/NET 5.0.2 (06 November 2006)
C.3.23. Changes in MySQL Connector/NET 5.0.1 (01 October 2006)
C.3.24. Changes in MySQL Connector/NET 5.0.0 (08 August 2006)
C.3.25. Changes in MySQL Connector/NET 1.0.11 (Not yet released)
C.3.26. Changes in MySQL Connector/NET 1.0.10 (24 August 2007)
C.3.27. Changes in MySQL Connector/NET 1.0.9 (02 February 2007)
C.3.28. Changes in MySQL Connector/NET 1.0.8 (20 October 2006)
C.3.29. Changes in MySQL Connector/NET 1.0.7 (21 November 2005)
C.3.30. Changes in MySQL Connector/NET 1.0.6 (03 October 2005)
C.3.31. Changes in MySQL Connector/NET 1.0.5 (29 August 2005)
C.3.32. Changes in MySQL Connector/NET 1.0.4 (20 January 2005)
C.3.33. Changes in MySQL Connector/NET 1.0.3 (12 October 2004)
C.3.34. Changes in MySQL Connector/NET 1.0.2 (15 November 2004)
C.3.35. Changes in MySQL Connector/NET 1.0.1 (27 October 2004)
C.3.36. Changes in MySQL Connector/NET 1.0.0 (01 September 2004)
C.3.37. Changes in MySQL Connector/NET Version 0.9.0 (30 August 2004)
C.3.38. Changes in MySQL Connector/NET Version 0.76
C.3.39. Changes in MySQL Connector/NET Version 0.75
C.3.40. Changes in MySQL Connector/NET Version 0.74
C.3.41. Changes in MySQL Connector/NET Version 0.71
C.3.42. Changes in MySQL Connector/NET Version 0.70
C.3.43. Changes in MySQL Connector/NET Version 0.68
C.3.44. Changes in MySQL Connector/NET Version 0.65
C.3.45. Changes in MySQL Connector/NET Version 0.60
C.3.46. Changes in MySQL Connector/NET Version 0.50
C.4. MySQL Visual Studio Plugin Change History
C.4.1. Changes in MySQL Visual Studio Plugin 1.0.3 (Not yet released)
C.4.2. Changes in MySQL Visual Studio Plugin 1.0.2 (Not yet released)
C.4.3. Changes in MySQL Visual Studio Plugin 1.0.1 (4 October 2006)
C.4.4. Changes in MySQL Visual Studio Plugin 1.0.0 (4 October 2006)
C.5. MySQL Connector/J Change History
C.5.1. Changes in MySQL Connector/J 5.1.x
C.5.2. Changes in MySQL Connector/J 5.0.x
C.5.3. Changes in MySQL Connector/J 3.1.x
C.5.4. Changes in MySQL Connector/J 3.0.x
C.5.5. Changes in MySQL Connector/J 2.0.x
C.5.6. Changes in MySQL Connector/J 1.2b (04 July 1999)
C.5.7. Changes in MySQL Connector/J 1.2.x and lower
C.6. MySQL Connector/MXJ Change History
C.6.1. Changes in MySQL Connector/MXJ 5.0.6 (04 May 2007)
C.6.2. Changes in MySQL Connector/MXJ 5.0.5 (14 March 2007)
C.6.3. Changes in MySQL Connector/MXJ 5.0.4 (28 January 2007)
C.6.4. Changes in MySQL Connector/MXJ 5.0.3 (24 June 2006)
C.6.5. Changes in MySQL Connector/MXJ 5.0.2 (15 June 2006)
C.6.6. Changes in MySQL Connector/MXJ 5.0.1 (Never released)
C.6.7. Changes in MySQL Connector/MXJ 5.0.0 (09 December 2005)
C.7. MySQL Proxy Change History
C.7.1. Changes in MySQL Proxy 0.6.0 (Not yet released)
C.7.2. Changes in MySQL Proxy 0.5.1 (30 June 2007)
C.7.3. Changes in MySQL Proxy 0.5.0 (19 June 2007)
D. Restrictions and Limits
D.1. Restrictions on Stored Routines, Triggers, and Events
D.2. Restrictions on Server-Side Cursors
D.3. Restrictions on Subqueries
D.4. Restrictions on Views
D.5. Restrictions on XA Transactions
D.6. Restrictions on Character Sets
D.7. Limits in MySQL
D.7.1. Limits of Joins
D.7.2. The Maximum Number of Columns Per Table
D.7.3. Windows Platform Limitations
E. Credits
E.1. Developers at MySQL AB
E.2. Contributors to MySQL
E.3. Documenters and translators
E.4. Libraries used by and included with MySQL
E.5. Packages that support MySQL
E.6. Tools that were used to create MySQL
E.7. Supporters of MySQL
Index

List of Figures

13.1. The MySQL architecture using pluggable storage engines
13.2. FEDERATED table structure
14.1. DRBD Architecture
14.2. DRBD Architecture
14.3. DRBD Architecture
16.1. memcached overview
16.2. memcached memory allocation
16.3. Typical memcached usage sequence
18.1. Replication architecture with clients using multiple MySQL slaves
18.2. Replication architecture with clients using dedicated MySQL slaves
18.3. Replication architecture with clients using MySQL Load Balancer
19.1. Using replication to improve the performance during scaleout
19.2. Using replication to replicate separate DBs to multiple hosts
19.3. Using an additional replication host to improve performance
19.4. Redundancy using replication, initial structure
19.5. Redundancy using replication, after master failure
A.1. Active-Master MySQL server

List of Tables

2.1. Build (configure) Reference
4.1. mysqld_safe Option Reference
4.2. mysql Option Reference
4.3. mysqladmin Option Reference
4.4. mysqlcheck Option Reference
4.5. mysqldump Option Reference
4.6. mysqlimport Option Reference
4.7. mysqlshow Option Reference
4.8. mysqlslap Option Reference
4.9. myisamchk Option Reference
4.10. mysqlaccess Option Reference
4.11. mysqlbinlog Option Reference
4.12. mysqlhotcopy Option Reference
29.1. MySQL Configuration Options
29.2. MySQL client constants
29.3. MySQL fetch constants
29.4. MySQLi Configuration Options
29.5. Possible mysqli_info return values
29.6. Valid options
29.7. Supported flags
29.8. Type specification chars
29.9. Return Values
29.10. Object attributes
29.11. Object properties
29.12. Object properties
29.13. Supported flags
30.1. Mapping of MySQL Error Numbers to SQLStates

List of Examples

29.1. MySQL extension overview example
29.2. mysql_affected_rows example
29.3. mysql_affected_rows example using transactions
29.4. mysql_client_encoding example
29.5. mysql_close example
29.6. mysql_connect example
29.7. mysql_connect example using hostname:port syntax
29.8. mysql_connect example using ":/path/to/socket" syntax
29.9. mysql_create_db alternative example
29.10. mysql_data_seek example
29.11. mysql_db_name example
29.12. mysql_db_query alternative example
29.13. mysql_drop_db alternative example
29.14. mysql_errno example
29.15. mysql_error example
29.16. mysql_escape_string example
29.17. Query with aliased duplicate field names
29.18. mysql_fetch_array with MYSQL_NUM
29.19. mysql_fetch_array with MYSQL_ASSOC
29.20. mysql_fetch_array with MYSQL_BOTH
29.21. An expanded mysql_fetch_assoc example
29.22. mysql_fetch_field example
29.23. A mysql_fetch_lengths example
29.24. mysql_fetch_object example
29.25. mysql_fetch_object example
29.26. Fetching one row with mysql_fetch_row
29.27. A mysql_field_flags example
29.28. mysql_field_len example
29.29. mysql_field_name example
29.30. A mysql_field_table example
29.31. mysql_field_type example
29.32. A mysql_free_result example
29.33. mysql_get_client_info example
29.34. mysql_get_host_info example
29.35. mysql_get_proto_info example
29.36. mysql_get_server_info example
29.37. Relevant MySQL Statements
29.38. mysql_insert_id example
29.39. mysql_list_dbs example
29.40. Alternate to deprecated mysql_list_fields
29.41. mysql_list_processes example
29.42. mysql_list_tables alternative example
29.43. A mysql_num_fields example
29.44. mysql_num_rows example
29.45. A mysql_ping example
29.46. Invalid Query
29.47. Valid Query
29.48. Simple mysql_real_escape_string example
29.49. An example SQL Injection Attack
29.50. A "Best Practice" query
29.51. mysql_result example
29.52. mysql_select_db example
29.53. mysql_stat example
29.54. Alternative mysql_stat example
29.55. mysql_tablename example
29.56. mysql_thread_id example
29.57. Object oriented style
29.58. Procedural style
29.59. Object oriented style
29.60. Procedural style
29.61. Object oriented style
29.62. Procedural style
29.63. Object oriented style
29.64. Procedural style
29.65. Object oriented style
29.66. Procedural style
29.67. mysqli_connect_errno example
29.68. mysqli_connect_error example
29.69. Object oriented style
29.70. Procedural style
29.71. Generating a Trace File
29.72. Object oriented style
29.73. Procedural style
29.74. Object oriented style
29.75. Procedural style
29.76. Object oriented style
29.77. Procedural style
29.78. Object oriented style
29.79. Procedural style
29.80. mysqli_get_client_info
29.81. mysqli_get_client_version
29.82. Object oriented style
29.83. Procedural style
29.84. Object oriented style
29.85. Procedural style
29.86. Object oriented style
29.87. Procedural style
29.88. Object oriented style
29.89. Procedural style
29.90. Object oriented style
29.91. Procedural style
29.92. Object oriented style
29.93. Procedural style
29.94. Object oriented style
29.95. Procedural style
29.96. Object oriented style
29.97. Procedural style
29.98. Object oriented style
29.99. Procedural style
29.100. Object oriented style
29.101. Procedural style
29.102. Object oriented style
29.103. Procedural style
29.104. Object oriented style
29.105. Procedural style
29.106. Object oriented style
29.107. Procedural style
29.108. Object oriented style
29.109. Procedural style
29.110. Object oriented style
29.111. Procedural style
29.112. Object oriented style
29.113. Procedural style
29.114. Object oriented style
29.115. Procedural style
29.116. Object oriented style
29.117. Procedural style
29.118. Object oriented style
29.119. Procedural style
29.120. Object oriented style
29.121. Procedural style
29.122. Object oriented style
29.123. Procedural style
29.124. Object oriented style
29.125. Procedural style
29.126. Object oriented style
29.127. Procedural style
29.128. Object oriented style
29.129. Procedural style
29.130. Object oriented style
29.131. Procedural style
29.132. Object oriented style
29.133. Procedural style
29.134. Object oriented style
29.135. Procedural style
29.136. Object oriented style
29.137. Procedural style
29.138. Object oriented style
29.139. Procedural style
29.140. Object oriented style
29.141. Procedural style
29.142. Object oriented style
29.143. Procedural style
29.144. Object oriented style
29.145. Procedural style
29.146. Object oriented style
29.147. Procedural style
29.148. Object oriented style
29.149. Procedural style
29.150. Object oriented style
29.151. Object oriented style
29.152. Procedural style
29.153. Object oriented style
29.154. Procedural style
29.155. Object oriented style
29.156. Procedural style
29.157. Object oriented style
29.158. Procedural style
29.159. Object oriented style
29.160. Procedural style
29.161. Object oriented style
29.162. Procedural style
29.163. Object oriented style
29.164. Procedural style
29.165. Object oriented style
29.166. Procedural style
29.167. Object oriented style
29.168. Procedural style
29.169. Object oriented style
29.170. Procedural style
29.171. Object oriented style
29.172. Procedural style
29.173. Object oriented style
29.174. Procedural style
29.175. Object oriented style
29.176. Procedural style
29.177. Object oriented style
29.178. Procedural style
29.179. Object oriented style
29.180. Procedural style
29.181. Object oriented style
29.182. Forcing queries to be buffered in mysql
29.183. PDO_MYSQL DSN examples
30.1. Obtaining a connection from the DriverManager
30.2. Using java.sql.Statement to execute a SELECT query
30.3. Stored Procedures
30.4. Using Connection.prepareCall()
30.5. Registering output parameters
30.6. Setting CallableStatement input parameters
30.7. Retrieving results and output parameter values
30.8. Retrieving AUTO_INCREMENT column values using Statement.getGeneratedKeys()
30.9. Retrieving AUTO_INCREMENT column values using SELECT LAST_INSERT_ID()
30.10. Retrieving AUTO_INCREMENT column values in Updatable ResultSets
30.11. Using a connection pool with a J2EE application server
30.12. Example of transaction with retry logic