MySQL 6.0 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 6.0 through 6.0.5.

Document generated on: 2008-01-10 (revision: 9558)


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 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.1 to 6.0
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. Specifying Program Options
4.2.3. 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. mysql_fix_privilege_tables — Upgrade MySQL System Tables
4.4.4. mysql_install_db — Initialize MySQL Data Directory
4.4.5. mysql_secure_installation — Improve MySQL Installation Security
4.4.6. mysql_tzinfo_to_sql — Load the Time Zone Tables
4.4.7. 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. mysql_convert_table_format — Convert Tables to Use a Given Storage Engine
4.6.10. mysql_find_rows — Extract SQL Statements from Files
4.6.11. mysql_fix_extensions — Normalize Table Filename Extensions
4.6.12. mysql_setpermission — Interactively Set Permissions in Grant Tables
4.6.13. mysql_tableinfo — Generate Database Metadata
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. Using System Variables
5.1.5. Status Variables
5.1.6. SQL Modes
5.1.7. Server-Side Help
5.1.8. Server Response to Signals
5.1.9. 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. Connecting to the MySQL Server
5.4.5. Access Control, Stage 1: Connection Verification
5.4.6. Access Control, Stage 2: Request Verification
5.4.7. When Privilege Changes Take Effect
5.4.8. Causes of Access denied Errors
5.4.9. 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 Secure Connections
5.6. Backup and Recovery
5.6.1. Database Backups
5.6.2. Example Backup and Recovery Strategy
5.6.3. Point-in-Time Recovery
5.6.4. Table Maintenance and Crash Recovery
5.7. Running Multiple MySQL Servers on the Same Machine
5.7.1. Running Multiple Servers on Windows
5.7.2. Running Multiple Servers on Unix
5.7.3. Using Client Programs in a Multiple-Server Environment
6. Optimization
6.1. Optimization Overview
6.1.1. MySQL Design Limitations and Tradeoffs
6.1.2. Designing Applications for Portability
6.1.3. What We Have Used MySQL For
6.1.4. The MySQL Benchmark Suite
6.1.5. Using Your Own Benchmarks
6.2. Optimizing SELECT and Other Statements
6.2.1. Optimizing Queries with EXPLAIN
6.2.2. Estimating Query Performance
6.2.3. Speed of SELECT Queries
6.2.4. WHERE Clause Optimization
6.2.5. Range Optimization
6.2.6. Index Merge Optimization
6.2.7. IS NULL Optimization
6.2.8. LEFT JOIN and RIGHT JOIN Optimization
6.2.9. Nested Join Optimization
6.2.10. Outer Join Simplification
6.2.11. ORDER BY Optimization
6.2.12. GROUP BY Optimization
6.2.13. DISTINCT Optimization
6.2.14. Optimizing IN/=ANY Subqueries
6.2.15. LIMIT Optimization
6.2.16. How to Avoid Table Scans
6.2.17. INFORMATION_SCHEMA Optimization
6.2.18. Speed of INSERT Statements
6.2.19. Speed of UPDATE Statements
6.2.20. Speed of DELETE Statements
6.2.21. Other Optimization Tips
6.3. Locking Issues
6.3.1. Internal Locking Methods
6.3.2. Table Locking Issues
6.3.3. Concurrent Inserts
6.3.4. External Locking
6.4. Optimizing Database Structure
6.4.1. Design Choices
6.4.2. Make Your Data as Small as Possible
6.4.3. Column Indexes
6.4.4. Multiple-Column Indexes
6.4.5. How MySQL Uses Indexes
6.4.6. The MyISAM Key Cache
6.4.7. MyISAM Index Statistics Collection
6.4.8. How MySQL Opens and Closes Tables
6.4.9. Drawbacks to Creating Many Tables in the Same Database
6.5. Optimizing the MySQL Server
6.5.1. System Factors and Startup Parameter Tuning
6.5.2. Tuning Server Parameters
6.5.3. Controlling Query Optimizer Performance
6.5.4. The MySQL Query Cache
6.5.5. Examining Thread Information
6.5.6. How Compiling and Linking Affects the Speed of MySQL
6.5.7. How MySQL Uses Memory
6.5.8. How MySQL Uses Internal Temporary Tables
6.5.9. How MySQL Uses DNS
6.6. Disk Issues
6.6.1. Using Symbolic Links
7. Language Structure
7.1. Literal Values
7.1.1. Strings
7.1.2. Numbers
7.1.3. Hexadecimal Values
7.1.4. Boolean Values
7.1.5. Bit-Field Values
7.1.6. NULL Values
7.2. Schema Object Names
7.2.1. Identifier Qualifiers
7.2.2. Identifier Case Sensitivity
7.2.3. Mapping of Identifiers to Filenames
7.2.4. Function Name Parsing and Resolution
7.3. Reserved Words
7.4. User-Defined Variables
7.5. Comment Syntax
8. Internationalization and Localization
8.1. Character Set Support
8.1.1. Character Sets and Collations in General
8.1.2. Character Sets and Collations in MySQL
8.1.3. Specifying Character Sets and Collations
8.1.4. Connection Character Sets and Collations
8.1.5. Collation Issues
8.1.6. String Repertoire
8.1.7. Operations Affected by Character Set Support
8.1.8. Unicode Support
8.1.9. Upgrading from Previous to Current Unicode Support
8.1.10. UTF-8 for Metadata
8.1.11. Column Character Set Conversion
8.1.12. Character Sets and Collations That MySQL Supports
8.2. The Character Set Used for Data and Sorting
8.2.1. Using the German Character Set
8.3. Setting the Error Message Language
8.4. Adding a New Character Set
8.5. The Character Definition Arrays
8.6. String Collating Support
8.7. Multi-Byte Character Support
8.8. Problems With Character Sets
8.9. MySQL Server Time Zone Support
8.10. MySQL Server Locale Support
9. Data Types
9.1. Data Type Overview
9.1.1. Overview of Numeric Types
9.1.2. Overview of Date and Time Types
9.1.3. Overview of String Types
9.1.4. Data Type Default Values
9.2. Numeric Types
9.3. Date and Time Types
9.3.1. The DATETIME, DATE, and TIMESTAMP Types
9.3.2. The TIME Type
9.3.3. The YEAR Type
9.3.4. Year 2000 Issues and Date Types
9.4. String Types
9.4.1. The CHAR and VARCHAR Types
9.4.2. The BINARY and VARBINARY Types
9.4.3. The BLOB and TEXT Types
9.4.4. The ENUM Type
9.4.5. The SET Type
9.5. Data Type Storage Requirements
9.6. Choosing the Right Type for a Column
9.7. Using Data Types from Other Database Engines
10. Functions and Operators
10.1. Operator and Function Reference
10.2. Operators
10.2.1. Operator Precedence
10.2.2. Type Conversion in Expression Evaluation
10.2.3. Comparison Functions and Operators
10.2.4. Logical Operators
10.3. Control Flow Functions
10.4. String Functions
10.4.1. String Comparison Functions
10.4.2. Regular Expressions
10.5. Numeric Functions
10.5.1. Arithmetic Operators
10.5.2. Mathematical Functions
10.6. Date and Time Functions
10.7. What Calendar Is Used By MySQL?
10.8. Full-Text Search Functions
10.8.1. Natural Language Full-Text Searches
10.8.2. Boolean Full-Text Searches
10.8.3. Full-Text Searches with Query Expansion
10.8.4. Full-Text Stopwords
10.8.5. Full-Text Restrictions
10.8.6. Fine-Tuning MySQL Full-Text Search
10.9. Cast Functions and Operators
10.10. XML Functions
10.11. Other Functions
10.11.1. Bit Functions
10.11.2. Encryption and Compression Functions
10.11.3. Information Functions
10.11.4. Miscellaneous Functions
10.12. Functions and Modifiers for Use with GROUP BY Clauses
10.12.1. GROUP BY (Aggregate) Functions
10.12.2. GROUP BY Modifiers
10.12.3. GROUP BY and HAVING with Hidden Fields
11. SQL Statement Syntax
11.1. Data Definition Statements
11.1.1. ALTER DATABASE Syntax
11.1.2. ALTER LOGFILE GROUP Syntax
11.1.3. ALTER SERVER Syntax
11.1.4. ALTER TABLE Syntax
11.1.5. ALTER TABLESPACE Syntax
11.1.6. CREATE DATABASE Syntax
11.1.7. CREATE INDEX Syntax
11.1.8. CREATE LOGFILE GROUP Syntax
11.1.9. CREATE SERVER Syntax
11.1.10. CREATE TABLE Syntax
11.1.11. CREATE TABLESPACE Syntax
11.1.12. DROP DATABASE Syntax
11.1.13. DROP INDEX Syntax
11.1.14. DROP LOGFILE GROUP Syntax
11.1.15. DROP SERVER Syntax
11.1.16. DROP TABLE Syntax
11.1.17. DROP TABLESPACE Syntax
11.1.18. RENAME TABLE Syntax
11.2. Data Manipulation Statements
11.2.1. DELETE Syntax
11.2.2. DO Syntax
11.2.3. HANDLER Syntax
11.2.4. INSERT Syntax
11.2.5. LOAD DATA INFILE Syntax
11.2.6. LOAD XML Syntax
11.2.7. REPLACE Syntax
11.2.8. SELECT Syntax
11.2.9. Subquery Syntax
11.2.10. TRUNCATE Syntax
11.2.11. UPDATE Syntax
11.3. MySQL Utility Statements
11.3.1. DESCRIBE Syntax
11.3.2. HELP Syntax
11.3.3. USE Syntax
11.4. MySQL Transactional and Locking Statements
11.4.1. START TRANSACTION, COMMIT, and ROLLBACK Syntax
11.4.2. Statements That Cannot Be Rolled Back
11.4.3. Statements That Cause an Implicit Commit
11.4.4. SAVEPOINT and ROLLBACK TO SAVEPOINT Syntax
11.4.5. LOCK TABLES and UNLOCK TABLES Syntax
11.4.6. SET TRANSACTION Syntax
11.4.7. XA Transactions
11.5. Database Administration Statements
11.5.1. Account Management Statements
11.5.2. Table Maintenance Statements
11.5.3. SET Syntax
11.5.4. SHOW Syntax
11.5.5. Other Administrative Statements
11.6. Replication Statements
11.6.1. SQL Statements for Controlling Master Servers
11.6.2. SQL Statements for Controlling Slave Servers
11.7. SQL Syntax for Prepared Statements
12. Storage Engines
12.1. Overview of MySQL Storage Engine Architecture
12.1.1. The Common Database Server Layer
12.1.2. Pluggable Storage Engine Architecture
12.2. Supported Storage Engines
12.2.1. Choosing a Storage Engine
12.2.2. Comparing Transaction and Non-Transaction Engines
12.2.3. Other Storage Engines
12.3. Setting the Storage Engine
12.4. The MyISAM Storage Engine
12.4.1. MyISAM Startup Options
12.4.2. Space Needed for Keys
12.4.3. MyISAM Table Storage Formats
12.4.4. MyISAM Table Problems
12.5. The InnoDB Storage Engine
12.5.1. InnoDB Overview
12.5.2. InnoDB Contact Information
12.5.3. InnoDB Configuration
12.5.4. InnoDB Startup Options and System Variables
12.5.5. Creating the InnoDB Tablespace
12.5.6. Creating and Using InnoDB Tables
12.5.7. Adding and Removing InnoDB Data and Log Files
12.5.8. Backing Up and Recovering an InnoDB Database
12.5.9. Moving an InnoDB Database to Another Machine
12.5.10. InnoDB Transaction Model and Locking
12.5.11. InnoDB Performance Tuning Tips
12.5.12. Implementation of Multi-Versioning
12.5.13. InnoDB Table and Index Structures
12.5.14. InnoDB File Space Management and Disk I/O
12.5.15. InnoDB Error Handling
12.5.16. Restrictions on InnoDB Tables
12.5.17. InnoDB Troubleshooting
12.6. The Falcon Storage Engine
12.6.1. Falcon Features
12.6.2. Configuration Parameters
12.6.3. Creating the Falcon Tablespace
12.6.4. Creating Tables and Indexes within Falcon
12.6.5. Obtaining Performance Diagnostics
12.6.6. Principles and Terminology
12.6.7. Limits
12.6.8. Falcon Roadmap
12.7. The MERGE Storage Engine
12.7.1. MERGE Table Problems
12.8. The MEMORY (HEAP) Storage Engine
12.9. The EXAMPLE Storage Engine
12.10. The FEDERATED Storage Engine
12.10.1. FEDERATED Storage Engine Overview
12.10.2. How to Create FEDERATED Tables
12.10.3. FEDERATED Storage Engine Notes and Tips
12.10.4. FEDERATED Storage Engine Resources
12.11. The ARCHIVE Storage Engine
12.12. The CSV Storage Engine
12.12.1. Repairing and Checking CSV Tables
12.12.2. CSV Limitations
12.13. The BLACKHOLE Storage Engine
13. High Availability, Scalability, and DRBD
13.1. Using MySQL with DRBD for High Availability
13.1.1. Configuring a MySQL and DRBD Environment
13.1.2. Configuring MySQL for DRBD
13.1.3. Optimizing Performance and Reliability
13.2. Using Linux HA Heartbeat
13.2.1. Heartbeat Configuration
13.2.2. Using Heartbeat with MySQL and DRBD
13.2.3. Using Heartbeat with DRBD and dopd
13.2.4. Dealing with System Level Errors
14. Replication
14.1. Replication Configuration
14.1.1. How to Set Up Replication
14.1.2. Replication Formats
14.1.3. Replication Options and Variables
14.1.4. Common Replication Administration Tasks
14.2. Replication Solutions
14.2.1. Using Replication for Backups
14.2.2. Using Replication with Different Master and Slave Storage Engines
14.2.3. Using Replication for Scale-Out
14.2.4. Replicating Different Databases to Different Slaves
14.2.5. Improving Replication Performance
14.2.6. Switching Masters During Failover
14.2.7. Setting Up Replication Using SSL
14.3. Replication Notes and Tips
14.3.1. Replication Features and Issues
14.3.2. Replication Compatibility Between MySQL Versions
14.3.3. Upgrading a Replication Setup
14.3.4. Replication FAQ
14.3.5. Troubleshooting Replication
14.3.6. How to Report Replication Bugs or Problems
14.4. Replication Implementation
14.4.1. Replication Implementation Details
14.4.2. Replication Relay and Status Files
14.4.3. How Servers Evaluate Replication Rules
15. MySQL Cluster
15.1. MySQL Cluster Overview
15.1.1. MySQL Cluster Core Concepts
15.1.2. MySQL Cluster Nodes, Node Groups, Replicas, and Partitions
15.2. Simple Multi-Computer How-To
15.2.1. Hardware, Software, and Networking
15.2.2. Multi-Computer Installation
15.2.3. Multi-Computer Configuration
15.2.4. Initial Startup
15.2.5. Loading Sample Data and Performing Queries
15.2.6. Safe Shutdown and Restart
15.3. MySQL Cluster Configuration
15.3.1. Building MySQL Cluster from Source Code
15.3.2. Installing the Cluster Software
15.3.3. Quick Test Setup of MySQL Cluster
15.3.4. Configuration File
15.3.5. Overview of Cluster Configuration Parameters
15.3.6. Configuring Parameters for Local Checkpoints
15.4. Upgrading and Downgrading MySQL Cluster
15.4.1. Performing a Rolling Restart of the Cluster
15.4.2. Cluster Upgrade and Downgrade Compatibility
15.5. Process Management in MySQL Cluster
15.5.1. MySQL Server Process Usage for MySQL Cluster
15.5.2. ndbd — The Storage Engine Node Process
15.5.3. ndb_mgmd — The Management Server Process
15.5.4. ndb_mgm — The Management Client Process
15.5.5. Command Options for MySQL Cluster Processes
15.6. Management of MySQL Cluster
15.6.1. Summary of MySQL Cluster Start Phases
15.6.2. Commands in the MySQL Cluster Management Client
15.6.3. Event Reports Generated in MySQL Cluster
15.6.4. Single User Mode
15.6.5. Quick Reference: MySQL Cluster SQL Statements
15.7. On-line Backup of MySQL Cluster
15.7.1. Cluster Backup Concepts
15.7.2. Using The Management Client to Create a Backup
15.7.3. ndb_restore — Restore a Cluster Backup
15.7.4. Configuration for Cluster Backup
15.7.5. Backup Troubleshooting
15.8. Cluster Utility Programs
15.8.1. ndb_config — Extract NDB Configuration Information
15.8.2. ndb_cpcd — Automate Testing for NDB Development
15.8.3. ndb_delete_all — Delete All Rows from NDB Table
15.8.4. ndb_desc — Describe NDB Tables
15.8.5. ndb_drop_index — Drop Index from NDB Table
15.8.6. ndb_drop_table — Drop NDB Table
15.8.7. ndb_error_reporter — NDB Error-Reporting Utility
15.8.8. ndb_print_backup_file — Print NDB Backup File Contents
15.8.9. ndb_print_schema_file — Print NDB Schema File Contents
15.8.10. ndb_print_sys_file — Print NDB System File Contents
15.8.11. ndbd_redo_log_reader — Check and Print Content of Cluster Redo Log
15.8.12. ndb_select_all — Print Rows from NDB Table
15.8.13. ndb_select_count — Print Row Counts for NDB Tables
15.8.14. ndb_show_tables — Display List of NDB Tables
15.8.15. ndb_size.pl — NDBCluster Size Requirement Estimator
15.8.16. ndb_waiter — Wait for Cluster to Reach a Given Status
15.9. MySQL Cluster Replication
15.9.1. Abbreviations and Symbols
15.9.2. Assumptions and General Requirements
15.9.3. Known Issues in MySQL Cluster Replication
15.9.4. Cluster Replication Schema and Tables
15.9.5. Preparing the Cluster for Replication
15.9.6. Starting Replication (Single Replication Channel)
15.9.7. Using Two Replication Channels
15.9.8. Implementing Failover with MySQL Cluster
15.9.9. MySQL Cluster Backups With Replication
15.9.10. MySQL Cluster Replication Conflict Resolution
15.10. MySQL Cluster Disk Data Tables
15.10.1. Disk Data Objects
15.10.2. Disk Data Storage Requirements
15.10.3. Disk Data Configuration Parameters
15.11. Using High-Speed Interconnects with MySQL Cluster
15.11.1. Configuring MySQL Cluster to use SCI Sockets
15.11.2. Understanding the Impact of Cluster Interconnects
15.12. Known Limitations of MySQL Cluster
15.12.1. Non-Compliance In SQL Syntax
15.12.2. Limits and Differences from Standard MySQL Limits
15.12.3. Limits Relating to Transaction Handling
15.12.4. Error Handling
15.12.5. Limits Associated with Database Objects
15.12.6. Unsupported Or Missing Features
15.12.7. Limitations Relating to Performance
15.12.8. Issues Exclusive to MySQL Cluster
15.12.9. Limitations Relating to Disk Data Storage
15.12.10. Limitations Relating to Multiple Cluster Nodes
15.12.11. Previous MySQL Cluster Issues Resolved in MySQL 6.0
15.13. MySQL Cluster Development Roadmap
15.14. MySQL Cluster Glossary
16. Partitioning
16.1. Overview of Partitioning in MySQL
16.2. Partition Types
16.2.1. RANGE Partitioning
16.2.2. LIST Partitioning
16.2.3. HASH Partitioning
16.2.4. KEY Partitioning
16.2.5. Subpartitioning
16.2.6. How MySQL Partitioning Handles NULL Values
16.3. Partition Management
16.3.1. Management of RANGE and LIST Partitions
16.3.2. Management of HASH and KEY Partitions
16.3.3. Maintenance of Partitions
16.3.4. Obtaining Information About Partitions
16.4. Partition Pruning
16.5. Restrictions and Limitations on Partitioning
16.5.1. Partitioning Keys, Primary Keys, and Unique Keys
16.5.2. Partitioning Limitations Relating to Storage Engines
16.5.3. Partitioning Limitations Relating to Functions
17. Spatial Extensions
17.1. Introduction to MySQL Spatial Support
17.2. The OpenGIS Geometry Model
17.2.1. The Geometry Class Hierarchy
17.2.2. Class Geometry
17.2.3. Class Point
17.2.4. Class Curve
17.2.5. Class LineString
17.2.6. Class Surface
17.2.7. Class Polygon
17.2.8. Class GeometryCollection
17.2.9. Class MultiPoint
17.2.10. Class MultiCurve
17.2.11. Class MultiLineString
17.2.12. Class MultiSurface
17.2.13. Class MultiPolygon
17.3. Supported Spatial Data Formats
17.3.1. Well-Known Text (WKT) Format
17.3.2. Well-Known Binary (WKB) Format
17.4. Creating a Spatially Enabled MySQL Database
17.4.1. MySQL Spatial Data Types
17.4.2. Creating Spatial Values
17.4.3. Creating Spatial Columns
17.4.4. Populating Spatial Columns
17.4.5. Fetching Spatial Data
17.5. Analyzing Spatial Information
17.5.1. Geometry Format Conversion Functions
17.5.2. Geometry Functions
17.5.3. Functions That Create New Geometries from Existing Ones
17.5.4. Functions for Testing Spatial Relations Between Geometric Objects
17.5.5. Relations on Geometry Minimal Bounding Rectangles (MBRs)
17.5.6. Functions That Test Spatial Relationships Between Geometries
17.6. Optimizing Spatial Analysis
17.6.1. Creating Spatial Indexes
17.6.2. Using a Spatial Index
17.7. MySQL Conformance and Compatibility
18. Stored Procedures and Functions
18.1. Stored Routines and the Grant Tables
18.2. Stored Routine Syntax
18.2.1. CREATE PROCEDURE and CREATE FUNCTION Syntax
18.2.2. ALTER PROCEDURE and ALTER FUNCTION Syntax
18.2.3. DROP PROCEDURE and DROP FUNCTION Syntax
18.2.4. CALL Statement Syntax
18.2.5. BEGIN ... END Compound Statement Syntax
18.2.6. DECLARE Statement Syntax
18.2.7. Variables in Stored Routines
18.2.8. Conditions and Handlers
18.2.9. Cursors
18.2.10. Flow Control Constructs
18.3. Stored Procedures, Functions, Triggers, and LAST_INSERT_ID()
18.4. Binary Logging of Stored Routines and Triggers
19. Triggers
19.1. CREATE TRIGGER Syntax
19.2. DROP TRIGGER Syntax
19.3. Using Triggers
20. Event Scheduler
20.1. Event Scheduler Overview
20.2. Event Scheduler Syntax
20.2.1. ALTER EVENT Syntax
20.2.2. CREATE EVENT Syntax
20.2.3. DROP EVENT Syntax
20.3. Event Metadata
20.4. Event Scheduler Status
20.5. The Event Scheduler and MySQL Privileges
20.6. Event Scheduler Limitations and Restrictions
21. Views
21.1. ALTER VIEW Syntax
21.2. CREATE VIEW Syntax
21.3. DROP VIEW Syntax
22. INFORMATION_SCHEMA Tables
22.1. The INFORMATION_SCHEMA SCHEMATA Table
22.2. The INFORMATION_SCHEMA TABLES Table
22.3. The INFORMATION_SCHEMA COLUMNS Table
22.4. The INFORMATION_SCHEMA STATISTICS Table
22.5. The INFORMATION_SCHEMA USER_PRIVILEGES Table
22.6. The INFORMATION_SCHEMA SCHEMA_PRIVILEGES Table
22.7. The INFORMATION_SCHEMA TABLE_PRIVILEGES Table
22.8. The INFORMATION_SCHEMA COLUMN_PRIVILEGES Table
22.9. The INFORMATION_SCHEMA CHARACTER_SETS Table
22.10. The INFORMATION_SCHEMA COLLATIONS Table
22.11. The INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY Table
22.12. The INFORMATION_SCHEMA TABLE_CONSTRAINTS Table
22.13. The INFORMATION_SCHEMA KEY_COLUMN_USAGE Table
22.14. The INFORMATION_SCHEMA ROUTINES Table
22.15. The INFORMATION_SCHEMA VIEWS Table
22.16. The INFORMATION_SCHEMA TRIGGERS Table
22.17. The INFORMATION_SCHEMA PLUGINS Table
22.18. The INFORMATION_SCHEMA ENGINES Table
22.19. The INFORMATION_SCHEMA PARTITIONS Table
22.20. The INFORMATION_SCHEMA EVENTS Table
22.21. The INFORMATION_SCHEMA FILES Table
22.22. The INFORMATION_SCHEMA PROCESSLIST Table
22.23. The INFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS Table
22.24. The INFORMATION_SCHEMA GLOBAL_STATUS and SESSION_STATUS Tables
22.25. The INFORMATION_SCHEMA GLOBAL_VARIABLES and SESSION_VARIABLES Tables
22.26. The INFORMATION_SCHEMA PARAMETERS Table
22.27. Other INFORMATION_SCHEMA Tables
22.28. Extensions to SHOW Statements
23. Precision Math
23.1. Types of Numeric Values
23.2. DECIMAL Data Type Changes
23.3. Expression Handling
23.4. Rounding Behavior
23.5. Precision Math Examples
24. APIs and Libraries
24.1. libmysqld, the Embedded MySQL Server Library
24.1.1. Compiling Programs with libmysqld
24.1.2. Restrictions When Using the Embedded MySQL Server
24.1.3. Options with the Embedded Server
24.1.4. Embedded Server Examples
24.1.5. Licensing the Embedded Server
24.2. MySQL C API
24.2.1. C API Data Types
24.2.2. C API Function Overview
24.2.3. C API Function Descriptions
24.2.4. C API Prepared Statements
24.2.5. C API Prepared Statement Data types
24.2.6. C API Prepared Statement Function Overview
24.2.7. C API Prepared Statement Function Descriptions
24.2.8. C API Prepared Statement Problems
24.2.9. C API Handling of Multiple Statement Execution
24.2.10. C API Handling of Date and Time Values
24.2.11. C API Threaded Function Descriptions
24.2.12. C API Embedded Server Function Descriptions
24.2.13. Controlling Automatic Reconnect Behavior
24.2.14. Common Questions and Problems When Using the C API
24.2.15. Building Client Programs
24.2.16. How to Make a Threaded Client
24.3. MySQL PHP API
24.3.1. Common Problems with MySQL and PHP
24.3.2. Enabling Both mysql and mysqli in PHP
24.4. MySQL Perl API
24.5. MySQL C++ API
24.6. MySQL Python API
24.7. MySQL Tcl API
24.8. MySQL Eiffel Wrapper
25. Connectors
25.1. MySQL Connector/ODBC
25.1.1. Connector/ODBC Versions
25.1.2. Introduction to Connector/ODBC
25.1.3. Connector/ODBC Installation
25.1.4. Connector/ODBC Configuration
25.1.5. Connector/ODBC Examples
25.1.6. Connector/ODBC Reference
25.1.7. Connector/ODBC Notes and Tips
25.1.8. Connector/ODBC Support
25.2. MySQL Connector/NET
25.2.1. Connector/NET Versions
25.2.2. Connector/NET Installation
25.2.3. Connector/NET Examples and Usage Guide
25.2.4. Connector/NET Reference
25.2.5. Connector/NET Notes and Tips
25.2.6. Connector/NET Support
25.3. MySQL Visual Studio Plugin
25.3.1. Installing the MySQL Visual Studio Plugin
25.3.2. Creating a connection to the MySQL server
25.3.3. Using the MySQL Visual Studio Plugin
25.3.4. Visual Studio Plugin Support
25.4. MySQL Connector/J
25.4.1. Connector/J Versions
25.4.2. Connector/J Installation
25.4.3. Connector/J Examples
25.4.4. Connector/J (JDBC) Reference
25.4.5. Connector/J Notes and Tips
25.4.6. Connector/J Support
25.5. MySQL Connector/MXJ
25.5.1. Introduction to Connector/MXJ
25.5.2. Connector/MXJ Installation
25.5.3. Connector/MXJ Configuration
25.5.4. Connector/MXJ Reference
25.5.5. Connector/MXJ Notes and Tips
25.5.6. Connector/MXJ Support
25.6. Connector/PHP
26. MySQL Proxy
26.1. MySQL Proxy Supported Platforms
26.2. Installing MySQL Proxy
26.2.1. Installing MySQL Proxy from a binary distribution
26.2.2. Installing MySQL Proxy from a source distribution
26.2.3. Installing MySQL Proxy from the Subversion repository
26.3. MySQL Proxy Command Line Options
26.4. MySQL Proxy Scripting
26.4.1. Proxy Scripting Sequence During Query Injection
26.4.2. Internal Structures
26.4.3. Capturing a connection with connect_server()
26.4.4. Examining the handshake with read_handshake()
26.4.5. Examining the authentication credentials with read_auth()
26.4.6. Accessing authentication information with read_auth_result()
26.4.7. Manipulating Queries with read_query()
26.4.8. Manipulating Results with read_query_result()
26.5. Using MySQL Proxy
26.5.1. Using the Administration Interface
27. Extending MySQL
27.1. MySQL Internals
27.1.1. MySQL Threads
27.1.2. MySQL Test Suite
27.2. The MySQL Plugin Interface
27.2.1. Characteristics of the Plugin Interface
27.2.2. Full-Text Parser Plugins
27.2.3. INSTALL PLUGIN Syntax
27.2.4. UNINSTALL PLUGIN Syntax
27.2.5. Writing Plugins
27.3. Adding New Functions to MySQL
27.3.1. Features of the User-Defined Function Interface
27.3.2. CREATE FUNCTION Syntax
27.3.3. DROP FUNCTION Syntax
27.3.4. Adding a New User-Defined Function
27.3.5. Adding a New Native Function
27.4. Adding New Procedures to MySQL
27.4.1. Procedure Analyse
27.4.2. Writing a Procedure
27.5. Debugging and Porting MySQL
27.5.1. Debugging a MySQL Server
27.5.2. Debugging a MySQL Client
27.5.3. The DBUG Package
27.5.4. Comments about RTS Threads
27.5.5. Differences Between Thread Packages
A. MySQL 6.0 Frequently Asked Questions
A.1. MySQL 6.0 FAQ — General
A.2. MySQL 6.0 FAQ — Storage Engines
A.3. MySQL 6.0 FAQ — Server SQL Mode
A.4. MySQL 6.0 FAQ — Stored Procedures
A.5. MySQL 6.0 FAQ — Triggers
A.6. MySQL 6.0 FAQ — Views
A.7. MySQL 5.0 FAQ — INFORMATION_SCHEMA
A.8. MySQL 6.0 FAQ — Migration
A.9. MySQL 6.0 FAQ — Security
A.10. MySQL 6.0 FAQ — MySQL Cluster
A.11. MySQL 6.0 FAQ — MySQL Chinese, Japanese, and Korean Character Sets
A.12. MySQL 6.0 FAQ — Connectors & APIs
A.13. MySQL 6.0 FAQ — Replication
A.14. MySQL 6.0 FAQ — MySQL, DRBD, and Heartbeat
A.14.1. Distributed Replicated Block Device
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 6.0.x (Development)
C.1.1. Changes in MySQL 6.0.5 (Not yet released)
C.1.2. Changes in MySQL 6.0.4 (Not yet released)
C.1.3. Changes in MySQL 6.0.3 (16 November 2007)
C.1.4. Changes in MySQL 6.0.2 (04 September 2007)
C.1.5. Changes in MySQL 6.0.1 (Not released)
C.1.6. Changes in MySQL 6.0.0 (30 April 2007)
C.2. Changes in release 5.2.x (Development)
C.2.1. Changes in MySQL 5.2.5 (08 August 2007: Alpha)
C.2.2. Changes in MySQL 5.2.4 (Not released)
C.2.3. Changes in MySQL 5.2.3 (15 February 2007)
C.2.4. Changes in MySQL 5.2.2 (Not released)
C.2.5. Changes in MySQL 5.2.1 (Not released)
C.3. MySQL Connector/ODBC (MyODBC) Change History
C.3.1. Changes in MySQL Connector/ODBC 5.1.2 (Not yet released)
C.3.2. Changes in MySQL Connector/ODBC 5.1.1 (13 December 2007)
C.3.3. Changes in MySQL Connector/ODBC 5.1.0 (10 September 2007)
C.3.4. Changes in MySQL Connector/ODBC 5.0.12 (Never released)
C.3.5. Changes in MySQL Connector/ODBC 5.0.11 (31 January 2007)
C.3.6. Changes in MySQL Connector/ODBC 5.0.10 (14 December 2006)
C.3.7. Changes in MySQL Connector/ODBC 5.0.9 (22 November 2006)
C.3.8. Changes in MySQL Connector/ODBC 5.0.8 (17 November 2006)
C.3.9. Changes in MySQL Connector/ODBC 5.0.7 (08 November 2006)
C.3.10. Changes in MySQL Connector/ODBC 5.0.6 (03 November 2006)
C.3.11. Changes in MySQL Connector/ODBC 5.0.5 (17 October 2006)
C.3.12. Changes in Connector/ODBC 5.0.3 (Connector/ODBC 5.0 Alpha 3) (20 June 2006)
C.3.13. Changes in Connector/ODBC 5.0.2 (Never released)
C.3.14. Changes in Connector/ODBC 5.0.1 (Connector/ODBC 5.0 Alpha 2) (05 June 2006)
C.3.15. Changes in MySQL Connector/ODBC 3.51.23 (Not yet released)
C.3.16. Changes in MySQL Connector/ODBC 3.51.22 (13 November 2007)
C.3.17. Changes in MySQL Connector/ODBC 3.51.21 (08 October 2007)
C.3.18. Changes in MySQL Connector/ODBC 3.51.20 (10 September 2007)
C.3.19. Changes in MySQL Connector/ODBC 3.51.19 (10 August 2007)
C.3.20. Changes in MySQL Connector/ODBC 3.51.18 (08 August 2007)
C.3.21. Changes in MySQL Connector/ODBC 3.51.17 (14 July 2007)
C.3.22. Changes in MySQL Connector/ODBC 3.51.16 (14 June 2007)
C.3.23. Changes in MySQL Connector/ODBC 3.51.15 (7 May 2007)
C.3.24. Changes in MySQL Connector/ODBC 3.51.14 (08 March 2007)
C.3.25. Changes in MySQL Connector/ODBC 3.51.13 (Never released)
C.3.26. Changes in MySQL Connector/ODBC 3.51.12 (11 Febrauary 2005)
C.3.27. Changes in MySQL Connector/ODBC 3.51.11 (28 January 2005)
C.4. MySQL Connector/NET Change History
C.4.1. Changes in MySQL Connector/NET 5.2.0 (Not yet released)
C.4.2. Changes in MySQL Connector/NET 5.1.4 (20 November 2007)
C.4.3. Changes in MySQL Connector/NET 5.1.3 (21 September 2007)
C.4.4. Changes in MySQL Connector/NET 5.1.2 (18 June 2007)
C.4.5. Changes in MySQL Connector/NET 5.1.1 (23 May 2007)
C.4.6. Changes in MySQL Connector/NET 5.1.0 (01 May 2007)
C.4.7. Changes in MySQL Connector/NET 5.0.9 (Not yet released)
C.4.8. Changes in MySQL Connector/NET 5.0.8 (21 August 2007)
C.4.9. Changes in MySQL Connector/NET 5.0.7 (18 May 2007)
C.4.10. Changes in MySQL Connector/NET 5.0.6 (22 March 2007)
C.4.11. Changes in MySQL Connector/NET 5.0.5 (07 March 2007)
C.4.12. Changes in MySQL Connector/NET 5.0.4 (Not released)
C.4.13. Changes in MySQL Connector/NET 5.0.3 (05 January 2007)
C.4.14. Changes in MySQL Connector/NET 5.0.2 (06 November 2006)
C.4.15. Changes in MySQL Connector/NET 5.0.1 (01 October 2006)
C.4.16. Changes in MySQL Connector/NET 5.0.0 (08 August 2006)
C.4.17. Changes in MySQL Connector/NET 1.0.11 (Not yet released)
C.4.18. Changes in MySQL Connector/NET 1.0.10 (24 August 2007)
C.4.19. Changes in MySQL Connector/NET 1.0.9 (02 February 2007)
C.4.20. Changes in MySQL Connector/NET 1.0.8 (20 October 2006)
C.4.21. Changes in MySQL Connector/NET 1.0.7 (21 November 2005)
C.4.22. Changes in MySQL Connector/NET 1.0.6 (03 October 2005)
C.4.23. Changes in MySQL Connector/NET 1.0.5 (29 August 2005)
C.4.24. Changes in MySQL Connector/NET 1.0.4 (20 January 2005)
C.4.25. Changes in MySQL Connector/NET 1.0.3 (12 October 2004)
C.4.26. Changes in MySQL Connector/NET 1.0.2 (15 November 2004)
C.4.27. Changes in MySQL Connector/NET 1.0.1 (27 October 2004)
C.4.28. Changes in MySQL Connector/NET 1.0.0 (01 September 2004)
C.4.29. Changes in MySQL Connector/NET Version 0.9.0 (30 August 2004)
C.4.30. Changes in MySQL Connector/NET Version 0.76
C.4.31. Changes in MySQL Connector/NET Version 0.75
C.4.32. Changes in MySQL Connector/NET Version 0.74
C.4.33. Changes in MySQL Connector/NET Version 0.71
C.4.34. Changes in MySQL Connector/NET Version 0.70
C.4.35. Changes in MySQL Connector/NET Version 0.68
C.4.36. Changes in MySQL Connector/NET Version 0.65
C.4.37. Changes in MySQL Connector/NET Version 0.60
C.4.38. Changes in MySQL Connector/NET Version 0.50
C.5. MySQL Visual Studio Plugin Change History
C.5.1. Changes in MySQL Visual Studio Plugin 1.0.3 (Not yet released)
C.5.2. Changes in MySQL Visual Studio Plugin 1.0.2 (Not yet released)
C.5.3. Changes in MySQL Visual Studio Plugin 1.0.1 (4 October 2006)
C.5.4. Changes in MySQL Visual Studio Plugin 1.0.0 (4 October 2006)
C.6. MySQL Connector/J Change History
C.6.1. Changes in MySQL Connector/J 5.1.x
C.6.2. Changes in MySQL Connector/J 5.0.x
C.6.3. Changes in MySQL Connector/J 3.1.x
C.6.4. Changes in MySQL Connector/J 3.0.x
C.6.5. Changes in MySQL Connector/J 2.0.x
C.6.6. Changes in MySQL Connector/J 1.2b (04 July 1999)
C.6.7. Changes in MySQL Connector/J 1.2.x and lower
C.7. MySQL Connector/MXJ Change History
C.7.1. Changes in MySQL Connector/MXJ 5.0.6 (04 May 2007)
C.7.2. Changes in MySQL Connector/MXJ 5.0.5 (14 March 2007)
C.7.3. Changes in MySQL Connector/MXJ 5.0.4 (28 January 2007)
C.7.4. Changes in MySQL Connector/MXJ 5.0.3 (24 June 2006)
C.7.5. Changes in MySQL Connector/MXJ 5.0.2 (15 June 2006)
C.7.6. Changes in MySQL Connector/MXJ 5.0.1 (Never released)
C.7.7. Changes in MySQL Connector/MXJ 5.0.0 (09 December 2005)
C.8. MySQL Proxy Change History
C.8.1. Changes in MySQL Proxy 0.6.0 (Not yet released)
C.8.2. Changes in MySQL Proxy 0.5.1 (30 June 2007)
C.8.3. Changes in MySQL Proxy 0.5.0 (19 June 2007)
D. Limits and Restrictions
D.1. Restrictions on Stored Routines and Triggers
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

