Приглашаем посетить
Документация на MySQL 4.0 (english)
Table of Contents
*****************
General Information
About This Manual
Conventions Used in This Manual
What Is MySQL?
History of MySQL
The Main Features of MySQL
How Stable Is MySQL?
How Big Can MySQL Tables Be?
Year 2000 Compliance
What Is MySQL AB?
The Business Model and Services of MySQL AB
Support
Training and Certification
Consulting
Commercial Licenses
Partnering
Contact Information
MySQL Support and Licensing
Support Offered by MySQL AB
Copyrights and Licenses Used by MySQL
MySQL Licenses
Using the MySQL Software Under a Commercial License
Using the MySQL Software for Free Under GPL
MySQL AB Logos and Trademarks
The Original MySQL Logo
MySQL Logos that may be Used Without Written Permission
When do you need a Written Permission to use MySQL Logos?
MySQL AB Partnership Logos
Using the word `MySQL' in Printed Text or Presentations
Using the word `MySQL' in Company and Product Names
MySQL Development Roadmap
MySQL 4.0 in a Nutshell
Features Available in MySQL 4.0
Embedded MySQL Server
MySQL 4.1 in a Nutshell
Features Available in MySQL 4.1
Stepwise Rollout
Ready for Immediate Development Use
MySQL 5.0, The Next Development Release
MySQL Information Sources
MySQL Mailing Lists
The MySQL Mailing Lists
Asking Questions or Reporting Bugs
How to Report Bugs or Problems
Guidelines for Answering Questions on the Mailing List
MySQL Community Support on IRC (Internet Relay Chat)
MySQL Standards Compliance
What Standards Does MySQL Follow?
Running MySQL in ANSI Mode
MySQL Extensions to the SQL-92 Standard
MySQL Differences Compared to SQL-92
Subqueries
`SELECT INTO TABLE'
Transactions and Atomic Operations
Stored Procedures and Triggers
Foreign Keys
Views
`--' as the Start of a Comment
How MySQL deals with constraints
Constraint PRIMARY KEY / UNIQUE
Constraint `NOT NULL' and `DEFAULT' values
Constraint `ENUM' and `SET'
Known Errors and Design Deficiencies in MySQL
Errors in 3.23 Fixed in a Later MySQL Version
Open Bugs / Design Deficiencies in MySQL
MySQL and the Future (The TODO)
New Features Planned For 4.1
New Features Planned For 5.0
New Features Planned For 5.1
New Features Planned for the Near Future
New Features Planned for the Mid-Term Future
New Features We Don't Plan to Do
Installing MySQL
Quick Standard Installation of MySQL
Installing MySQL on Windows
Installing the Binaries
Preparing the Windows MySQL Environment
Starting the Server for the First Time
Installing MySQL on Linux
Installing MySQL on Mac OS X
Installing MySQL on NetWare
Installing the MySQL for NetWare Binaries
General Installation Issues
How to Get MySQL
Verifying Package Integrity Using `MD5 Checksums' or `GnuPG'
Operating Systems Supported by MySQL
Which MySQL Version to Use
Installation Layouts
How and When Updates Are Released
Release Philosophy - No Known Bugs in Releases
MySQL Binaries Compiled by MySQL AB
Installing a MySQL Binary Distribution
Installing a MySQL Source Distribution
Quick Installation Overview
Applying Patches
Typical `configure' Options
Installing from the Development Source Tree
Problems Compiling MySQL?
MIT-pthreads Notes
Windows Source Distribution
Post-installation Setup and Testing
Problems Running `mysql_install_db'
Problems Starting the MySQL Server
Starting and Stopping MySQL Automatically
Upgrading/Downgrading MySQL
Upgrading From Version 4.0 to 4.1
Upgrading From Version 3.23 to 4.0
Upgrading From Version 3.22 to 3.23
Upgrading from Version 3.21 to 3.22
Upgrading from Version 3.20 to 3.21
Upgrading the Grant Tables
Upgrading to Another Architecture
Upgrading MySQL under Windows
Operating System Specific Notes
Windows Notes
Starting MySQL on Windows 95, 98, or Me
Starting MySQL on Windows NT, 2000, or XP
Running MySQL on Windows
Connecting to MySQL Remotely from Windows with SSH
Distributing Data Across Different Disks on Windows
Compiling MySQL Clients on Windows
MySQL for Windows Compared to Unix MySQL
Linux Notes (All Linux Versions)
Linux Notes for Binary Distributions
Linux x86 Notes
Linux SPARC Notes
Linux Alpha Notes
Linux PowerPC Notes
Linux MIPS Notes
Linux IA-64 Notes
Solaris Notes
Solaris 2.7/2.8 Notes
Solaris x86 Notes
BSD Notes
FreeBSD Notes
NetBSD Notes
OpenBSD 2.5 Notes
OpenBSD 2.8 Notes
BSD/OS Version 2.x Notes
BSD/OS Version 3.x Notes
BSD/OS Version 4.x Notes
Mac OS X Notes
Mac OS X 10.x
Mac OS X Server 1.2 (Rhapsody)
Other Unix Notes
HP-UX Notes for Binary Distributions
HP-UX Version 10.20 Notes
HP-UX Version 11.x Notes
IBM-AIX notes
SunOS 4 Notes
Alpha-DEC-UNIX Notes (Tru64)
Alpha-DEC-OSF/1 Notes
SGI Irix Notes
SCO Notes
SCO UnixWare Version 7.1.x Notes
OS/2 Notes
Novell NetWare Notes
BeOS Notes
Perl Installation Comments
Installing Perl on Unix
Installing ActiveState Perl on Windows
Problems Using the Perl `DBI'/`DBD' Interface
MySQL Tutorial
Connecting to and Disconnecting from the Server
Entering Queries
Creating and Using a Database
Creating and Selecting a Database
Creating a Table
Loading Data into a Table
Retrieving Information from a Table
Selecting All Data
Selecting Particular Rows
Selecting Particular Columns
Sorting Rows
Date Calculations
Working with `NULL' Values
Pattern Matching
Counting Rows
Using More Than one Table
Getting Information About Databases and Tables
Using `mysql' in Batch Mode
Examples of Common Queries
The Maximum Value for a Column
The Row Holding the Maximum of a Certain Column
Maximum of Column per Group
The Rows Holding the Group-wise Maximum of a Certain Field
Using User Variables
Using Foreign Keys
Searching on Two Keys
Calculating Visits Per Day
Using `AUTO_INCREMENT'
Queries from the Twin Project
Find All Non-distributed Twins
Show a Table of Twin Pair Status
Using MySQL with Apache
Database Administration
Configuring MySQL
`mysqld' Command-line Options
`my.cnf' Option Files
Running Multiple MySQL Servers on the Same Machine
Running Multiple Servers on Windows
Running Multiple Servers on Unix
Using Client Programs in a Multiple-Server Environment
General Security Issues and the MySQL Access Privilege System
General Security Guidelines
How to Make MySQL Secure Against Crackers
Startup Options for `mysqld' Concerning Security
Security issues with `LOAD DATA LOCAL'
What the Privilege System Does
How the Privilege System Works
Privileges Provided by MySQL
Connecting to the MySQL Server
Access Control, Stage 1: Connection Verification
Access Control, Stage 2: Request Verification
Password Hashing in MySQL 4.1
Causes of `Access denied' Errors
MySQL User Account Management
`GRANT' and `REVOKE' Syntax
MySQL User Names and Passwords
When Privilege Changes Take Effect
Setting Up the Initial MySQL Privileges
Adding New Users to MySQL
Deleting Users from MySQL
Limiting user resources
Setting Up Passwords
Keeping Your Password Secure
Using Secure Connections
Basics
Requirements
Setting Up SSL Certificates for MySQL
SSL `GRANT' Options
SSL Command-line Options
Disaster Prevention and Recovery
Database Backups
`BACKUP TABLE' Syntax
`RESTORE TABLE' Syntax
`CHECK TABLE' Syntax
`REPAIR TABLE' Syntax
Using `myisamchk' for Table Maintenance and Crash Recovery
`myisamchk' Invocation Syntax
General Options for `myisamchk'
Check Options for `myisamchk'
Repair Options for myisamchk
Other Options for `myisamchk'
`myisamchk' Memory Usage
Using `myisamchk' for Crash Recovery
How to Check Tables for Errors
How to Repair Tables
Table Optimisation
Setting Up a Table Maintenance Regimen
Getting Information About a Table
Database Administration Language Reference
`OPTIMIZE TABLE' Syntax
`ANALYZE TABLE' Syntax
`FLUSH' Syntax
`RESET' Syntax
`PURGE MASTER LOGS' Syntax
`KILL' Syntax
`SHOW' Syntax
Retrieving information about Database, Tables, Columns, and Indexes
`SHOW TABLE STATUS'
`SHOW STATUS'
`SHOW VARIABLES'
`SHOW [BDB] LOGS'
`SHOW PROCESSLIST'
`SHOW GRANTS'
`SHOW CREATE TABLE'
`SHOW WARNINGS | ERRORS'
`SHOW TABLE TYPES'
`SHOW PRIVILEGES'
MySQL Localisation and International Usage
The Character Set Used for Data and Sorting
German character set
Non-English Error Messages
Adding a New Character Set
The Character Definition Arrays
String Collating Support
Multi-byte Character Support
Problems With Character Sets
MySQL Server-Side Scripts and Utilities
Overview of the Server-Side Scripts and Utilities
`mysqld_safe', The Wrapper Around `mysqld'
`mysqld_multi', A Program for Managing Multiple MySQL Servers
`myisampack', The MySQL Compressed Read-only Table Generator
`mysqld-max', An Extended `mysqld' Server
MySQL Client-Side Scripts and Utilities
Overview of the Client-Side Scripts and Utilities
`mysql', The Command-line Tool
`mysqladmin', Administrating a MySQL Server
`mysqlbinlog', Executing the queries from a binary log
Using `mysqlcheck' for Table Maintenance and Crash Recovery
`mysqldump', Dumping Table Structure and Data
`mysqlhotcopy', Copying MySQL Databases and Tables
`mysqlimport', Importing Data from Text Files
`mysqlshow', Showing Databases, Tables, and Columns
`mysql_config', Get compile options for compiling clients
`perror', Explaining Error Codes
How to Run SQL Commands from a Text File
The MySQL Log Files
The Error Log
The General Query Log
The Update Log
The Binary Log
The Slow Query Log
Log File Maintenance
Replication in MySQL
Introduction
Replication Implementation Overview
Replication Implementation Details
How to Set Up Replication
Replication Features and Known Problems
Replication Startup Options
SQL Statements for Controlling Master Servers
`PURGE MASTER LOGS'
`RESET MASTER'
`SET SQL_LOG_BIN'
`SHOW BINLOG EVENTS'
`SHOW MASTER STATUS'
`SHOW MASTER LOGS'
`SHOW SLAVE HOSTS'
SQL Statements for Controlling Slave Servers
`CHANGE MASTER TO'
`LOAD DATA FROM MASTER'
`LOAD TABLE tbl_name FROM MASTER'
`MASTER_POS_WAIT()'
`RESET SLAVE'
`SET GLOBAL SQL_SLAVE_SKIP_COUNTER'
`SHOW SLAVE STATUS'
`START SLAVE'
`STOP SLAVE'
Replication FAQ
Troubleshooting Replication
Reporting Replication Bugs
MySQL Optimisation
Optimisation Overview
MySQL Design Limitations/Tradeoffs
Portability
What Have We Used MySQL For?
The MySQL Benchmark Suite
Using Your Own Benchmarks
Optimising `SELECT's and Other Queries
`EXPLAIN' Syntax (Get Information About a `SELECT')
Estimating Query Performance
Speed of `SELECT' Queries
How MySQL Optimises `WHERE' Clauses
How MySQL Optimises `IS NULL'
How MySQL Optimises `DISTINCT'
How MySQL Optimises `LEFT JOIN' and `RIGHT JOIN'
How MySQL Optimises `ORDER BY'
How MySQL Optimises `LIMIT'
Speed of `INSERT' Queries
Speed of `UPDATE' Queries
Speed of `DELETE' Queries
Other Optimisation Tips
Locking Issues
How MySQL Locks Tables
Table Locking Issues
Optimising Database Structure
Design Choices
Get Your Data as Small as Possible
How MySQL Uses Indexes
Column Indexes
Multiple-Column Indexes
Why So Many Open tables?
How MySQL Opens and Closes Tables
Drawbacks to Creating Large Numbers of Tables in the Same Database
Optimising the MySQL Server
System/Compile Time and Startup Parameter Tuning
Tuning Server Parameters
How Compiling and Linking Affects the Speed of MySQL
How MySQL Uses Memory
How MySQL uses DNS
`SET' Syntax
Disk Issues
Using Symbolic Links
Using Symbolic Links for Databases
Using Symbolic Links for Tables
MySQL Language Reference
Language Structure
Literals: How to Write Strings and Numbers
Strings
Numbers
Hexadecimal Values
`NULL' Values
Database, Table, Index, Column, and Alias Names
Case Sensitivity in Names
User Variables
System Variables
Comment Syntax
Is MySQL Picky About Reserved Words?
Column Types
Numeric Types
Date and Time Types
Y2K Issues and Date Types
The `DATETIME', `DATE', and `TIMESTAMP' Types
The `TIME' Type
The `YEAR' Type
String Types
The `CHAR' and `VARCHAR' Types
The `BLOB' and `TEXT' Types
The `ENUM' Type
The `SET' Type
Choosing the Right Type for a Column
Using Column Types from Other Database Engines
Column Type Storage Requirements
Functions for Use in `SELECT' and `WHERE' Clauses
Non-Type-Specific Operators and Functions
Parentheses
Comparison Operators
Logical Operators
Control Flow Functions
String Functions
String Comparison Functions
Case-Sensitivity
Numeric Functions
Arithmetic Operations
Mathematical Functions
Date and Time Functions
Cast Functions
Other Functions
Bit Functions
Miscellaneous Functions
Functions and Modifiers for Use with `GROUP BY' Clauses
`GROUP BY' Functions
`GROUP BY' Modifiers
`GROUP BY' with Hidden Fields
Data Manipulation: `SELECT', `INSERT', `UPDATE', `DELETE'
`SELECT' Syntax
`JOIN' Syntax
`UNION' Syntax
`HANDLER' Syntax
`INSERT' Syntax
`INSERT ... SELECT' Syntax
`INSERT DELAYED' Syntax
`UPDATE' Syntax
`DELETE' Syntax
`TRUNCATE' Syntax
`REPLACE' Syntax
`LOAD DATA INFILE' Syntax
`DO' Syntax
Data Definition: `CREATE', `DROP', `ALTER'
`CREATE DATABASE' Syntax
`DROP DATABASE' Syntax
`CREATE TABLE' Syntax
Silent Column Specification Changes
`ALTER TABLE' Syntax
`RENAME TABLE' Syntax
`DROP TABLE' Syntax
`CREATE INDEX' Syntax
`DROP INDEX' Syntax
Basic MySQL User Utility Commands
`USE' Syntax
`DESCRIBE' Syntax (Get Information About Columns)
MySQL Transactional and Locking Commands
`START TRANSACTION', `COMMIT', and `ROLLBACK' Syntax
Statements That Cannot Be Rolled Back
Statements That Cause an Implicit Commit
`SAVEPOINT' and `ROLLBACK TO SAVEPOINT' Syntax
`LOCK TABLES' and `UNLOCK TABLES' Syntax
`SET TRANSACTION' Syntax
MySQL Full-text Search
Full-text Restrictions
Fine-tuning MySQL Full-text Search
Full-text Search TODO
MySQL Query Cache
How the Query Cache Operates
Query Cache Configuration
Query Cache Options in `SELECT'
Query Cache Status and Maintenance
MySQL Table Types
`MyISAM' Tables
Space Needed for Keys
`MyISAM' Table Formats
Static (Fixed-length) Table Characteristics
Dynamic Table Characteristics
Compressed Table Characteristics
`MyISAM' Table Problems
Corrupted `MyISAM' Tables
Clients is using or hasn't closed the table properly
`MERGE' Tables
`MERGE' Table Problems
`ISAM' Tables
`HEAP' Tables
`InnoDB' Tables
InnoDB Tables Overview
InnoDB in MySQL Version 3.23
InnoDB Startup Options
Creating InnoDB Tablespace
If Something Goes Wrong in Database Creation
Creating InnoDB Tables
Converting MyISAM Tables to InnoDB
`FOREIGN KEY' Constraints
Adding and Removing InnoDB Data and Log Files
Backing up and Recovering an InnoDB Database
Forcing recovery
Checkpoints
Moving an InnoDB Database to Another Machine
InnoDB Transaction Model and Locking
InnoDB and `SET ... TRANSACTION ISOLATION LEVEL ...'
Consistent Non-Locking Read
Locking Reads `SELECT ... FOR UPDATE' and `SELECT ... LOCK IN SHARE MODE'
Next-key Locking: Avoiding the Phantom Problem
Locks Set by Different SQL Statements in `InnoDB'
Deadlock Detection and Rollback
An Example of How the Consistent Read Works in `InnoDB'
How to cope with deadlocks?
Performance Tuning Tips
`SHOW INNODB STATUS' and the `InnoDB' Monitors
Implementation of Multi-versioning
Table and Index Structures
Physical Structure of an Index
Insert Buffering
Adaptive Hash Indexes
Physical Record Structure
How an `AUTO_INCREMENT' Column Works in InnoDB
File Space Management and Disk I/O
Disk I/O
File Space Management
Defragmenting a Table
Error Handling
Restrictions on InnoDB Tables
InnoDB Change History
MySQL/InnoDB-4.0.14, July 22, 2003
MySQL/InnoDB-3.23.57, June 20, 2003
MySQL/InnoDB-4.0.13, May 20, 2003
MySQL/InnoDB-4.1.0, April 3, 2003
MySQL/InnoDB-3.23.56, March 17, 2003
MySQL/InnoDB-4.0.12, March 18, 2003
MySQL/InnoDB-4.0.11, February 25, 2003
MySQL/InnoDB-4.0.10, February 4, 2003
MySQL/InnoDB-3.23.55, January 24, 2003
MySQL/InnoDB-4.0.9, January 14, 2003
MySQL/InnoDB-4.0.8, January 7, 2003
MySQL/InnoDB-4.0.7, December 26, 2002
MySQL/InnoDB-4.0.6, December 19, 2002
MySQL/InnoDB-3.23.54, December 12, 2002
MySQL/InnoDB-4.0.5, November 18, 2002
MySQL/InnoDB-3.23.53, October 9, 2002
MySQL/InnoDB-4.0.4, October 2, 2002
MySQL/InnoDB-4.0.3, August 28, 2002
MySQL/InnoDB-3.23.52, August 16, 2002
MySQL/InnoDB-4.0.2, July 10, 2002
MySQL/InnoDB-3.23.51, June 12, 2002
MySQL/InnoDB-3.23.50, April 23, 2002
MySQL/InnoDB-3.23.49, February 17, 2002
MySQL/InnoDB-3.23.48, February 9, 2002
MySQL/InnoDB-3.23.47, December 28, 2001
MySQL/InnoDB-4.0.1, December 23, 2001
MySQL/InnoDB-3.23.46, November 30, 2001
MySQL/InnoDB-3.23.45, November 23, 2001
MySQL/InnoDB-3.23.44, November 2, 2001
MySQL/InnoDB-3.23.43, October 4, 2001
MySQL/InnoDB-3.23.42, September 9, 2001
MySQL/InnoDB-3.23.41, August 13, 2001
MySQL/InnoDB-3.23.40, July 16, 2001
MySQL/InnoDB-3.23.39, June 13, 2001
MySQL/InnoDB-3.23.38, May 12, 2001
`InnoDB' Contact Information
`BDB' or `BerkeleyDB' Tables
Overview of `BDB' Tables
Installing `BDB'
`BDB' startup options
Characteristics of `BDB' tables:
Things we need to fix for `BDB' in the near future:
Operating systems supported by `BDB'
Restrictions on `BDB' Tables
Errors That May Occur When Using `BDB' Tables
Introduction to MaxDB
History of MaxDB
Licensing and Support
Basic Concepts of MaxDB
Feature Differences between MaxDB and MySQL
Interoperability Features between MaxDB and MySQL
MaxDB-related Links
Reserved Words in MaxDB
Functions
Column Types
National Character Sets and Unicode
Character Sets and Collations in General
Character Sets and Collations in MySQL
Determining the Default Character Set and Collation
Server Character Set and Collation
Database Character Set and Collation
Table Character Set and Collation
Column Character Set and Collation
Examples of Character Set and Collation Assignment
Connection Character Sets and Collations
Character String Literal Character Set and Collation
`COLLATE' Clause in Various Parts of an SQL Query
`COLLATE' Clause Precedence
`BINARY' Operator
Some Special Cases Where the Collation Determination is Tricky
Collations Must Be for the Right Character Set
An example of the Effect of Collation
Operations Affected by Character Set Support
Result Strings
`CONVERT()'
`CAST()'
`SHOW CHARACTER SET'
`SHOW COLLATION'
`SHOW CREATE DATABASE'
`SHOW FULL COLUMNS'
Unicode Support
UTF8 for Metadata
Compatibility with Other DBMSs
New Character Set Configuration File format
National Character Set
Upgrading from MySQL 4.0
4.0 Character Sets and Corresponding 4.1 Character Set/Collation Pairs
The Character Sets and Collations that MySQL Supports
The Unicode Character Sets
Platform Specific Character Sets
Character Sets for South Europe and Middle East
The Asian Character Sets
The Baltic Character Sets
The Cyrillic Character Sets
The Central European Character Sets
The West European Character Sets
Spatial Extensions in MySQL
Introduction
The OpenGIS Geometry Model
The Geometry Class Hierarchy
Class `Geometry'
Class `Point'
Class `Curve'
Class `LineString'
Class `Surface'
Class `Polygon'
Class `GeometryCollection'
Class `MultiPoint'
Class `MultiCurve'
Class `MultiLineString'
Class `MultiSurface'
Class `MultiPolygon'
Supported Spatial Data Formats
Well-Known Text (WKT) Format
Well-Known Binary (WKB) Format
Creating a Spatially Enabled MySQL Database
MySQL Spatial Datatypes
Creating Spatial Values
Creating Geometry Values Using WKT Functions
Creating Geometry Values Using WKB Functions
Creating Geometry Values Using MySQL-Specific Functions
Creating Spatial Columns
Populating Spatial Columns
Fetching Spatial Data
Fetching Spatial Data in Internal Format
Fetching Spatial Data in WKT Format
Fetching Spatial Data in WKB Format
Analysing Spatial Information
Functions to Convert Geometries Between Formats
`Geometry' Property Analysis Functions
General Geometry Property Analysis Functions
`Point' Property Analysis Functions
`LineString' Property Analysis Functions
`MultiLineString' Property Analysis Functions
`Polygon' Property Analysis Functions
`MultiPolygon' Property Analysis Functions
`GeometryCollection' Property Analysis Functions
Functions That Create New Geometries From Existing Ones
Geometry Functions That Produce New Geometries
Spatial Operators
Functions For Testing Spatial Relations Between Geometric Objects
Relations On Geometry Minimal Bounding Rectangles (MBRs)
Functions That Test Spatial Relationships Between Geometries
Optimising Spatial Analysis
Creating Spatial Indexes
Using a Spatial Index
MySQL Conformance and Compatibility
GIS Features That Are Not Yet Implemented
MySQL APIs
MySQL C API
C API Datatypes
C API Function Overview
C API Function Descriptions
`mysql_affected_rows()'
`mysql_change_user()'
`mysql_character_set_name()'
`mysql_close()'
`mysql_connect()'
`mysql_create_db()'
`mysql_data_seek()'
`mysql_debug()'
`mysql_drop_db()'
`mysql_dump_debug_info()'
`mysql_eof()'
`mysql_errno()'
`mysql_error()'
`mysql_escape_string()'
`mysql_fetch_field()'
`mysql_fetch_fields()'
`mysql_fetch_field_direct()'
`mysql_fetch_lengths()'
`mysql_fetch_row()'
`mysql_field_count()'
`mysql_field_seek()'
`mysql_field_tell()'
`mysql_free_result()'
`mysql_get_client_info()'
`mysql_get_server_version()'
`mysql_get_host_info()'
`mysql_get_proto_info()'
`mysql_get_server_info()'
`mysql_info()'
`mysql_init()'
`mysql_insert_id()'
`mysql_kill()'
`mysql_list_dbs()'
`mysql_list_fields()'
`mysql_list_processes()'
`mysql_list_tables()'
`mysql_num_fields()'
`mysql_num_rows()'
`mysql_options()'
`mysql_ping()'
`mysql_query()'
`mysql_real_connect()'
`mysql_real_escape_string()'
`mysql_real_query()'
`mysql_reload()'
`mysql_row_seek()'
`mysql_row_tell()'
`mysql_select_db()'
`mysql_sqlstate()'
`mysql_shutdown()'
`mysql_stat()'
`mysql_store_result()'
`mysql_thread_id()'
`mysql_use_result()'
`mysql_commit()'
`mysql_rollback()'
`mysql_autocommit()'
`mysql_more_results()'
`mysql_next_result()'
C API Prepared Statements
C API Prepared Statement Datatypes
C API Prepared Statement Function Overview
C API Prepared Statement Function Descriptions
`mysql_prepare()'
`mysql_param_count()'
`mysql_get_metadata()'
`mysql_bind_param()'
`mysql_execute()'
`mysql_stmt_affected_rows()'
`mysql_bind_result()'
`mysql_stmt_store_result()'
`mysql_stmt_data_seek()'
`mysql_stmt_row_seek()'
`mysql_stmt_row_tell()'
`mysql_stmt_num_rows()'
`mysql_fetch()'
`mysql_send_long_data()'
`mysql_stmt_close()'
`mysql_stmt_errno()'
`mysql_stmt_error()'
`mysql_stmt_sqlstate()'
C API Handling of Multiple Query Execution
C API Handling of Date and Time Values
C API Threaded Function Descriptions
`my_init()'
`mysql_thread_init()'
`mysql_thread_end()'
`mysql_thread_safe()'
C API Embedded Server Function Descriptions
`mysql_server_init()'
`mysql_server_end()'
Common questions and problems when using the C API
Why Is It that After `mysql_query()' Returns Success,
`mysql_store_result()' Sometimes Returns `NULL'?
What Results Can I Get From a Query?
How Can I Get the Unique ID for the Last Inserted Row?
Problems Linking with the C API
Building Client Programs
How to Make a Threaded Client
libmysqld, the Embedded MySQL Server Library
Overview of the Embedded MySQL Server Library
Compiling Programs with `libmysqld'
Restrictions when using the Embedded MySQL Server
Using Option Files with the Embedded Server
Things left to do in Embedded Server (TODO)
A Simple Embedded Server Example
Licensing the Embedded Server
MySQL ODBC Support
How to Install MyODBC
How to Fill in the Various Fields in the ODBC Administrator Program
Connect parameters for MyODBC
How to Report Problems with MyODBC
Programs Known to Work with MyODBC
How to Get the Value of an `AUTO_INCREMENT' Column in ODBC
Reporting Problems with MyODBC
MySQL Java Connectivity (JDBC)
MySQL PHP API
Common Problems with MySQL and PHP
MySQL Perl API
`DBI' with `DBD::mysql'
The `DBI' Interface
More `DBI'/`DBD' Information
MySQL C++ API
Borland C++
MySQL Python API
MySQL Tcl API
MySQL Eiffel Wrapper
Error Handling in MySQL
Error Returns
Extending MySQL
MySQL Internals
MySQL Threads
MySQL Test Suite
Running the MySQL Test Suite
Extending the MySQL Test Suite
Reporting Bugs in the MySQL Test Suite
Adding New Functions to MySQL
`CREATE FUNCTION/DROP FUNCTION' Syntax
Adding a New User-definable Function
UDF Calling Sequences for simple functions
UDF Calling Sequences for aggregate functions
Argument Processing
Return Values and Error Handling
Compiling and Installing User-definable Functions
Adding a New Native Function
Adding New Procedures to MySQL
Procedure Analyse
Writing a Procedure
Problems and Common Errors
How to Determine What Is Causing Problems
Common Errors When Using MySQL
`Access denied' Error
`MySQL server has gone away' Error
`Can't connect to [local] MySQL server' Error
`Client does not support authentication protocol' error
`Host '...' is blocked' Error
`Too many connections' Error
`Some non-transactional changed tables couldn't be rolled back' Error
`Out of memory' Error
`Packet too large' Error
Communication Errors / Aborted Connection
`The table is full' Error
`Can't create/write to file' Error
`Commands out of sync' Error in Client
`Ignoring user' Error
`Table 'xxx' doesn't exist' Error
`Can't initialize character set xxx' error
File Not Found
Installation Related Issues
Problems When Linking with the MySQL Client Library
How to Run MySQL As a Normal User
Problems with File Permissions
Administration Related Issues
What To Do If MySQL Keeps Crashing
How to Reset a Forgotten Root Password
How MySQL Handles a Full Disk
Where MySQL Stores Temporary Files
How to Protect or Change the MySQL Socket File `/tmp/mysql.sock'
Time Zone Problems
Query Related Issues
Case-Sensitivity in Searches
Problems Using `DATE' Columns
Problems with `NULL' Values
Problems with `alias'
Deleting Rows from Related Tables
Solving Problems with No Matching Rows
Problems with Floating-Point Comparison
Optimiser Related Issues
How to avoid table scan,,,
Table Definition Related Issues
Problems with `ALTER TABLE'.
How To Change the Order of Columns in a Table
TEMPORARY TABLE problems
Contributed Programs
APIs
Converters
Utilities
Credits
Developers at MySQL AB
Contributors to MySQL
Supporters to MySQL
MySQL Change History
Changes in release 5.0.0 (Development)
Changes in release 4.1.x (Alpha)
Changes in release 4.1.1 (to be released soon)
Changes in release 4.1.0 (03 Apr 2003: Alpha)
Changes in release 4.0.x (Production)
Changes in release 4.0.17 (not released yet)
Changes in release 4.0.16 (to be released soon)
Changes in release 4.0.15 (03 Sep 2003)
Changes in release 4.0.14 (18 Jul 2003)
Changes in release 4.0.13 (16 May 2003)
Changes in release 4.0.12 (15 Mar 2003: Production)
Changes in release 4.0.11 (20 Feb 2003)
Changes in release 4.0.10 (29 Jan 2003)
Changes in release 4.0.9 (09 Jan 2003)
Changes in release 4.0.8 (07 Jan 2003)
Changes in release 4.0.7 (20 Dec 2002)
Changes in release 4.0.6 (14 Dec 2002: Gamma)
Changes in release 4.0.5 (13 Nov 2002)
Changes in release 4.0.4 (29 Sep 2002)
Changes in release 4.0.3 (26 Aug 2002: Beta)
Changes in release 4.0.2 (01 Jul 2002)
Changes in release 4.0.1 (23 Dec 2001)
Changes in release 4.0.0 (Oct 2001: Alpha)
Changes in release 3.23.x (Recent; still supported)
Changes in release 3.23.59 (not released yet)
Changes in release 3.23.58 (11 Sep 2003)
Changes in release 3.23.57 (06 Jun 2003)
Changes in release 3.23.56 (13 Mar 2003)
Changes in release 3.23.55 (23 Jan 2003)
Changes in release 3.23.54 (05 Dec 2002)
Changes in release 3.23.53 (09 Oct 2002)
Changes in release 3.23.52 (14 Aug 2002)
Changes in release 3.23.51 (31 May 2002)
Changes in release 3.23.50 (21 Apr 2002)
Changes in release 3.23.49
Changes in release 3.23.48 (07 Feb 2002)
Changes in release 3.23.47 (27 Dec 2001)
Changes in release 3.23.46 (29 Nov 2001)
Changes in release 3.23.45 (22 Nov 2001)
Changes in release 3.23.44 (31 Oct 2001)
Changes in release 3.23.43 (04 Oct 2001)
Changes in release 3.23.42 (08 Sep 2001)
Changes in release 3.23.41 (11 Aug 2001)
Changes in release 3.23.40
Changes in release 3.23.39 (12 Jun 2001)
Changes in release 3.23.38 (09 May 2001)
Changes in release 3.23.37 (17 Apr 2001)
Changes in release 3.23.36 (27 Mar 2001)
Changes in release 3.23.35 (15 Mar 2001)
Changes in release 3.23.34a
Changes in release 3.23.34 (10 Mar 2001)
Changes in release 3.23.33 (09 Feb 2001)
Changes in release 3.23.32 (22 Jan 2001: Production)
Changes in release 3.23.31 (17 Jan 2001)
Changes in release 3.23.30 (04 Jan 2001)
Changes in release 3.23.29 (16 Dec 2000)
Changes in release 3.23.28 (22 Nov 2000: Gamma)
Changes in release 3.23.27 (24 Oct 2000)
Changes in release 3.23.26 (18 Oct 2000)
Changes in release 3.23.25 (29 Sep 2000)
Changes in release 3.23.24 (08 Sep 2000)
Changes in release 3.23.23 (01 Sep 2000)
Changes in release 3.23.22 (31 Jul 2000)
Changes in release 3.23.21
Changes in release 3.23.20
Changes in release 3.23.19
Changes in release 3.23.18
Changes in release 3.23.17
Changes in release 3.23.16
Changes in release 3.23.15 (May 2000: Beta)
Changes in release 3.23.14
Changes in release 3.23.13
Changes in release 3.23.12 (07 Mar 2000)
Changes in release 3.23.11
Changes in release 3.23.10
Changes in release 3.23.9
Changes in release 3.23.8 (02 Jan 2000)
Changes in release 3.23.7 (10 Dec 1999)
Changes in release 3.23.6
Changes in release 3.23.5 (20 Oct 1999)
Changes in release 3.23.4 (28 Sep 1999)
Changes in release 3.23.3
Changes in release 3.23.2 (09 Aug 1999)
Changes in release 3.23.1
Changes in release 3.23.0 (05 Aug 1999: Alpha)
Changes in release 3.22.x (Old; discontinued)
Changes in release 3.22.35
Changes in release 3.22.34
Changes in release 3.22.33
Changes in release 3.22.32 (14 Feb 2000)
Changes in release 3.22.31
Changes in release 3.22.30
Changes in release 3.22.29 (02 Jan 2000)
Changes in release 3.22.28 (20 Oct 1999)
Changes in release 3.22.27
Changes in release 3.22.26 (16 Sep 1999)
Changes in release 3.22.25
Changes in release 3.22.24 (05 Jul 1999)
Changes in release 3.22.23 (08 Jun 1999)
Changes in release 3.22.22 (30 Apr 1999)
Changes in release 3.22.21
Changes in release 3.22.20 (18 Mar 1999)
Changes in release 3.22.19 (Mar 1999: Production)
Changes in release 3.22.18
Changes in release 3.22.17
Changes in release 3.22.16 (Feb 1999: Gamma)
Changes in release 3.22.15
Changes in release 3.22.14
Changes in release 3.22.13
Changes in release 3.22.12
Changes in release 3.22.11
Changes in release 3.22.10
Changes in release 3.22.9
Changes in release 3.22.8
Changes in release 3.22.7 (Sep 1998: Beta)
Changes in release 3.22.6
Changes in release 3.22.5
Changes in release 3.22.4
Changes in release 3.22.3
Changes in release 3.22.2
Changes in release 3.22.1 (Jun 1998: Alpha)
Changes in release 3.22.0
Changes in release 3.21.x
Changes in release 3.21.33
Changes in release 3.21.32
Changes in release 3.21.31
Changes in release 3.21.30
Changes in release 3.21.29
Changes in release 3.21.28
Changes in release 3.21.27
Changes in release 3.21.26
Changes in release 3.21.25
Changes in release 3.21.24
Changes in release 3.21.23
Changes in release 3.21.22
Changes in release 3.21.21a
Changes in release 3.21.21
Changes in release 3.21.20
Changes in release 3.21.19
Changes in release 3.21.18
Changes in release 3.21.17
Changes in release 3.21.16
Changes in release 3.21.15
Changes in release 3.21.14b
Changes in release 3.21.14a
Changes in release 3.21.13
Changes in release 3.21.12
Changes in release 3.21.11
Changes in release 3.21.10
Changes in release 3.21.9
Changes in release 3.21.8
Changes in release 3.21.7
Changes in release 3.21.6
Changes in release 3.21.5
Changes in release 3.21.4
Changes in release 3.21.3
Changes in release 3.21.2
Changes in release 3.21.0
Changes in release 3.20.x
Changes in release 3.20.18
Changes in release 3.20.17
Changes in release 3.20.16
Changes in release 3.20.15
Changes in release 3.20.14
Changes in release 3.20.13
Changes in release 3.20.11
Changes in release 3.20.10
Changes in release 3.20.9
Changes in release 3.20.8
Changes in release 3.20.7
Changes in release 3.20.6
Changes in release 3.20.3
Changes in release 3.20.0
Changes in release 3.19.x
Changes in release 3.19.5
Changes in release 3.19.4
Changes in release 3.19.3
Porting to Other Systems
Debugging a MySQL server
Compiling MYSQL for Debugging
Creating Trace Files
Debugging mysqld under gdb
Using a Stack Trace
Using Log Files to Find Cause of Errors in mysqld
Making a Test Case If You Experience Table Corruption
Debugging a MySQL client
The DBUG Package
Locking methods
Comments about RTS threads
Differences between different thread packages
Environment Variables
MySQL Regular Expressions
GNU General Public License
GNU Lesser General Public License
SQL command, type and function index
Concept Index
This is the Reference Manual for the `MySQL Database System'. This
version refers to the 4.0.16 version of `MySQL Server' but it is also
applicable for any older version (such as 3.23 and 4.0-production) as
changes are always indicated. There are also references for version 5.0
(development).