MySQL 5.0 Reference Manual
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. History of MySQL
- 1.4.2. The Main Features of MySQL
- 1.4.3. MySQL Stability
- 1.4.4. How Big MySQL Tables Can Be
- 1.4.5. Year 2000 Compliance
- 1.5. Overview of the MaxDB Database Management System
- 1.5.1. What is MaxDB?
- 1.5.2. History of MaxDB
- 1.5.3. Features of MaxDB
- 1.5.4. Licensing and Support
- 1.5.5. Feature Differences Between MaxDB and MySQL
- 1.5.6. Interoperability Features Between MaxDB and MySQL
- 1.5.7. MaxDB-Related Links
- 1.6. MySQL Development Roadmap
- 1.6.1. What's New in MySQL 5.0
- 1.7. MySQL Information Sources
- 1.7.1. MySQL Mailing Lists
- 1.7.2. MySQL Community Support on IRC (Internet Relay Chat)
- 1.7.3. MySQL Community Support at the MySQL Forums
- 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 MySQL
- 2.1. General Installation Issues
- 2.1.1. Operating Systems Supported by MySQL
- 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. Windows System Requirements
- 2.3.2. Choosing An Installation Package
- 2.3.3. Installing MySQL with the Automated Installer
- 2.3.4. Using the MySQL Installation Wizard
- 2.3.5. Using the Configuration Wizard
- 2.3.6. Installing MySQL from a Noinstall Zip Archive
- 2.3.7. Extracting the Install Archive
- 2.3.8. Creating an Option File
- 2.3.9. Selecting a MySQL Server type
- 2.3.10. Starting the Server for the First Time
- 2.3.11. Starting MySQL from the Windows Command Line
- 2.3.12. Starting MySQL as a Windows Service
- 2.3.13. Testing The MySQL Installation
- 2.3.14. Troubleshooting a MySQL Installation Under Windows
- 2.3.15. Upgrading MySQL on Windows
- 2.3.16. MySQL on Windows Compared to MySQL on Unix
- 2.4. Installing MySQL on Linux
- 2.5. Installing MySQL on Mac OS X
- 2.6. Installing MySQL on NetWare
- 2.7. Installing MySQL on Other Unix-Like Systems
- 2.8. MySQL Installation Using a Source Distribution
- 2.8.1. Source Installation Overview
- 2.8.2. Typical configure Options
- 2.8.3. Installing from the Development Source Tree
- 2.8.4. Dealing with Problems Compiling MySQL
- 2.8.5. MIT-pthreads Notes
- 2.8.6. Installing MySQL from Source on Windows
- 2.8.7. Compiling MySQL Clients on Windows
- 2.9. Post-Installation Setup and Testing
- 2.9.1. Windows Post-Installation Procedures
- 2.9.2. Unix Post-Installation Procedures
- 2.9.3. Securing the Initial MySQL Accounts
- 2.10. Upgrading MySQL
- 2.10.1. Upgrading from Version 5.0
- 2.10.2. Upgrading from Version 4.1 to 5.0
- 2.10.3. Upgrading the Grant Tables
- 2.10.4. Copying MySQL Databases to Another Machine
- 2.11. Downgrading MySQL
- 2.11.1. Downgrading to 4.1
- 2.12. Operating System-Specific Notes
- 2.12.1. Linux Notes
- 2.12.2. Mac OS X Notes
- 2.12.3. Solaris Notes
- 2.12.4. BSD Notes
- 2.12.5. Other Unix Notes
- 2.12.6. OS/2 Notes
- 2.13. Perl Installation Notes
- 2.13.1. Installing Perl on Unix
- 2.13.2. Installing ActiveState Perl on Windows
- 2.13.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 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. Using MySQL Programs
- 4.1. Overview of MySQL Programs
- 4.2. Invoking MySQL Programs
- 4.3. Specifying Program Options
- 4.3.1. Using Options on the Command Line
- 4.3.2. Using Option Files
- 4.3.3. Using Environment Variables to Specify Options
- 4.3.4. Using Options to Set Program Variables
- 5. Database Administration
- 5.1. The MySQL Server and Server Startup Scripts
- 5.1.1. Overview of the Server-Side Scripts and Utilities
- 5.1.2. The mysqld-max Extended MySQL Server
- 5.1.3. mysqld_safe — MySQL Server Startup Script
- 5.1.4. mysql.server — MySQL Server Startup Script
- 5.1.5. mysqld_multi — Program for Managing Multiple MySQL Servers
- 5.2. mysqlmanager — The MySQL Instance Manager
- 5.2.1. Starting the MySQL Server with MySQL Instance Manager
- 5.2.2. Connecting to the MySQL Instance Manager and Creating User Accounts
- 5.2.3. MySQL Instance Manager Command-Line Options
- 5.2.4. MySQL Instance Manager Configuration Files
- 5.2.5. Commands Recognized by the MySQL Instance Manager
- 5.3. mysqld — The MySQL Server
- 5.3.1. mysqld Command-Line Options
- 5.3.2. The Server SQL Mode
- 5.3.3. Server System Variables
- 5.3.4. Server Status Variables
- 5.4. mysql_fix_privilege_tables — Upgrade MySQL System Tables
- 5.5. The MySQL Server Shutdown Process
- 5.6. General Security Issues
- 5.6.1. General Security Guidelines
- 5.6.2. Making MySQL Secure Against Attackers
- 5.6.3. Startup Options for mysqld Concerning Security
- 5.6.4. Security Issues with
LOAD DATA LOCAL
- 5.7. The MySQL Access Privilege System
- 5.7.1. What the Privilege System Does
- 5.7.2. How the Privilege System Works
- 5.7.3. Privileges Provided by MySQL
- 5.7.4. Connecting to the MySQL Server
- 5.7.5. Access Control, Stage 1: Connection Verification
- 5.7.6. Access Control, Stage 2: Request Verification
- 5.7.7. When Privilege Changes Take Effect
- 5.7.8. Causes of
Access denied
Errors - 5.7.9. Password Hashing in MySQL 4.1
- 5.8. MySQL User Account Management
- 5.8.1. MySQL Usernames and Passwords
- 5.8.2. Adding New User Accounts to MySQL
- 5.8.3. Removing User Accounts from MySQL
- 5.8.4. Limiting Account Resources
- 5.8.5. Assigning Account Passwords
- 5.8.6. Keeping Your Password Secure
- 5.8.7. Using Secure Connections
- 5.9. Backup and Recovery
- 5.9.1. Database Backups
- 5.9.2. Example Backup and Recovery Strategy
- 5.9.3. Point-in-Time Recovery
- 5.9.4. Table Maintenance and Crash Recovery
- 5.9.5. myisamchk — MyISAM Table-Maintenance Utility
- 5.9.6. Setting Up a Table Maintenance Schedule
- 5.9.7. Getting Information About a Table
- 5.10. MySQL Localization and International Usage
- 5.10.1. The Character Set Used for Data and Sorting
- 5.10.2. Setting the Error Message Language
- 5.10.3. Adding a New Character Set
- 5.10.4. The Character Definition Arrays
- 5.10.5. String Collating Support
- 5.10.6. Multi-Byte Character Support
- 5.10.7. Problems With Character Sets
- 5.10.8. MySQL Server Time Zone Support
- 5.11. The MySQL Log Files
- 5.11.1. The Error Log
- 5.11.2. The General Query Log
- 5.11.3. The Binary Log
- 5.11.4. The Slow Query Log
- 5.11.5. Log File Maintenance
- 5.12. Running Multiple MySQL Servers on the Same Machine
- 5.12.1. Running Multiple Servers on Windows
- 5.12.2. Running Multiple Servers on Unix
- 5.12.3. Using Client Programs in a Multiple-Server Environment
- 5.13. The MySQL Query Cache
- 5.13.1. How the Query Cache Operates
- 5.13.2. Query Cache
SELECT
Options - 5.13.3. Query Cache Configuration
- 5.13.4. Query Cache Status and Maintenance
- 6. Replication in MySQL
- 6.1. Introduction to Replication
- 6.2. Replication Implementation Overview
- 6.3. Replication Implementation Details
- 6.3.1. Replication Master Thread States
- 6.3.2. Replication Slave I/O Thread States
- 6.3.3. Replication Slave SQL Thread States
- 6.3.4. Replication Relay and Status Files
- 6.4. How to Set Up Replication
- 6.5. Replication Compatibility Between MySQL Versions
- 6.6. Upgrading a Replication Setup
- 6.6.1. Upgrading Replication to 5.0
- 6.7. Replication Features and Known Problems
- 6.8. Replication Startup Options
- 6.9. Replication FAQ
- 6.10. Troubleshooting Replication
- 6.11. Reporting Replication Bugs
- 6.12. Auto-Increment in Multi-Master Replication
- 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
Statements and Other Queries - 7.2.1.
EXPLAIN
Syntax (Get Information About a SELECT
) - 7.2.2. Estimating Query Performance
- 7.2.3. Speed of
SELECT
Queries - 7.2.4. How MySQL Optimizes
WHERE
Clauses - 7.2.5. Range Optimization
- 7.2.6. Index Merge Optimization
- 7.2.7. How MySQL Optimizes
IS NULL
- 7.2.8. How MySQL Optimizes
DISTINCT
- 7.2.9. How MySQL Optimizes
LEFT JOIN
and RIGHT JOIN
- 7.2.10. How MySQL Optimizes Nested Joins
- 7.2.11. How MySQL Simplifies Outer Joins
- 7.2.12. How MySQL Optimizes
ORDER BY
- 7.2.13. How MySQL Optimizes
GROUP BY
- 7.2.14. How MySQL Optimizes
LIMIT
- 7.2.15. How to Avoid Table Scans
- 7.2.16. Speed of
INSERT
Statements - 7.2.17. Speed of
UPDATE
Statements - 7.2.18. Speed of
DELETE
Statements - 7.2.19. Other Optimization Tips
- 7.3. Locking Issues
- 7.3.1. Locking Methods
- 7.3.2. Table Locking Issues
- 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 Counts Open Tables
- 7.4.9. How MySQL Opens and Closes Tables
- 7.4.10. 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. How Compiling and Linking Affects the Speed of MySQL
- 7.5.5. How MySQL Uses Memory
- 7.5.6. How MySQL Uses DNS
- 7.6. Disk Issues
- 7.6.1. Using Symbolic Links
- 8. Client and Utility Programs
- 8.1. Overview of the Client-Side Scripts and Utilities
- 8.2. myisampack — Generate Compressed, Read-Only MyISAM Tables
- 8.3. mysql — The MySQL Command-Line Tool
- 8.3.1. Options
- 8.3.2. mysql Commands
- 8.3.3. Executing SQL Statements from a Text File
- 8.3.4. mysql Tips
- 8.4. mysqlaccess — Client for Checking Access Privileges
- 8.5. mysqladmin — Client for Administering a MySQL Server
- 8.6. mysqlbinlog — Utility for Processing Binary Log Files
- 8.7. mysqlcheck — A Table Maintenance and Repair Program
- 8.8. mysqldump — A Database Backup Program
- 8.9. mysqlhotcopy — A Database Backup Program
- 8.10. mysqlimport — A Data Import Program
- 8.11. mysqlshow — Display Database, Table, and Column Information
- 8.12. myisamlog — Display Contents of MyISAM Log File
- 8.13. perror — Explain Error Codes
- 8.14. replace — A String-Replacement Utility
- 8.15. mysql_zap — Kill Processes That Match a Pattern
- 9. Language Structure
- 9.1. Literal Values
- 9.1.1. Strings
- 9.1.2. Numbers
- 9.1.3. Hexadecimal Values
- 9.1.4. Boolean Values
- 9.1.5. Bit-Field Values
- 9.1.6.
NULL
Values
- 9.2. Database, Table, Index, Column, and Alias Names
- 9.2.1. Identifier Qualifiers
- 9.2.2. Identifier Case Sensitivity
- 9.3. User Variables
- 9.4. System Variables
- 9.4.1. Structured System Variables
- 9.5. Comment Syntax
- 9.6. Treatment of Reserved Words in MySQL
- 10. Character Set Support
- 10.1. Character Sets and Collations in General
- 10.2. Character Sets and Collations in MySQL
- 10.3. Determining the Default Character Set and Collation
- 10.3.1. Server Character Set and Collation
- 10.3.2. Database Character Set and Collation
- 10.3.3. Table Character Set and Collation
- 10.3.4. Column Character Set and Collation
- 10.3.5. Examples of Character Set and Collation Assignment
- 10.3.6. Connection Character Sets and Collations
- 10.3.7. Character String Literal Character Set and Collation
- 10.3.8. Using
COLLATE
in SQL Statements - 10.3.9.
COLLATE
Clause Precedence - 10.3.10.
BINARY
Operator - 10.3.11. Some Special Cases Where the Collation Determination Is Tricky
- 10.3.12. Collations Must Be for the Right Character Set
- 10.3.13. An Example of the Effect of Collation
- 10.4. Operations Affected by Character Set Support
- 10.4.1. Result Strings
- 10.4.2.
CONVERT()
- 10.4.3.
CAST()
- 10.4.4.
SHOW
Statements
- 10.5. Unicode Support
- 10.6. UTF8 for Metadata
- 10.7. Compatibility with Other DBMSs
- 10.8. New Character Set Configuration File Format
- 10.9. National Character Set
- 10.10. Character Sets and Collations That MySQL Supports
- 10.10.1. Unicode Character Sets
- 10.10.2. West European Character Sets
- 10.10.3. Central European Character Sets
- 10.10.4. South European and Middle East Character Sets
- 10.10.5. Baltic Character Sets
- 10.10.6. Cyrillic Character Sets
- 10.10.7. Asian Character Sets
- 11. Column Types
- 11.1. Column Type Overview
- 11.1.1. Overview of Numeric Types
- 11.1.2. Overview of Date and Time Types
- 11.1.3. Overview of String Types
- 11.2. Numeric Types
- 11.3. Date and Time Types
- 11.3.1. The
DATETIME
, DATE
, and TIMESTAMP
Types - 11.3.2. The
TIME
Type - 11.3.3. The
YEAR
Type - 11.3.4. Y2K Issues and Date Types
- 11.4. String Types
- 11.4.1. The
CHAR
and VARCHAR
Types - 11.4.2. The
BINARY
and VARBINARY
Types - 11.4.3. The
BLOB
and TEXT
Types - 11.4.4. The
ENUM
Type - 11.4.5. The
SET
Type
- 11.5. Column Type Storage Requirements
- 11.6. Choosing the Right Type for a Column
- 11.7. Using Column Types from Other Database Engines
- 12. Functions and Operators
- 12.1. Operators
- 12.1.1. Operator Precedence
- 12.1.2. Parentheses
- 12.1.3. Comparison Functions and Operators
- 12.1.4. Logical Operators
- 12.2. Control Flow Functions
- 12.3. String Functions
- 12.3.1. String Comparison Functions
- 12.4. Numeric Functions
- 12.4.1. Arithmetic Operators
- 12.4.2. Mathematical Functions
- 12.5. Date and Time Functions
- 12.6. What Calendar Is Used By MySQL?
- 12.7. Full-Text Search Functions
- 12.7.1. Boolean Full-Text Searches
- 12.7.2. Full-Text Searches with Query Expansion
- 12.7.3. Full-Text Stopwords
- 12.7.4. Full-Text Restrictions
- 12.7.5. Fine-Tuning MySQL Full-Text Search
- 12.8. Cast Functions and Operators
- 12.9. Other Functions
- 12.9.1. Bit Functions
- 12.9.2. Encryption Functions
- 12.9.3. Information Functions
- 12.9.4. Miscellaneous Functions
- 12.10. Functions and Modifiers for Use with
GROUP BY
Clauses - 12.10.1.
GROUP BY
(Aggregate) Functions - 12.10.2.
GROUP BY
Modifiers - 12.10.3.
GROUP BY
with Hidden Fields
- 13. SQL Statement Syntax
- 13.1. Data Definition Statements
- 13.1.1.
ALTER DATABASE
Syntax - 13.1.2.
ALTER TABLE
Syntax - 13.1.3.
CREATE DATABASE
Syntax - 13.1.4.
CREATE INDEX
Syntax - 13.1.5.
CREATE TABLE
Syntax - 13.1.6.
DROP DATABASE
Syntax - 13.1.7.
DROP INDEX
Syntax - 13.1.8.
DROP TABLE
Syntax - 13.1.9.
RENAME TABLE
Syntax
- 13.2. Data Manipulation Statements
- 13.2.1.
DELETE
Syntax - 13.2.2.
DO
Syntax - 13.2.3.
HANDLER
Syntax - 13.2.4.
INSERT
Syntax - 13.2.5.
LOAD DATA INFILE
Syntax - 13.2.6.
REPLACE
Syntax - 13.2.7.
SELECT
Syntax - 13.2.8. Subquery Syntax
- 13.2.9.
TRUNCATE
Syntax - 13.2.10.
UPDATE
Syntax
- 13.3. MySQL Utility Statements
- 13.3.1.
DESCRIBE
Syntax (Get Information About Columns) - 13.3.2.
USE
Syntax
- 13.4. MySQL Transactional and Locking Statements
- 13.4.1.
START TRANSACTION
, COMMIT
, and ROLLBACK
Syntax - 13.4.2. Statements That Cannot Be Rolled Back
- 13.4.3. Statements That Cause an Implicit Commit
- 13.4.4.
SAVEPOINT
and ROLLBACK TO SAVEPOINT
Syntax - 13.4.5.
LOCK TABLES
and UNLOCK TABLES
Syntax - 13.4.6.
SET TRANSACTION
Syntax - 13.4.7. XA Transactions
- 13.5. Database Administration Statements
- 13.5.1. Account Management Statements
- 13.5.2. Table Maintenance Statements
- 13.5.3.
SET
Syntax - 13.5.4.
SHOW
Syntax - 13.5.5. Other Administrative Statements
- 13.6. Replication Statements
- 13.6.1. SQL Statements for Controlling Master Servers
- 13.6.2. SQL Statements for Controlling Slave Servers
- 13.7. SQL Syntax for Prepared Statements
- 14. Storage Engines and Table Types
- 14.1. The
MyISAM
Storage Engine - 14.1.1.
MyISAM
Startup Options - 14.1.2. Space Needed for Keys
- 14.1.3.
MyISAM
Table Storage Formats - 14.1.4.
MyISAM
Table Problems
- 14.2. The
MERGE
Storage Engine - 14.2.1.
MERGE
Table Problems
- 14.3. The
MEMORY
(HEAP
) Storage Engine - 14.4. The
BDB
(BerkeleyDB
) Storage Engine - 14.4.1. Operating Systems Supported by
BDB
- 14.4.2. Installing
BDB
- 14.4.3.
BDB
Startup Options - 14.4.4. Characteristics of
BDB
Tables - 14.4.5. Things We Need to Fix for
BDB
- 14.4.6. Restrictions on
BDB
Tables - 14.4.7. Errors That May Occur When Using
BDB
Tables
- 14.5. The
EXAMPLE
Storage Engine - 14.6. The
FEDERATED
Storage Engine - 14.6.1. Installing the
FEDERATED
Storage Engine - 14.6.2. Description of the
FEDERATED
Storage Engine - 14.6.3. How to use
FEDERATED
Tables - 14.6.4. Limitations of the
FEDERATED
Storage Engine
- 14.7. The
ARCHIVE
Storage Engine - 14.8. The
CSV
Storage Engine - 14.9. The
BLACKHOLE
Storage Engine
- 15. The
InnoDB
Storage Engine - 15.1.
InnoDB
Overview - 15.2.
InnoDB
Contact Information - 15.3.
InnoDB
Configuration - 15.4.
InnoDB
Startup Options - 15.5. Creating the
InnoDB
Tablespace - 15.5.1. Dealing with
InnoDB
Initialization Problems
- 15.6. Creating
InnoDB
Tables - 15.6.1. How to Use Transactions in
InnoDB
with Different APIs - 15.6.2. Converting
MyISAM
Tables to InnoDB
- 15.6.3. How an
AUTO_INCREMENT
Column Works in InnoDB
- 15.6.4.
FOREIGN KEY
Constraints - 15.6.5.
InnoDB
and MySQL Replication - 15.6.6. Using Per-Table Tablespaces
- 15.7. Adding and Removing
InnoDB
Data and Log Files - 15.8. Backing Up and Recovering an
InnoDB
Database - 15.8.1. Forcing Recovery
- 15.8.2. Checkpoints
- 15.9. Moving an
InnoDB
Database to Another Machine - 15.10.
InnoDB
Transaction Model and Locking - 15.10.1.
InnoDB
Lock Modes - 15.10.2.
InnoDB
and AUTOCOMMIT
- 15.10.3.
InnoDB
and TRANSACTION ISOLATION LEVEL
- 15.10.4. Consistent Non-Locking Read
- 15.10.5. Locking Reads
SELECT ... FOR UPDATE
and SELECT ... LOCK IN SHARE MODE
- 15.10.6. Next-Key Locking: Avoiding the Phantom Problem
- 15.10.7. An Example of How the Consistent Read Works in
InnoDB
- 15.10.8. Locks Set by Different SQL Statements in
InnoDB
- 15.10.9. When Does MySQL Implicitly Commit or Roll Back a Transaction?
- 15.10.10. Deadlock Detection and Rollback
- 15.10.11. How to Cope with Deadlocks
- 15.11.
InnoDB
Performance Tuning Tips - 15.11.1.
SHOW INNODB STATUS
and the InnoDB
Monitors
- 15.12. Implementation of Multi-Versioning
- 15.13. Table and Index Structures
- 15.13.1. Physical Structure of an Index
- 15.13.2. Insert Buffering
- 15.13.3. Adaptive Hash Indexes
- 15.13.4. Physical Record Structure
- 15.14. File Space Management and Disk I/O
- 15.14.1. Disk I/O
- 15.14.2. Using Raw Devices for the Tablespace
- 15.14.3. File Space Management
- 15.14.4. Defragmenting a Table
- 15.15. InnoDB Error Handling
- 15.15.1.
InnoDB
Error Codes - 15.15.2. Operating System Error Codes
- 15.16. Restrictions on
InnoDB
Tables - 15.17.
InnoDB
Troubleshooting - 15.17.1. Troubleshooting
InnoDB
Data Dictionary Operations
- 16. MySQL Cluster
- 16.1. MySQL Cluster Overview
- 16.2. Basic MySQL Cluster Concepts
- 16.3. Simple Multi-Computer How-To
- 16.3.1. Hardware, Software, and Networking
- 16.3.2. Installation
- 16.3.3. Configuration
- 16.3.4. Initial Startup
- 16.3.5. Loading Sample Data and Performing Queries
- 16.3.6. Safe Shutdown and Restart
- 16.4. MySQL Cluster Configuration
- 16.4.1. Building MySQL Cluster from Source Code
- 16.4.2. Installing the Software
- 16.4.3. Quick Test Setup of MySQL Cluster
- 16.4.4. Configuration File
- 16.5. Process Management in MySQL Cluster
- 16.5.1. MySQL Server Process Usage for MySQL Cluster
- 16.5.2. ndbd, the Storage Engine Node Process
- 16.5.3. ndb_mgmd, the Management Server Process
- 16.5.4. ndb_mgm, the Management Client Process
- 16.5.5. Command Options for MySQL Cluster Processes
- 16.6. Management of MySQL Cluster
- 16.6.1. MySQL Cluster Startup Phases
- 16.6.2. Commands in the Management Client
- 16.6.3. Event Reports Generated in MySQL Cluster
- 16.6.4. Single User Mode
- 16.6.5. On-line Backup of MySQL Cluster
- 16.7. Using High-Speed Interconnects with MySQL Cluster
- 16.7.1. Configuring MySQL Cluster to use SCI Sockets
- 16.7.2. Understanding the Impact of Cluster Interconnects
- 16.8. Known Limitations of MySQL Cluster
- 16.9. MySQL Cluster Development Roadmap
- 16.9.1. MySQL Cluster Changes in MySQL 5.0
- 16.9.2. MySQL 5.1 Development Roadmap for MySQL Cluster
- 16.10. MySQL Cluster FAQ
- 16.11. MySQL Cluster Glossary
- 17. Spatial Extensions in MySQL
- 17.1. Introduction
- 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
- 17.7.1. GIS Features That Are Not Yet Implemented
- 18. Stored Procedures and Functions
- 18.1. Stored Procedures and the Grant Tables
- 18.2. Stored Procedure Syntax
- 18.2.1.
CREATE PROCEDURE
and CREATE FUNCTION
- 18.2.2.
ALTER PROCEDURE
and ALTER FUNCTION
- 18.2.3.
DROP PROCEDURE
and DROP FUNCTION
- 18.2.4.
SHOW CREATE PROCEDURE
and SHOW CREATE FUNCTION
- 18.2.5.
SHOW PROCEDURE STATUS
and SHOW FUNCTION STATUS
- 18.2.6.
CALL
Statement - 18.2.7.
BEGIN ... END
Compound Statement - 18.2.8.
DECLARE
Statement - 18.2.9. Variables in Stored Procedures
- 18.2.10. Conditions and Handlers
- 18.2.11. Cursors
- 18.2.12. Flow Control Constructs
- 18.3. Stored Procedures, Functions, Triggers, and Replication: Frequently Asked Questions
- 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. Views
- 20.1.
ALTER VIEW
Syntax - 20.2.
CREATE VIEW
Syntax - 20.3.
DROP VIEW
Syntax - 20.4.
SHOW CREATE VIEW
Syntax
- 21. The
INFORMATION_SCHEMA
Information Database - 21.1.
INFORMATION_SCHEMA
Tables - 21.1.1. The
INFORMATION_SCHEMA SCHEMATA
Table - 21.1.2. The
INFORMATION_SCHEMA TABLES
Table - 21.1.3. The
INFORMATION_SCHEMA COLUMNS
Table - 21.1.4. The
INFORMATION_SCHEMA STATISTICS
Table - 21.1.5. The
INFORMATION_SCHEMA USER_PRIVILEGES
Table - 21.1.6. The
INFORMATION_SCHEMA SCHEMA_PRIVILEGES
Table - 21.1.7. The
INFORMATION_SCHEMA TABLE_PRIVILEGES
Table - 21.1.8. The
INFORMATION_SCHEMA COLUMN_PRIVILEGES
Table - 21.1.9. The
INFORMATION_SCHEMA CHARACTER_SETS
Table - 21.1.10. The
INFORMATION_SCHEMA COLLATIONS
Table - 21.1.11. The
INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY
Table - 21.1.12. The
INFORMATION_SCHEMA TABLE_CONSTRAINTS
Table - 21.1.13. The
INFORMATION_SCHEMA KEY_COLUMN_USAGE
Table - 21.1.14. The
INFORMATION_SCHEMA ROUTINES
Table - 21.1.15. The
INFORMATION_SCHEMA VIEWS
Table - 21.1.16. The
INFORMATION_SCHEMA TRIGGERS
Table - 21.1.17. Other
INFORMATION_SCHEMA
Tables
- 21.2. Extensions to
SHOW
Statements
- 22. Precision Math
- 22.1. Types of Numeric Values
- 22.2.
DECIMAL
Data Type Changes - 22.3. Expression Handling
- 22.4. Rounding Behavior
- 22.5. Precision Math Examples
- 23. APIs and Libraries
- 23.1. libmysqld, the Embedded MySQL Server Library
- 23.1.1. Overview of the Embedded MySQL Server Library
- 23.1.2. Compiling Programs with
libmysqld
- 23.1.3. Restrictions when using the Embedded MySQL Server
- 23.1.4. Options with the Embedded Server
- 23.1.5. Things left to do in Embedded Server (TODO)
- 23.1.6. Embedded Server Examples
- 23.1.7. Licensing the Embedded Server
- 23.2. MySQL C API
- 23.2.1. C API Data types
- 23.2.2. C API Function Overview
- 23.2.3. C API Function Descriptions
- 23.2.4. C API Prepared Statements
- 23.2.5. C API Prepared Statement Data types
- 23.2.6. C API Prepared Statement Function Overview
- 23.2.7. C API Prepared Statement Function Descriptions
- 23.2.8. C API Prepared statement problems
- 23.2.9. C API Handling of Multiple Query Execution
- 23.2.10. C API Handling of Date and Time Values
- 23.2.11. C API Threaded Function Descriptions
- 23.2.12. C API Embedded Server Function Descriptions
- 23.2.13. Common questions and problems when using the C API
- 23.2.14. Building Client Programs
- 23.2.15. How to Make a Threaded Client
- 23.3. MySQL PHP API
- 23.3.1. Common Problems with MySQL and PHP
- 23.4. MySQL Perl API
- 23.5. MySQL C++ API
- 23.5.1. Borland C++
- 23.6. MySQL Python API
- 23.7. MySQL Tcl API
- 23.8. MySQL Eiffel Wrapper
- 23.9. MySQL Program Development Utilities
- 23.9.1. msql2mysql — Convert mSQL Programs for Use with MySQL
- 23.9.2. mysql_config — Get Compile Options for Compiling Clients
- 24. Connectors
- 24.1. MySQL Connector/ODBC
- 24.1.1. Introduction to MyODBC
- 24.1.2. General Information About ODBC and MyODBC
- 24.1.3. How to Install MyODBC
- 24.1.4. Installing MyODBC from a Binary Distribution on Windows
- 24.1.5. Installing MyODBC from a Binary Distribution on Unix
- 24.1.6. Installing MyODBC from a Source Distribution on Windows
- 24.1.7. Installing MyODBC from a Source Distribution on Unix
- 24.1.8. Installing MyODBC from the BitKeeper Development Source Tree
- 24.1.9. MyODBC Configuration
- 24.1.10. MyODBC Connection-Related Issues
- 24.1.11. MyODBC and Microsoft Access
- 24.1.12. MyODBC and Microsoft VBA and ASP
- 24.1.13. MyODBC and Third-Party ODBC Tools
- 24.1.14. MyODBC General Functionality
- 24.1.15. Basic MyODBC Application Steps
- 24.1.16. MyODBC API Reference
- 24.1.17. MyODBC Data Types
- 24.1.18. MyODBC Error Codes
- 24.1.19. MyODBC With VB: ADO, DAO and RDO
- 24.1.20. MyODBC with Microsoft .NET
- 24.1.21. Credits
- 24.2. MySQL Connector/NET
- 24.2.1. Introduction
- 24.2.2. Downloading and Installing MySQL Connector/NET
- 24.2.3. Connector/NET Architecture
- 24.2.4. Using MySQL Connector/NET
- 24.2.5. MySQL Connector/NET Change History
- 24.3. MySQL Connector/J
- 24.3.1. Basic JDBC concepts
- 24.3.2. Installing Connector/J
- 24.3.3. JDBC Reference
- 24.3.4. Using Connector/J with J2EE and Other Java Frameworks
- 24.3.5. Diagnosing Connector/J Problems
- 24.3.6. Changelog
- 24.4. MySQL Connector/MXJ
- 24.4.1. Introduction
- 24.4.2. Support Platforms:
- 24.4.3. JUnit Test Requirements
- 24.4.4. Running the JUnit Tests
- 24.4.5. Running as part of the JDBC Driver
- 24.4.6. Running within a Java Object
- 24.4.7. The MysqldResource API
- 24.4.8. Running within a JMX Agent (custom)
- 24.4.9. Deployment in a standard JMX Agent environment (JBoss)
- 24.4.10. Installation
- 25. Extending MySQL
- 25.1. MySQL Internals
- 25.1.1. MySQL Threads
- 25.1.2. MySQL Test Suite
- 25.2. Adding New Functions to MySQL
- 25.2.1. Features of the User-Defined Function Interface
- 25.2.2.
CREATE FUNCTION/DROP FUNCTION
Syntax - 25.2.3. Adding a New User-Defined Function
- 25.2.4. Adding a New Native Function
- 25.3. Adding New Procedures to MySQL
- 25.3.1. Procedure Analyse
- 25.3.2. Writing a Procedure
- A. Problems and Common Errors
- A.1. How to Determine What Is Causing a Problem
- A.2. Common Errors When Using MySQL Programs
- A.2.1.
Access denied
- A.2.2.
Can't connect to [local] MySQL server
- A.2.3.
Client does not support authentication protocol
- A.2.4. Password Fails When Entered Interactively
- A.2.5.
Host 'host_name
' is blocked
- A.2.6.
Too many connections
- A.2.7.
Out of memory
- A.2.8.
MySQL server has gone away
- A.2.9.
Packet too large
- A.2.10. Communication Errors and Aborted Connections
- A.2.11.
The table is full
- A.2.12.
Can't create/write to file
- A.2.13.
Commands out of sync
- A.2.14.
Ignoring user
- A.2.15.
Table 'tbl_name
' doesn't exist
- A.2.16.
Can't initialize character set
- A.2.17. File Not Found
- A.3. Installation-Related Issues
- A.3.1. Problems Linking to the MySQL Client Library
- A.3.2. How to Run MySQL as a Normal User
- A.3.3. Problems with File Permissions
- A.4. Administration-Related Issues
- A.4.1. How to Reset the Root Password
- A.4.2. What to Do If MySQL Keeps Crashing
- A.4.3. How MySQL Handles a Full Disk
- A.4.4. Where MySQL Stores Temporary Files
- A.4.5. How to Protect or Change the MySQL Socket File
/tmp/mysql.sock
- A.4.6. Time Zone Problems
- A.5. Query-Related Issues
- A.5.1. Case Sensitivity in Searches
- A.5.2. Problems Using
DATE
Columns - A.5.3. Problems with
NULL
Values - A.5.4. Problems with Column Aliases
- A.5.5. Rollback Failure for Non-Transactional Tables
- A.5.6. Deleting Rows from Related Tables
- A.5.7. Solving Problems with No Matching Rows
- A.5.8. Problems with Floating-Point Comparisons
- A.6. Optimizer-Related Issues
- A.7. Table Definition-Related Issues
- A.7.1. Problems with
ALTER TABLE
- A.7.2. How to Change the Order of Columns in a Table
- A.7.3.
TEMPORARY TABLE
Problems
- A.8. Known Issues in MySQL
- A.8.1. Open Issues in MySQL
- B. Error Codes and Messages
- B.1. Server Error Codes and Messages
- B.2. Client Error Codes and Messages
- C. Credits
- C.1. Developers at MySQL AB
- C.2. Contributors to MySQL
- C.3. Documenters and translators
- C.4. Libraries used by and included with MySQL
- C.5. Packages that support MySQL
- C.6. Tools that were used to create MySQL
- C.7. Supporters of MySQL
- D. MySQL Change History
- D.1. Changes in release 5.0.x (Production)
- D.1.1. Changes in release 5.0.16 (Not yet released)
- D.1.2. Changes in release 5.0.15 (19 October 2005: Production)
- D.1.3. Changes in release 5.0.14 (Not released)
- D.1.4. Changes in release 5.0.13 (22 Sept 2005: Release Candidate)
- D.1.5. Changes in release 5.0.12 (02 Sept 2005)
- D.1.6. Changes in release 5.0.11 (06 Aug 2005)
- D.1.7. Changes in release 5.0.10 (27 July 2005)
- D.1.8. Changes in release 5.0.9 (15 July 2005)
- D.1.9. Changes in release 5.0.8 (Not released)
- D.1.10. Changes in release 5.0.7 (10 June 2005)
- D.1.11. Changes in release 5.0.6 (26 May 2005)
- D.1.12. Changes in release 5.0.5 (Not released)
- D.1.13. Changes in release 5.0.4 (16 Apr 2005)
- D.1.14. Changes in release 5.0.3 (23 Mar 2005: Beta)
- D.1.15. Changes in release 5.0.2 (01 Dec 2004)
- D.1.16. Changes in release 5.0.1 (27 Jul 2004)
- D.1.17. Changes in release 5.0.0 (22 Dec 2003: Alpha)
- D.2.
MySQL Cluster
Change History - D.2.1. MySQL Cluster-5.0.7 (Not yet released)
- D.2.2. MySQL Cluster-5.0.6 (26 May 2005)
- D.2.3. MySQL Cluster-5.0.5 (Not released)
- D.2.4. MySQL Cluster-5.0.4 (16 Apr 2005)
- D.2.5. MySQL Cluster-5.0.3 (23 Mar 2005: Beta)
- D.2.6. MySQL Cluster-5.0.1 (27 Jul 2004)
- D.2.7. MySQL Cluster-4.1.13 (15 Jul 2005)
- D.2.8. MySQL Cluster-4.1.12 (13 May 2005)
- D.2.9. MySQL Cluster-4.1.11 (01 Apr 2005)
- D.2.10. MySQL Cluster-4.1.10 (12 Feb 2005)
- D.2.11. MySQL Cluster-4.1.9 (13 Jan 2005)
- D.2.12. MySQL Cluster-4.1.8 (14 Dec 2004)
- D.2.13. MySQL Cluster-4.1.7 (23 Oct 2004)
- D.2.14. MySQL Cluster-4.1.6 (10 Oct 2004)
- D.2.15. MySQL Cluster-4.1.5 (16 Sep 2004)
- D.2.16. MySQL Cluster-4.1.4 (31 Aug 2004)
- D.2.17. MySQL Cluster-4.1.3 (28 Jun 2004)
- D.3. Changes in MyODBC
- D.3.1. Changes in MyODBC 3.51.12
- D.3.2. Changes in MyODBC 3.51.11
- E. Porting to Other Systems
- E.1. Debugging a MySQL Server
- E.1.1. Compiling MySQL for Debugging
- E.1.2. Creating Trace Files
- E.1.3. Debugging mysqld under gdb
- E.1.4. Using a Stack Trace
- E.1.5. Using Log Files to Find Cause of Errors in mysqld
- E.1.6. Making a Test Case If You Experience Table Corruption
- E.2. Debugging a MySQL Client
- E.3. The DBUG Package
- E.4. Comments about RTS Threads
- E.5. Differences Between Thread Packages
- F. Environment Variables
- G. MySQL Regular Expressions
- H. Limits in MySQL
- H.1. Limits of Joins
- I. Feature Restrictions
- I.1. Restrictions on Stored Routines and Triggers
- I.2. Restrictions on Server-Side Cursors
- I.3. Restrictions on Subqueries
- I.4. Restrictions on Views
- I.5. Restrictions on XA Transactions
- J. GNU General Public License
- K. MySQL FLOSS License Exception
- Index