12.1. The MySQL architecture using pluggable storage engines
12.2. FEDERATED table structure
13.1. DRBD Architecture
13.2. DRBD Architecture
13.3. DRBD Architecture
14.1. Using replication to improve the performance during scaleout
14.2. Using replication to replicate separate DBs to multiple hosts
14.3. Using an additional replication host to improve performance
14.4. Redundancy using replication, initial structure
14.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. mysqlimport 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
4.13. mysql_tableinfo Option Reference
12.1. Falcon INFORMATION_SCHEMA performance diagnostic tables
25.1. Mapping of MySQL Error Numbers to SQLStates

List of Examples

25.1. Obtaining a connection from the DriverManager
25.2. Using java.sql.Statement to execute a SELECT query
25.3. Stored Procedures
25.4. Using Connection.prepareCall()
25.5. Registering output parameters
25.6. Setting CallableStatement input parameters
25.7. Retrieving results and output parameter values
25.8. Retrieving AUTO_INCREMENT column values using Statement.getGeneratedKeys()
25.9. Retrieving AUTO_INCREMENT column values using SELECT LAST_INSERT_ID()
25.10. Retrieving AUTO_INCREMENT column values in Updatable ResultSets
25.11. Using a connection pool with a J2EE application server
25.12. Example of transaction with retry logic