manual.texi
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:1883k
- input texinfo @c -*-texinfo-*-
- @c Copyright 1997, 1998, 1999, 2000 TcX AB, Detron HB and MySQL Finland AB
- @c
- @c *********************************************************
- @c Note that @node names are used on our Website.
- @c So do not change node names without checking
- @c Makefile.am and SitePages first.
- @c *********************************************************
- @c
- @c %**start of header
- @c there's a better way to do this.. i just don't know it yet
- @c sed will remove the "@c ifnusphere " to make this valid
- @c ifnusphere @set nusphere 1
- @setfilename mysql.info
- @c We want the types in the same index
- @syncodeindex tp fn
- @c Get version information. This file is generated by the Makefile!!
- @include include.texi
- @ifclear tex-debug
- @c This removes the black squares in the right margin
- @finalout
- @end ifclear
- @c Set background for HTML
- @set _body_tags BGCOLOR=silver TEXT=#000000 LINK=#101090 VLINK=#7030B0
- @c Set some style elements for the manual in HTML form. 'suggested'
- @c natural language colours: aqua, black, blue, fuchsia, gray, green,
- @c lime, maroon, navy, olive, purple, red, silver, teal, white, and
- @c yellow. From Steeve Buehler <ahr@YogElements.com>
- @set _extra_head <style> code {color:purple} tt {color:green} samp {color:navy} pre {color:maroon} </style>
- @settitle @strong{MySQL} Reference Manual for version @value{mysql_version}.
- @c We want single-sided heading format, with chapters on new pages. To
- @c get double-sided format change 'on' below to 'odd'
- @ifclear nusphere
- @setchapternewpage on
- @end ifclear
- @ifset nusphere
- @setchapternewpage odd
- @end ifset
- @paragraphindent 0
- @ifset nusphere
- @smallbook
- @end ifset
- @c We want the contents at the beginning, where it's supposed to be.
- @setcontentsaftertitlepage
- @c %**end of header
- @ifinfo
- @format
- START-INFO-DIR-ENTRY
- * mysql: (mysql). @strong{MySQL} documentation.
- END-INFO-DIR-ENTRY
- @end format
- @end ifinfo
- @titlepage
- @sp 10
- @center @titlefont{@strong{MySQL} Reference Manual}
- @sp 10
- @center Copyright @copyright{} 1997-2000 TcX AB, Detron HB and MySQL Finland AB
- @c blank page after title page makes page 1 be a page front.
- @c also makes the back of the title page blank.
- @page
- @end titlepage
- @c This should be added. The HTML conversion also needs a MySQL version
- @c number somewhere.
- @iftex
- @c change this to double if you want formatting for double-sided
- @c printing
- @headings single
- @ifclear nusphere
- @everyheading @thispage @| @| @thischapter
- @everyfooting @| @| Version: @value{mysql_version} Printed: @today{}
- @end ifclear
- @ifset nusphere
- @oddheading @thischapter @| @| @thispage
- @evenheading @thispage @| @| MySQL Technical Reference for Version @value{mysql_version}
- @end ifset
- @end iftex
- @node Top, Introduction, (dir), (dir)
- @c @ifhtml
- @c <IMG SRC="Images/mysql-logo.gif">
- @c <!--Image doesn't exist. Can't find suitable replacement. (Matt) -->
- @c @end ifhtml
- @ifinfo
- This is a manual for @strong{MySQL}. This version is about the
- @value{mysql_version} version of @strong{MySQL}. For a @strong{3.20}
- version see the relevant distribution.
- @end ifinfo
- @menu
- * Introduction:: General Information about @strong{MySQL}
- * Questions:: @strong{MySQL} mailing lists and how to ask questions or report errors (bugs)
- * Licensing and Support:: @strong{MySQL} licensing and support
- * Installing:: Installing @strong{MySQL}
- * Compatibility:: How standards-compatible is @strong{MySQL}?
- * Privilege system:: The @strong{MySQL} access privilege system
- * Reference:: @strong{MySQL} language reference
- * Table types:: @strong{MySQL} table types
- * Tutorial:: @strong{MySQL} Tutorial
- * Server:: @strong{MySQL} Server
- * Replication:: Replication
- * Performance:: Getting maximum performance from @strong{MySQL}
- * MySQL Benchmarks:: The @strong{MySQL} benchmark suite
- * Tools:: @strong{MySQL} Utilities
- * Maintenance:: Maintaining a @strong{MySQL} installation
- * Adding functions:: Adding new functions to @strong{MySQL}
- * Adding procedures:: Adding new procedures to @strong{MySQL}
- * ODBC:: @strong{MySQL} ODBC Support
- * Common programs:: Using @strong{MySQL} with some common programs
- * Problems:: Problems
- * Common problems:: Solving some common problems with @strong{MySQL}
- * Log files::
- * Clients:: @strong{MySQL} client tools and APIs
- * Comparisons:: How does @strong{MySQL} compare with other databases?
- * MySQL internals:: @strong{MySQL} internals
- * Environment variables:: @strong{MySQL} environment variables
- * Users:: Some @strong{MySQL} users
- * MySQL customer usage::
- * Contrib:: Contributed programs
- * Credits:: Contributors to @strong{MySQL}
- * News:: @strong{MySQL} change history
- * Bugs:: Known errors and design deficiencies in @strong{MySQL}
- * TODO:: List of things we want to add to @strong{MySQL} in the future (The TODO)
- * Porting:: Comments on porting to other systems
- * Regexp:: Description of @strong{MySQL} regular expression syntax
- * Unireg:: What is Unireg?
- * GPL license:: GNU General Public License
- * LGPL license:: GNU Library General Public License
- * Function Index:: SQL command, type and function index
- * Concept Index:: Concept Index
- @detailmenu
- --- The Detailed Node Listing ---
- General Information About MySQL
- * What-is:: What is @strong{MySQL}?
- * What is MySQL AB::
- * Manual-info:: About this manual
- * History:: History of @strong{MySQL}
- * MySQL-Books:: Books about MySQL
- * Features:: The main features of @strong{MySQL}
- * Stability:: How stable is @strong{MySQL}?
- * Year 2000 compliance:: Year 2000 compliance
- * General-SQL:: General SQL information and tutorials
- * Useful Links:: Useful @strong{MySQL}-related links
- About This Manual
- * Manual conventions:: Conventions used in this manual
- MySQL Mailing Lists
- * Mailing-list:: The @strong{MySQL} mailing lists
- * Asking questions:: Asking questions or reporting bugs
- * Bug reports:: How to report bugs or problems
- * Answering questions:: Guidelines for answering questions on the mailing list
- MySQL Licensing and Support
- * Licensing policy:: @strong{MySQL} licensing policy
- * Copyright:: Copyrights used by @strong{MySQL}
- * Licensing examples:: Example licensing situations
- * Cost:: @strong{MySQL} licensing and support costs
- * Support:: Types of commercial support
- Copyrights Used by MySQL
- * Copyright changes:: Possible future copyright changes
- Example Licensing Situations
- * Products that use MySQL:: Selling products that use @strong{MySQL}
- * ISP:: ISP @strong{MySQL} services
- * Web server:: Running a web server using @strong{MySQL}.
- MySQL Licensing and Support Costs
- * Payment information:: Payment information
- * Contact information:: Contact information
- Types of Commercial Support
- * Basic email support:: Basic email support
- * Extended email support:: Extended email support
- * Login support:: Login support
- * Extended login support:: Extended login support
- * Telephone support:: Telephone support
- * Table handler support:: Support for other table handlers
- Installing MySQL
- * Getting MySQL:: How to get @strong{MySQL}
- * Which OS:: Operating systems supported by @strong{MySQL}
- * Which version:: Which @strong{MySQL} version to use
- * Many versions:: How and when updates are released
- * Installation layouts:: Installation layouts
- * Installing binary:: Installing a @strong{MySQL} binary distribution
- * Installing source:: Installing a @strong{MySQL} source distribution
- * Installing source tree:: Installing @strong{MySQL} from development source tree
- * Compilation problems:: Problems compiling?
- * MIT-pthreads:: MIT-pthreads notes
- * Perl support:: Perl installation comments
- * Source install system issues:: System-specific issues
- * Windows:: Windows notes
- * OS/2:: OS/2 notes
- * MySQL binaries:: MySQL binaries
- * Post-installation:: Post-installation setup and testing
- * Installing many servers:: Installing many servers on the same machine
- * Upgrade:: Upgrading/Downgrading MySQL
- Installing a MySQL Binary Distribution
- * Linux-RPM:: Linux RPM files
- * Building clients:: Building client programs
- * Binary install system issues:: System-specific issues
- System-specific Issues
- * Binary notes-Linux:: Linux notes for binary distribution
- * Binary notes-HP-UX:: HP-UX notes for binary distribution
- Installing a MySQL Source Distribution
- * Quick install:: Quick installation overview
- * Applying patches:: Applying patches
- * configure options:: Typical @code{configure} options
- Perl Installation Comments
- * Perl installation:: Installing Perl on Unix
- * ActiveState Perl:: Installing ActiveState Perl on Windows
- * Windows Perl:: Installing the @strong{MySQL} Perl distribution on Windows
- * Perl support problems:: Problems using the Perl @code{DBI}/@code{DBD} interface
- System-specific Issues
- * Solaris:: Solaris notes
- * Solaris 2.7:: Solaris 2.7 / 2.8 notes
- * Solaris x86:: Solaris x86 notes
- * SunOS:: SunOS 4 notes
- * Linux:: Linux notes (all Linux versions)
- * Alpha-DEC-UNIX:: Alpha-DEC-UNIX notes
- * Alpha-DEC-OSF1:: Alpha-DEC-OSF1 notes
- * SGI-Irix:: SGI-Irix notes
- * FreeBSD:: FreeBSD notes
- * NetBSD:: NetBSD notes
- * OpenBSD:: OpenBSD 2.5 notes
- * BSDI:: BSD/OS notes
- * SCO:: SCO notes
- * SCO Unixware:: SCO Unixware 7.0 notes
- * IBM-AIX:: IBM-AIX notes
- * HP-UX 10.20:: HP-UX 10.20 notes
- * HP-UX 11.x:: HP-UX 11.x notes
- * Mac OS X:: Mac OS X notes
- * BEOS:: BeOS Notes
- Linux Notes (All Linux Versions)
- * Linux-x86:: Linux-x86 notes
- * Linux-RedHat50:: RedHat 5.0 notes
- * Linux-RedHat51:: RedHat 5.1 notes
- * Linux-SPARC:: Linux-SPARC notes
- * Linux-Alpha:: Linux-Alpha notes
- * MKLinux:: MkLinux notes
- * Qube2:: Qube2 Linux notes
- * Linux-Ia64:: Linux-Ia64 notes
- OpenBSD Notes
- * OpenBSD 2.5:: OpenBSD 2.5 Notes
- * OpenBSD 2.8:: OpenBSD 2.8 Notes
- BSD/OS Notes
- * BSDI2:: BSD/OS 2.x notes
- * BSDI3:: BSD/OS 3.x notes
- * BSDI4:: BSD/OS 4.x notes
- Mac OS X Notes
- * Mac OS X Public Data::
- * Mac OS X Server::
- Windows Notes
- * Windows installation:: Installing @strong{MySQL} on Windows
- * Win95 start:: Starting @strong{MySQL} on Win95 / Win98
- * NT start:: Starting @strong{MySQL} on NT / Win2000
- * Windows running:: Running @strong{MySQL} on Windows
- * Windows and SSH:: Connecting to a remote @strong{MySQL} from Windows with SSH
- * Windows symbolic links:: Splitting data across different disks under Win32
- * Windows compiling:: Compiling MySQL clients on Windows.
- * Windows and BDB tables.:: Windows and BDB Tables
- * Windows vs Unix:: @strong{MySQL}-Windows compared to Unix @strong{MySQL}
- Post-installation Setup and Testing
- * mysql_install_db:: Problems running @code{mysql_install_db}
- * Starting server:: Problems starting the @strong{MySQL} server
- * Automatic start:: Starting and stopping @strong{MySQL} automatically
- * Command-line options:: Command-line options
- * Option files:: Option files
- Upgrading/Downgrading MySQL
- * Upgrading-from-3.22:: Upgrading from a 3.22 version to 3.23
- * Upgrading-from-3.21:: Upgrading from a 3.21 version to 3.22
- * Upgrading-from-3.20:: Upgrading from a 3.20 version to 3.21
- * Upgrading-to-arch:: Upgrading to another architecture
- How Standards-compatible Is MySQL?
- * Extensions to ANSI:: @strong{MySQL} extensions to ANSI SQL92
- * ANSI mode:: Running @strong{MySQL} in ANSI mode
- * Differences from ANSI:: @strong{MySQL} differences compared to ANSI SQL92
- * Missing functions:: Functionality missing from @strong{MySQL}
- * Standards:: What standards does @strong{MySQL} follow?
- * Commit-rollback:: How to cope without @code{COMMIT}-@code{ROLLBACK}
- Functionality Missing from MySQL
- * Missing Sub-selects:: Sub-selects
- * Missing SELECT INTO TABLE:: @code{SELECT INTO TABLE}
- * Missing Transactions:: Transactions
- * Missing Triggers:: Triggers
- * Missing Foreign Keys:: Foreign Keys
- * Missing Views:: Views
- * Missing comments:: @samp{--} as the start of a comment
- Foreign Keys
- * Broken Foreign KEY:: Reasons NOT to use foreign keys constraints
- The MySQL Access Privilege System
- * General security:: General security
- * Security:: How to make @strong{MySQL} secure against crackers
- * Privileges options::
- * What Privileges:: What the privilege system does
- * User names:: @strong{MySQL} user names and passwords
- * Connecting:: Connecting to the @strong{MySQL} server
- * Password security:: Keeping your password secure
- * Privileges provided:: Privileges provided by @strong{MySQL}
- * Privileges:: How the privilege system works
- * Connection access:: Access control, stage 1: Connection verification
- * Request access:: Access control, stage 2: Request verification
- * Privilege changes:: When privilege changes take effect
- * Default privileges:: Setting up the initial @strong{MySQL} privileges
- * Adding users:: Adding new user privileges to @strong{MySQL}
- * Passwords:: How to set up passwords
- * Access denied:: Causes of @code{Access denied} errors
- MySQL Language Reference
- * Literals:: Literals: how to write strings and numbers
- * Variables:: User variables
- * Column types:: Column types
- * Functions:: Functions
- * CREATE DATABASE:: @code{CREATE DATABASE} syntax
- * DROP DATABASE:: @code{DROP DATABASE} syntax
- * CREATE TABLE:: @code{CREATE TABLE} syntax
- * ALTER TABLE:: @code{ALTER TABLE} syntax
- * RENAME TABLE:: @code{RENAME TABLE} syntax
- * DROP TABLE:: @code{DROP TABLE} syntax
- * OPTIMIZE TABLE:: @code{OPTIMIZE TABLE} syntax
- * CHECK TABLE:: @code{CHECK TABLE} syntax
- * BACKUP TABLE:: @code{BACKUP TABLE} syntax
- * RESTORE TABLE:: @code{RESTORE TABLE} syntax
- * ANALYZE TABLE:: @code{ANALYZE TABLE} syntax
- * REPAIR TABLE:: @code{REPAIR TABLE} syntax
- * DELETE:: @code{DELETE} syntax
- * TRUNCATE:: @code{TRUNCATE} syntax
- * SELECT:: @code{SELECT} syntax
- * JOIN:: @code{JOIN} syntax
- * INSERT:: @code{INSERT} syntax
- * REPLACE:: @code{REPLACE} syntax
- * LOAD DATA:: @code{LOAD DATA INFILE} syntax
- * UPDATE:: @code{UPDATE} syntax
- * USE:: @code{USE} syntax
- * FLUSH:: @code{Flush} syntax (clearing caches)
- * KILL:: @code{KILL} syntax
- * SHOW:: @code{SHOW} syntax (Get information about tables, columns, ...)
- * EXPLAIN:: @code{EXPLAIN} syntax (Get information about a @code{SELECT})
- * DESCRIBE:: @code{DESCRIBE} syntax (Get information about names of columns)
- * COMMIT:: @code{BEGIN/COMMIT/ROLLBACK} syntax
- * LOCK TABLES:: @code{LOCK TABLES/UNLOCK TABLES} syntax
- * SET OPTION:: @code{SET OPTION} syntax
- * GRANT:: @code{GRANT} and @code{REVOKE} syntax
- * CREATE INDEX:: @code{CREATE INDEX} syntax
- * DROP INDEX:: @code{DROP INDEX} syntax
- * Comments:: Comment syntax
- * CREATE FUNCTION:: @code{CREATE FUNCTION} syntax
- * Reserved words:: Is @strong{MySQL} picky about reserved words?
- Literals: How to Write Strings and Numbers
- * String syntax:: Strings
- * Number syntax:: Numbers
- * Hexadecimal values:: Hexadecimal values
- * NULL values:: @code{NULL} values
- * Legal names:: Database, table, index, column and alias names
- Database, Table, Index, Column, and Alias Names
- * Name case sensitivity:: Case sensitivity in names
- Column Types
- * Storage requirements:: Column type storage requirements
- * Numeric types:: Numeric types
- * Date and time types:: Date and time types
- * String types:: String types
- * Choosing types:: Choosing the right type for a column
- * Indexes:: Column indexes
- * Multiple-column indexes:: Multiple-column indexes
- * Other-vendor column types:: Using column types from other database engines
- Date and Time Types
- * Y2K issues:: Y2K issues and date types
- * DATETIME:: The @code{DATETIME}, @code{DATE} and @code{TIMESTAMP} types
- * TIME:: The @code{TIME} type
- * YEAR:: The @code{YEAR} type
- String Types
- * CHAR:: The @code{CHAR} and @code{VARCHAR} types
- * BLOB:: The @code{BLOB} and @code{TEXT} types
- * ENUM:: The @code{ENUM} type
- * SET:: The @code{SET} type
- Functions for Use in @code{SELECT} and @code{WHERE} Clauses
- * Grouping functions:: Grouping functions
- * Arithmetic functions:: Normal arithmetic operations
- * Bit functions:: Bit functions
- * Logical functions:: Logical operations
- * Comparison functions:: Comparison operators
- * String comparison functions:: String comparison functions
- * Casts:: Cast operators
- * Control flow functions:: Control flow functions
- * Mathematical functions:: Mathematical functions
- * String functions:: String functions
- * Date and time functions:: Date and time functions
- * Miscellaneous functions:: Miscellaneous functions
- * Group by functions:: Functions for @code{GROUP BY} clause
- @code{CREATE TABLE} Syntax
- * Silent column changes:: Silent column changes
- @code{INSERT} Syntax
- * INSERT SELECT::
- * INSERT DELAYED::
- @code{SHOW} Syntax (Get Information About Tables, Columns,...)
- * SHOW DATABASE INFO::
- * SHOW TABLE STATUS::
- * SHOW STATUS::
- * SHOW VARIABLES::
- * SHOW LOGS::
- * SHOW PROCESSLIST::
- * SHOW GRANTS::
- * SHOW CREATE TABLE::
- MySQL Table Types
- * MyISAM:: MyISAM tables
- * MERGE:: MERGE tables
- * ISAM:: ISAM tables
- * HEAP:: HEAP tables
- * BDB:: BDB or Berkeley_db tables
- * GEMINI:: GEMINI tables
- * INNOBASE:: INNOBASE tables
- MyISAM Tables
- * Key space:: Space needed for keys
- * MyISAM table formats:: MyISAM table formats
- MyISAM Table Formats
- * Static format:: Static (Fixed-length) table characteristics
- * Dynamic format:: Dynamic table characteristics
- * Compressed format:: Compressed table characteristics
- BDB or Berkeley_db Tables
- * BDB overview::
- * BDB install::
- * BDB start::
- * BDB characteristic::
- * BDB TODO::
- * BDB errors::
- GEMINI Tables
- * GEMINI overview::
- * GEMINI start::
- * GEMINI features::
- * GEMINI TODO::
- INNOBASE Tables
- * INNOBASE overview::
- * INNOBASE start:: INNOBASE startup options
- * Using INNOBASE tables:: Using INNOBASE tables
- * INNOBASE restrictions:: Some restrictions on @code{INNOBASE} tables:
- MySQL Tutorial
- * Connecting-disconnecting:: Connecting to and disconnecting from the server
- * Entering queries:: Entering queries
- * Examples:: Examples
- * Searching on two keys:: Searching on two keys
- * Database use:: Creating and using a database
- * Getting information:: Getting information about databases and tables
- * Batch mode:: Using @code{mysql} in batch mode
- * Twin:: Queries from twin project
- Examples of Common Queries
- * example-Maximum-column:: The maximum value for a column
- * example-Maximum-row:: The row holding the maximum of a certain column
- * example-Maximum-column-group:: Maximum of column per group
- * example-Maximum-column-group-row:: The rows holding the group-wise maximum of a certain field
- * example-user-variables:: Using user variables
- * example-Foreign keys:: Using foreign keys
- Creating and Using a Database
- * Creating database:: Creating a database
- * Creating tables:: Creating a table
- * Loading tables:: Loading data into a table
- * Retrieving data:: Retrieving information from a table
- * Multiple tables:: Using more than one table
- Retrieving Information from a Table
- * Selecting all:: Selecting all data
- * Selecting rows:: Selecting particular rows
- * Selecting columns:: Selecting particular columns
- * Sorting rows:: Sorting rows
- * Date calculations:: Date calculations
- * Working with NULL:: Working with @code{NULL} values
- * Pattern matching:: Pattern matching
- * Counting rows:: Counting rows
- Queries from Twin Project
- * Twin pool:: Find all non-distributed twins
- * Twin event:: Show a table on twin pair status
- MySQL Server Functions
- * Languages:: What languages are supported by @strong{MySQL}?
- * Table size:: How big @strong{MySQL} tables can be
- What Languages Are Supported by MySQL?
- * Character sets:: The character set used for data and sorting
- * Adding character set:: Adding a new character set
- * Character arrays:: The character definition arrays
- * String collating:: String collating support
- * Multi-byte characters:: Multi-byte character support
- Replication in MySQL
- * Replication Intro:: Introduction
- * Replication Implementation:: Replication Implementation Overview
- * Replication HOWTO:: HOWTO
- * Replication Features:: Replication Features
- * Replication Options:: Replication Options in my.cnf
- * Replication SQL:: SQL Commands related to replication
- * Replication FAQ:: Frequently Asked Questions about replication
- * Replication Problems:: Troubleshooting Replication.
- Getting Maximum Performance from MySQL
- * Optimize Basics:: Optimization overview
- * System:: System/Compile time and startup parameter tuning
- * Data size:: Get your data as small as possible
- * MySQL indexes:: How @strong{MySQL} uses indexes
- * Query Speed:: Speed of queries that access or update data
- * Tips:: Other optimization tips
- * Benchmarks:: Using your own benchmarks
- * Design:: Design choices
- * Design Limitations:: MySQL design limitations/tradeoffs
- * Portability:: Portability
- * Internal use:: What have we used MySQL for?
- System/Compile Time and Startup Parameter Tuning
- * Compile and link options:: How compiling and linking affects the speed of MySQL
- * Disk issues:: Disk issues
- * Server parameters:: Tuning server parameters
- * Table cache:: How MySQL opens and closes tables
- * Creating many tables:: Drawbacks of creating large numbers of tables in the same database
- * Open tables:: Why so many open tables?
- * Memory use:: How MySQL uses memory
- * Internal locking:: How MySQL locks tables
- * Table locking:: Table locking issues
- * DNS::
- Disk Issues
- * Symbolic links:: Using symbolic links for databases and tables
- Speed of Queries that Access or Update Data
- * Estimating performance:: Estimating query performance
- * SELECT speed:: Speed of @code{SELECT} queries
- * Where optimizations:: How MySQL optimizes @code{WHERE} clauses
- * DISTINCT optimization:: How MySQL Optimizes @code{DISTINCT}
- * LEFT JOIN optimization:: How MySQL optimizes @code{LEFT JOIN}
- * LIMIT optimization:: How MySQL optimizes @code{LIMIT}
- * Insert speed:: Speed of @code{INSERT} queries
- * Update speed:: Speed of @code{UPDATE} queries
- * Delete speed:: Speed of @code{DELETE} queries
- MySQL Utilites
- * Programs:: What do the executables do?
- * safe_mysqld:: safe_mysqld, the wrapper around mysqld
- * mysqld_multi:: Program for managing multiple @strong{MySQL} servers
- * mysql:: The command line tool
- * mysqladmin:: Administering a @strong{MySQL} server
- * mysqldump:: Dumping the structure and data from @strong{MySQL} databases and tables
- * mysqlhotcopy:: Copying @strong{MySQL} Databases and Tables
- * mysqlimport:: Importing data from text files
- * perror:: Displaying error messages
- * mysqlshow:: Showing databases, tables and columns
- * myisampack:: The @strong{MySQL} compressed read-only table generator
- Maintaining a MySQL Installation
- * Table maintenance:: Table maintenance and crash recovery
- * Maintenance regimen:: Setting up a table maintenance regimen
- * Table-info:: Getting information about a table
- * Crash recovery:: Using @code{myisamchk} for crash recovery
- * Log file maintenance:: Log file maintenance
- Using @code{myisamchk} for Table Maintenance and Crash Recovery
- * myisamchk syntax:: @code{myisamchk} invocation syntax
- * myisamchk memory:: @code{myisamchk} memory usage
- @code{myisamchk} Invocation Syntax
- * myisamchk general options::
- * myisamchk check options::
- * myisamchk repair options::
- * myisamchk other options::
- Using @code{myisamchk} for Crash Recovery
- * Check:: How to check tables for errors
- * Repair:: How to repair tables
- * Optimization:: Table optimization
- Adding New Functions to MySQL
- * Adding UDF:: Adding a new user-definable function
- * Adding native function:: Adding a new native function
- Adding a New User-definable Function
- * UDF calling sequences:: UDF calling sequences
- * UDF arguments:: Argument processing
- * UDF return values:: Return values and error handling
- * UDF compiling:: Compiling and installing user-definable functions
- Adding New Procedures to MySQL
- * procedure analyse:: Procedure analyse
- * Writing a procedure:: Writing a procedure.
- MySQL ODBC Support
- * Installing MyODBC:: How to install MyODBC
- * ODBC administrator:: How to fill in the various fields in the ODBC administrator program
- * ODBC Problems:: How to report problems with @strong{MySQL} ODBC
- * MyODBC clients:: Programs known to work with @strong{MyODBC}
- * ODBC and last_insert_id:: How to get the value of an @code{AUTO_INCREMENT} column in ODBC
- * MyODBC bug report:: Reporting problems with MyODBC
- Using MySQL with Some Common Programs
- * Apache:: Using @strong{MySQL} with Apache
- * Borland C++::
- Problems and Common Errors
- * What is crashing:: How to determine what is causing problems
- * Crashing:: What to do if @strong{MySQL} keeps crashing
- * Link errors:: Problems when linking with the @strong{MySQL} client library
- * Common errors:: Some common errors when using @strong{MySQL}
- * Full disk:: How @strong{MySQL} handles a full disk
- * Multiple sql commands:: How to run SQL commands from a text file
- * Temporary files:: Where @strong{MySQL} stores temporary files
- * Problems with mysql.sock:: How to protect @file{/tmp/mysql.sock}
- * Changing MySQL user:: How to run @strong{MySQL} as a normal user
- * Resetting permissions:: How to reset a forgotten password.
- * File permissions :: Problems with file permissions
- * Not enough file handles:: File not found
- * Using DATE:: Problems using @code{DATE} columns
- * Timezone problems:: Timezone problems
- * Case sensitivity:: Case sensitivity in searches
- * Problems with NULL:: Problems with @code{NULL} values
- * Problems with alias:: Problems with @code{alias}
- * Deleting from related tables:: Deleting rows from related tables
- * No matching rows:: Solving problems with no matching rows
- * ALTER TABLE problems:: Problems with @code{ALTER TABLE}.
- * Change column order:: How to change the order of columns in a table
- Some Common Errors When Using MySQL
- * Error Access denied:: @code{Access denied} Error
- * Gone away:: @code{MySQL server has gone away} error
- * Can not connect to server:: @code{Can't connect to [local] MySQL server} error
- * Blocked host:: @code{Host '...' is blocked} error
- * Too many connections:: @code{Too many connections} error
- * Non-transactional tables:: @code{Some non-transactional changed tables couldn't be rolled back} Error
- * Out of memory:: @code{Out of memory} error
- * Packet too large:: @code{Packet too large} error
- * Communication errors:: Communication errors / Aborted connection
- * Full table:: @code{The table is full} error
- * Cannot create:: @code{Can't create/write to file} Error
- * Commands out of sync:: @code{Commands out of sync} error in client
- * Ignoring user:: @code{Ignoring user} error
- * Cannot find table:: @code{Table 'xxx' doesn't exist} error
- * Cannot initialize character set::
- Solving Some Common Problems with MySQL
- * Log Replication:: Database replication with update log
- * Backup:: Database backups
- * Multiple servers:: Running multiple @strong{MySQL} servers on the same machine
- The MySQL log files
- * Error log::
- * Query log::
- * Update log::
- * Binary log::
- * Slow query log::
- MySQL Client Tools and APIs
- * C:: @strong{MySQL} C API
- * C API datatypes:: C API datatypes
- * C API function overview:: C API function Overview
- * C API functions:: C API function descriptions
- * Perl:: @strong{MySQL} Perl API
- * Eiffel:: @strong{MySQL} Eiffel wrapper
- * Java:: @strong{MySQL} Java connectivity (JDBC)
- * PHP:: @strong{MySQL} PHP API
- * Cplusplus:: @strong{MySQL} C++ APIs
- * Python:: @strong{MySQL} Python APIs
- * Tcl:: @strong{MySQL} Tcl APIs
- C API Function Descriptions
- * mysql_affected_rows:: @code{mysql_affected_rows()}
- * mysql_close:: @code{mysql_close()}
- * mysql_connect:: @code{mysql_connect()}
- * mysql_change_user:: @code{mysql_change_user()}
- * mysql_character_set_name:: @code{mysql_character_set_name()}
- * mysql_create_db:: @code{mysql_create_db()}
- * mysql_data_seek:: @code{mysql_data_seek()}
- * mysql_debug:: @code{mysql_debug()}
- * mysql_drop_db:: @code{mysql_drop_db()}
- * mysql_dump_debug_info:: @code{mysql_dump_debug_info()}
- * mysql_eof:: @code{mysql_eof()}
- * mysql_errno:: @code{mysql_errno()}
- * mysql_error:: @code{mysql_error()}
- * mysql_escape_string:: @code{mysql_escape_string()}
- * mysql_fetch_field:: @code{mysql_fetch_field()}
- * mysql_fetch_fields:: @code{mysql_fetch_fields()}
- * mysql_fetch_field_direct:: @code{mysql_fetch_field_direct()}
- * mysql_fetch_lengths:: @code{mysql_fetch_lengths()}
- * mysql_fetch_row:: @code{mysql_fetch_row()}
- * mysql_field_count:: @code{mysql_field_count()}
- * mysql_field_seek:: @code{mysql_field_seek()}
- * mysql_field_tell:: @code{mysql_field_tell()}
- * mysql_free_result:: @code{mysql_free_result()}
- * mysql_get_client_info:: @code{mysql_get_client_info()}
- * mysql_get_host_info:: @code{mysql_get_host_info()}
- * mysql_get_proto_info:: @code{mysql_get_proto_info()}
- * mysql_get_server_info:: @code{mysql_get_server_info()}
- * mysql_info:: @code{mysql_info()}
- * mysql_init:: @code{mysql_init()}
- * mysql_insert_id:: @code{mysql_insert_id()}
- * mysql_kill:: @code{mysql_kill()}
- * mysql_list_dbs:: @code{mysql_list_dbs()}
- * mysql_list_fields:: @code{mysql_list_fields()}
- * mysql_list_processes:: @code{mysql_list_processes()}
- * mysql_list_tables:: @code{mysql_list_tables()}
- * mysql_num_fields:: @code{mysql_num_fields()}
- * mysql_num_rows:: @code{mysql_num_rows()}
- * mysql_options:: @code{mysql_options()}
- * mysql_ping:: @code{mysql_ping()}
- * mysql_query:: @code{mysql_query()}
- * mysql_real_connect:: @code{mysql_real_connect()}
- * mysql_real_escape_string:: @code{mysql_real_escape_string()}
- * mysql_real_query:: @code{mysql_real_query()}
- * mysql_reload:: @code{mysql_reload()}
- * mysql_row_seek:: @code{mysql_row_seek()}
- * mysql_row_tell:: @code{mysql_row_tell()}
- * mysql_select_db:: @code{mysql_select_db()}
- * mysql_shutdown:: @code{mysql_shutdown()}
- * mysql_stat:: @code{mysql_stat()}
- * mysql_store_result:: @code{mysql_store_result()}
- * mysql_thread_id:: @code{mysql_thread_id()}
- * mysql_use_result:: @code{mysql_use_result()}
- * NULL mysql_store_result:: Why is it that after @code{mysql_query()} returns success, @code{mysql_store_result()} sometimes returns @code{NULL?}
- * Query results:: What results can I get from a query?
- * Getting unique ID:: How can I get the unique ID for the last inserted row?
- * C API linking problems:: Problems linking with the C API
- * Thread-safe clients:: How to make a thread-safe client
- MySQL Perl API
- * DBI with DBD:: @code{DBI} with @code{DBD::mysql}
- * Perl DBI Class:: The @code{DBI} interface
- * DBI-info:: More @code{DBI}/@code{DBD} information
- MySQL PHP API
- * PHP problems:: Common problems with MySQL and PHP
- How MySQL Compares to Other Databases
- * Compare mSQL:: How @strong{MySQL} compares to @code{mSQL}
- * Compare PostgreSQL:: How @strong{MySQL} compares with PostgreSQL
- How MySQL Compares to @code{mSQL}
- * Using mSQL tools:: How to convert @code{mSQL} tools for @strong{MySQL}
- * Protocol differences:: How @code{mSQL} and @strong{MySQL} client/server communications protocols differ
- * Syntax differences:: How @code{mSQL} 2.0 SQL syntax differs from @strong{MySQL}
- MySQL Internals
- * MySQL threads:: MySQL threads
- * MySQL full-text search:: MySQL full-text search
- * MySQL test suite:: MySQL test suite
- MySQL Full-text Search
- * Fulltext Fine-tuning::
- * Fulltext features to appear in MySQL 4.0::
- * Fulltext TODO::
- Credits
- * Developers::
- * Contributors::
- * Supporters::
- MySQL change history
- * News-4.0.x:: Changes in release 4.0.x (Development; Alpha)
- * News-3.23.x:: Changes in release 3.23.x (Stable)
- * News-3.22.x:: Changes in release 3.22.x (Older; Still supported)
- * News-3.21.x:: Changes in release 3.21.x
- * News-3.20.x:: Changes in release 3.20.x
- * News-3.19.x:: Changes in release 3.19.x
- Changes in release 4.0.x (Development; Alpha)
- * News-4.0.0:: Changes in release 4.0.0
- Changes in release 3.23.x (Stable)
- * News-3.23.35:: Changes in release 3.23.35
- * News-3.23.34a:: Changes in release 3.23.34a
- * News-3.23.34:: Changes in release 3.23.34
- * News-3.23.33:: Changes in release 3.23.33
- * News-3.23.32:: Changes in release 3.23.32
- * News-3.23.31:: Changes in release 3.23.31
- * News-3.23.30:: Changes in release 3.23.30
- * News-3.23.29:: Changes in release 3.23.29
- * News-3.23.28:: Changes in release 3.23.28
- * News-3.23.27:: Changes in release 3.23.27
- * News-3.23.26:: Changes in release 3.23.26
- * News-3.23.25:: Changes in release 3.23.25
- * News-3.23.24:: Changes in release 3.23.24
- * News-3.23.23:: Changes in release 3.23.23
- * News-3.23.22:: Changes in release 3.23.22
- * News-3.23.21:: Changes in release 3.23.21
- * News-3.23.20:: Changes in release 3.23.20
- * News-3.23.19:: Changes in release 3.23.19
- * News-3.23.18:: Changes in release 3.23.18
- * News-3.23.17:: Changes in release 3.23.17
- * News-3.23.16:: Changes in release 3.23.16
- * News-3.23.15:: Changes in release 3.23.15
- * News-3.23.14:: Changes in release 3.23.14
- * News-3.23.13:: Changes in release 3.23.13
- * News-3.23.12:: Changes in release 3.23.12
- * News-3.23.11:: Changes in release 3.23.11
- * News-3.23.10:: Changes in release 3.23.10
- * News-3.23.9:: Changes in release 3.23.9
- * News-3.23.8:: Changes in release 3.23.8
- * News-3.23.7:: Changes in release 3.23.7
- * News-3.23.6:: Changes in release 3.23.6
- * News-3.23.5:: Changes in release 3.23.5
- * News-3.23.4:: Changes in release 3.23.4
- * News-3.23.3:: Changes in release 3.23.3
- * News-3.23.2:: Changes in release 3.23.2
- * News-3.23.1:: Changes in release 3.23.1
- * News-3.23.0:: Changes in release 3.23.0
- Changes in release 3.22.x (Older; Still supported)
- * News-3.22.35:: Changes in release 3.22.35
- * News-3.22.34:: Changes in release 3.22.34
- * News-3.22.33:: Changes in release 3.22.33
- * News-3.22.32:: Changes in release 3.22.32
- * News-3.22.31:: Changes in release 3.22.31
- * News-3.22.30:: Changes in release 3.22.30
- * News-3.22.29:: Changes in release 3.22.29
- * News-3.22.28:: Changes in release 3.22.28
- * News-3.22.27:: Changes in release 3.22.27
- * News-3.22.26:: Changes in release 3.22.26
- * News-3.22.25:: Changes in release 3.22.25
- * News-3.22.24:: Changes in release 3.22.24
- * News-3.22.23:: Changes in release 3.22.23
- * News-3.22.22:: Changes in release 3.22.22
- * News-3.22.21:: Changes in release 3.22.21
- * News-3.22.20:: Changes in release 3.22.20
- * News-3.22.19:: Changes in release 3.22.19
- * News-3.22.18:: Changes in release 3.22.18
- * News-3.22.17:: Changes in release 3.22.17
- * News-3.22.16:: Changes in release 3.22.16
- * News-3.22.15:: Changes in release 3.22.15
- * News-3.22.14:: Changes in release 3.22.14
- * News-3.22.13:: Changes in release 3.22.13
- * News-3.22.12:: Changes in release 3.22.12
- * News-3.22.11:: Changes in release 3.22.11
- * News-3.22.10:: Changes in release 3.22.10
- * News-3.22.9:: Changes in release 3.22.9
- * News-3.22.8:: Changes in release 3.22.8
- * News-3.22.7:: Changes in release 3.22.7
- * News-3.22.6:: Changes in release 3.22.6
- * News-3.22.5:: Changes in release 3.22.5
- * News-3.22.4:: Changes in release 3.22.4
- * News-3.22.3:: Changes in release 3.22.3
- * News-3.22.2:: Changes in release 3.22.2
- * News-3.22.1:: Changes in release 3.22.1
- * News-3.22.0:: Changes in release 3.22.0
- Changes in release 3.21.x
- * News-3.21.33:: Changes in release 3.21.33
- * News-3.21.32:: Changes in release 3.21.32
- * News-3.21.31:: Changes in release 3.21.31
- * News-3.21.30:: Changes in release 3.21.30
- * News-3.21.29:: Changes in release 3.21.29
- * News-3.21.28:: Changes in release 3.21.28
- * News-3.21.27:: Changes in release 3.21.27
- * News-3.21.26:: Changes in release 3.21.26
- * News-3.21.25:: Changes in release 3.21.25
- * News-3.21.24:: Changes in release 3.21.24
- * News-3.21.23:: Changes in release 3.21.23
- * News-3.21.22:: Changes in release 3.21.22
- * News-3.21.21a:: Changes in release 3.21.21a
- * News-3.21.21:: Changes in release 3.21.21
- * News-3.21.20:: Changes in release 3.21.20
- * News-3.21.19:: Changes in release 3.21.19
- * News-3.21.18:: Changes in release 3.21.18
- * News-3.21.17:: Changes in release 3.21.17
- * News-3.21.16:: Changes in release 3.21.16
- * News-3.21.15:: Changes in release 3.21.15
- * News-3.21.14b:: Changes in release 3.21.14b
- * News-3.21.14a:: Changes in release 3.21.14a
- * News-3.21.13:: Changes in release 3.21.13
- * News-3.21.12:: Changes in release 3.21.12
- * News-3.21.11:: Changes in release 3.21.11
- * News-3.21.10:: Changes in release 3.21.10
- * News-3.21.9:: Changes in release 3.21.9
- * News-3.21.8:: Changes in release 3.21.8
- * News-3.21.7:: Changes in release 3.21.7
- * News-3.21.6:: Changes in release 3.21.6
- * News-3.21.5:: Changes in release 3.21.5
- * News-3.21.4:: Changes in release 3.21.4
- * News-3.21.3:: Changes in release 3.21.3
- * News-3.21.2:: Changes in release 3.21.2
- * News-3.21.0:: Changes in release 3.21.0
- Changes in release 3.20.x
- * News-3.20.18:: Changes in release 3.20.18
- * News-3.20.17:: Changes in release 3.20.17
- * News-3.20.16:: Changes in release 3.20.16
- * News-3.20.15:: Changes in release 3.20.15
- * News-3.20.14:: Changes in release 3.20.14
- * News-3.20.13:: Changes in release 3.20.13
- * News-3.20.11:: Changes in release 3.20.11
- * News-3.20.10:: Changes in release 3.20.10
- * News-3.20.9:: Changes in release 3.20.9
- * News-3.20.8:: Changes in release 3.20.8
- * News-3.20.7:: Changes in release 3.20.7
- * News-3.20.6:: Changes in release 3.20.6
- * News-3.20.3:: Changes in release 3.20.3
- * News-3.20.0:: Changes in releases 3.20.0
- Changes in release 3.19.x
- * News-3.19.5:: Changes in release 3.19.5
- * News-3.19.4:: Changes in release 3.19.4
- * News-3.19.3:: Changes in release 3.19.3
- MySQL and the future (The TODO)
- * TODO MySQL 4.0:: Things that should be in Version 4.0
- * TODO future:: Things that must be done in the near future
- * TODO sometime:: Things that have to be done sometime
- * TODO unplanned:: Some things we don't have any plans to do
- Comments on porting to other systems
- * Debugging server:: Debugging a @strong{MySQL} server
- * Debugging client:: Debugging a @strong{MySQL} client
- * The DBUG package:: The DBUG package
- * Locking methods:: Locking methods
- * RTS-threads:: Comments about RTS threads
- * Thread packages:: Differences between different thread packages
- Debugging a MySQL server
- * Compiling for debugging::
- * Making trace files::
- * Using stack trace::
- * Using log files::
- * Reproducable test case::
- @end detailmenu
- @end menu
- @cindex overview
- @cindex general information
- @cindex online location of manual
- @cindex manual, online location
- @node Introduction, Questions, Top, Top
- @chapter General Information About MySQL
- @menu
- * What-is:: What is @strong{MySQL}?
- * What is MySQL AB::
- * Manual-info:: About this manual
- * History:: History of @strong{MySQL}
- * MySQL-Books:: Books about MySQL
- * Features:: The main features of @strong{MySQL}
- * Stability:: How stable is @strong{MySQL}?
- * Year 2000 compliance:: Year 2000 compliance
- * General-SQL:: General SQL information and tutorials
- * Useful Links:: Useful @strong{MySQL}-related links
- @end menu
- This is the @strong{MySQL} reference manual; it documents @strong{MySQL}
- Version @value{mysql_version}. As @strong{MySQL} is work in progress,
- the manual gets updated frequently. There is a very good chance that
- this version is out of date, unless you are looking at it online. The
- most recent version of this manual is available at
- @uref{http://www.mysql.com/documentation/} in many different formats. If you
- have a hard time finding information in the manual, you can try the
- searchable PHP version at @uref{http://www.mysql.com/documentation/manual.php}.
- @strong{MySQL} is a very fast, multi-threaded, multi-user, and robust SQL
- (Structured Query Language) database server.
- @strong{MySQL} is free software. It is licensed with the @strong{GNU
- GENERAL PUBLIC LICENSE} @uref{http://www.gnu.org/}.
- @xref{Licensing and Support}.
- @uref{http://www.mysql.com/, The @strong{MySQL} home page}
- provides the latest information about @strong{MySQL}.
- The following list describes some useful sections of the manual:
- @itemize @bullet
- @item
- To get information about the company behind MySQL, see @xref{What is MySQL AB}.
- @item
- For a discussion of @strong{MySQL}'s capabilities, see @ref{Features}.
- @item
- For installation instructions, see @ref{Installing}.
- @item
- For tips on porting @strong{MySQL} to new architectures or operating
- systems, see @ref{Porting}.
- @item
- For information about upgrading from a Version 3.21 release, see
- @ref{Upgrading-from-3.21}.
- @item
- For a tutorial introduction to @strong{MySQL}, see
- @ref{Tutorial}.
- @item
- For examples of SQL and benchmarking information, see the benchmarking
- directory (@file{sql-bench} in the distribution).
- @item
- For a history of new features and bug fixes, see @ref{News}.
- @item
- For a list of currently known bugs and misfeatures, see @ref{Bugs}.
- @item
- For future plans, see @ref{TODO}.
- @item
- For a list of all the contributors to this project, see @ref{Credits}.
- @end itemize
- @strong{IMPORTANT:}
- Reports of errors (often called bugs), as well as questions and comments,
- should be sent to the mailing list at @email{mysql@@lists.mysql.com}.
- @xref{Bug reports}.
- The @code{mysqlbug} script should be used to generate bug reports.
- @c FIX! RPMs are also binary
- For source distributions, the @code{mysqlbug} script can be found in the
- @file{scripts} directory. For binary distributions, @code{mysqlbug} can
- be found in the @file{bin} directory. If you have found a sensitive
- security bug in @strong{MySQL}, you should send an email to
- @email{security@@mysql.com}.
- @cindex errors, reporting
- @cindex reporting, errors
- @cindex mailing list address
- @cindex @code{mysqlbug} script, location
- If you have any suggestions concerning additions or corrections to this
- manual, please send them to the manual team at
- (@email{docs@@mysql.com}).
- This is a reference manual; it does not provide general instruction on SQL
- or relational database concepts. If you want general information about SQL,
- see @ref{General-SQL}. For books that focus more specifically on
- @strong{MySQL}, see @ref{MySQL-Books}.
- @cindex MySQL, defined
- @cindex MySQL, introduction
- @node What-is, What is MySQL AB, Introduction, Introduction
- @section What Is MySQL
- @strong{MySQL}, the most popular Open Source SQL database, is provided
- by @strong{MySQL AB}. @strong{MySQL AB} is a commercial company that
- builds its business providing services around the @strong{MySQL} database.
- @xref{What is MySQL AB}.
- @table @asis
- @item @strong{MySQL} is a database management system.
- A database is a structured collection of data. It may be anything from a
- simple shopping list to a picture gallery or the vast amounts of
- information in a corporate network. To add, access, and process data
- stored in a computer database, you need a database management system
- such as @strong{MySQL}. Since computers are very good at handling large
- amounts of data, database management plays a central role in computing,
- as stand-alone utilities, or as parts of other applications.
- @cindex databases, defined
- @item @strong{MySQL} is a relational database management system.
- A relational database stores data in separate tables rather than putting
- all the data in one big storeroom. This adds speed and flexibility. The
- tables are linked by defined relations making it possible to combine
- data from several tables on request. The SQL part of @strong{MySQL}
- stands for "Structured Query Language" - the most common standardized
- language used to access databases.
- @cindex relational databases, defined
- @cindex SQL, defined
- @item @strong{MySQL} is Open Source Software.
- Open source means that it is possible for anyone to use and modify.
- Anybody can download @strong{MySQL} from the Internet and use it
- without paying anything. Anybody so inclined can study the source code
- and change it to fit their needs. @strong{MySQL} uses the GPL (GNU
- General Public License) @uref{http://www.gnu.org}, to define what you
- may and may not do with the software in different situations. If you
- feel uncomfortable with the GPL or need to embed @strong{MySQL} into a
- commercial application you can buy a commercially licensed version from
- us.
- @cindex open source, defined
- @cindex General Public License
- @item Why use @strong{MySQL}?
- @strong{MySQL} is very fast, reliable, and easy to use. If that is what
- you are looking for, you should give it a try. @strong{MySQL} also has a
- very practical set of features developed in very close cooperation with
- our users. You can find a performance comparison of @strong{MySQL}
- to some other database managers on our benchmark page. @xref{Benchmarks}.
- @strong{MySQL} was originally developed to handle very large databases
- much faster than existing solutions and has been successfully used in
- highly demanding production environments for several years. Though
- under constant development, @strong{MySQL} today offers a rich and very
- useful set of functions. The connectivity, speed, and security make
- @strong{MySQL} highly suited for accessing databases on the Internet.
- @item The technical features of @strong{MySQL}
- For advanced technical information, see @ref{Reference}. @strong{MySQL} is
- a client/server system that consists of a multi-threaded SQL server
- that supports different backends, several different client programs and
- libraries, administrative tools, and a programming interface.
- We also provide @strong{MySQL} as a multi-threaded library which you can
- link into your application to get a smaller, faster, easier to manage
- product.
- @item @strong{MySQL} has a lot of contributed software available.
- It is very likely that you will find that your favorite
- application/language already supports @strong{MySQL}.
- @end table
- @cindex pronounciation, MySQL
- @cindex MySQL, pronouniation
- @cindex goals of MySQL
- The official way to pronounce @strong{MySQL} is ``My Ess Que Ell'' (not
- MY-SEQUEL). But we try to avoid correcting people who say MY-SEQUEL.
- @cindex MySQL AB, defined
- @node What is MySQL AB, Manual-info, What-is, Introduction
- @section What Is MySQL AB
- @strong{MySQL AB} is the Swedish company owned and run by the @strong{MySQL}
- founders and main developers. We are dedicated to developing
- @strong{MySQL} and spreading our database to new users. @strong{MySQL AB}
- owns the copyright to the @strong{MySQL} server source code and the
- @strong{MySQL} trademark. A significant amount of revenues from our
- services goes to developing @strong{MySQL}. @xref{What-is}.
- @strong{MySQL AB} has been profitable providing @strong{MySQL AB} from the start.
- We don't get any outside funding, but have earned all our money ourselves.
- We are searching after partners that would like to support our
- development of @strong{MySQL} so that we could accelerate the
- development pace. If you are interested in doing this, you can email
- @email{partner@@mysql.com} about this!
- @strong{MYSQL AB} has currently 20+ people on it's payroll and is
- growing rapidly. @uref{http://www.mysql.com/development/team.html}.
- Our main streams of income are
- @itemize @bullet
- @item
- Commercial high quality support for @strong{MySQL} provided by
- @strong{MySQL} developers. If you are interested in getting support,
- please visit @uref{https://order.mysql.com/} to view our support options
- or to order support.
- @item
- Consulting services. We have developers/consults in 12 countries and
- partners in many other countries that can help you with almost any
- @strong{MySQL} related issues. If you need consulting services, please
- email a good description of your needs to @email{info@@mysql.com}! If we
- can't handle this ourselves we can usually find a partner or a developer
- that can help you with your problems.
- @item
- We sell licenses for using @strong{MySQL} as an embedded
- database. @xref{Cost}. If you have a commercial product for which you
- need a fast high quality database but you can't afford to make your
- product Open Source, you can buy the right to use the @strong{MySQL} server
- under a normal commercial copyright. If you are interested in this you can
- buy @strong{MySQL} licenses at @uref{https://order.mysql.com/} or contact
- us at @email{licensing@@mysql.com}.
- @item
- Advertising; @uref{http://www.mysql.com/} is a very popular web site with
- more than 10,000,000 page views per months (January 2001). By putting a
- banner on this you are guaranteed to reach a lot of potential customers
- in the Open source, Linux and database community. If you are interested
- in this email @email{advertising@@mysql.com}.
- @item
- We are building a partner program to be able to provide @strong{MySQL}
- services in every country. If you are interested in becomming a partner
- of @strong{MySQL AB} please visit
- @uref{http://www.mysql.com/information/partners.html} or email
- @email{partner@@mysql.com}.
- @item
- We provide @strong{MySQL} training through our partner programs. For more
- information, please email @email{info@@mysql.com}.
- @item
- The @strong{MySQL} brand has since 1995 been associated with speed,
- reliability and is known to be something you can depend upon. If you are
- interested in using the @strong{MySQL} trademark in your marketing, you
- can email @email{info@@mysql.com} about this.
- @end itemize
- The @strong{MySQL} core values shows our dedication to @strong{MySQL} and
- Open Source:
- We want @strong{MySQL} to be:
- @itemize @bullet
- @item
- The best and the most used database in the world
- @item
- Available and affordable for all
- @item
- Easy to use
- @item
- Continuously improving while remaining fast and safe
- @item
- Fun to use and improve
- @item
- Free from bugs
- @end itemize
- @strong{MySQL AB} and the people of @strong{MySQL AB}:
- @itemize @bullet
- @item
- Promote Open Source Philosophy and support the Open Source Community
- @item
- Aim to be good citizens
- @item
- Prefer partners that share our values and mind-set
- @item
- Answer mail and give support
- @item
- Are a virtual company, networking with others
- @item
- Work against software patents
- @end itemize
- @node Manual-info, History, What is MySQL AB, Introduction
- @section About This Manual
- @menu
- * Manual conventions:: Conventions used in this manual
- @end menu
- This manual is currently available in Texinfo, plain text, Info, HTML,
- PostScript, and PDF versions. The primary document is the Texinfo file.
- The HTML version is produced automatically using a modified version of
- @code{texi2html}. The plain text and Info versions are produced with
- @code{makeinfo}. The Postscript version is produced using @code{texi2dvi}
- and @code{dvips}. The PDF version is produced with @code{pdftex}.
- @cindex manual, available formats
- @cindex Texinfo
- This manual is written and maintained by David Axmark, Michael (Monty)
- Widenius, Jeremy Cole, and Paul DuBois. For other contributors,
- see @ref{Credits}.
- @node Manual conventions, , Manual-info, Manual-info
- @subsection Conventions Used in This Manual
- This manual uses certain typographical conventions:
- @cindex manual, typographical conventions
- @cindex typographical conventions
- @table @asis
- @item @code{constant}
- Constant-width font is used for command names and options; SQL statements;
- database, table and column names; C and Perl code; and environment variables.
- Example: ``To see how @code{mysqladmin} works, invoke it with the
- @code{--help} option.''
- @item @file{filename}
- Constant-width font with surrounding quotes is used for filenames and
- pathnames. Example: ``The distribution is installed under the
- @file{/usr/local/} directory.''
- @item @samp{c}
- Constant-width font with surrounding quotes is also used to indicate
- character sequences. Example: ``To specify a wild card, use the @samp{%}
- character.''
- @item @emph{italic}
- Italic font is used for emphasis, @emph{like this}.
- @item @strong{boldface}
- Boldface font is used for access privilege names (for example, ``do not grant
- the @strong{process} privilege lightly'') and occasionally to convey
- @strong{especially strong emphasis}.
- @end table
- When commands are shown that are meant to be executed by a particular
- program, the program is indicated by a prompt shown before the command. For
- example, @code{shell>} indicates a command that you execute from your login
- shell, and @code{mysql>} indicates a command that you execute from the
- @code{mysql} client program:
- @example
- shell> type a shell command here
- mysql> type a mysql command here
- @end example
- Shell commands are shown using Bourne shell syntax. If you are using a
- @code{csh}-style shell, you may need to issue commands slightly differently.
- For example, the sequence to set an environment variable and run a command
- looks like this in Bourne shell syntax:
- @example
- shell> VARNAME=value some_command
- @end example
- @cindex shell syntax
- @cindex command syntax
- For @code{csh}, you would execute the sequence like this:
- @example
- shell> setenv VARNAME value
- shell> some_command
- @end example
- Often, database, table, and column names must be substituted into commands. To
- indicate that such substitution is necessary, this manual uses
- @code{db_name}, @code{tbl_name} and @code{col_name}. For example, you might
- see a statement like this:
- @example
- mysql> SELECT col_name FROM db_name.tbl_name;
- @end example
- This means that if you were to enter a similar statement, you would supply
- your own database, table, and column names, perhaps like this:
- @example
- mysql> SELECT author_name FROM biblio_db.author_list;
- @end example
- SQL statements may be written in uppercase or lowercase. When this manual
- shows a SQL statement, uppercase is used for particular keywords if those
- keywords are under discussion (to emphasize them) and lowercase is used for
- the rest of the statement. For example, you might see the following in a
- discussion of the @code{SELECT} statement:
- @example
- mysql> SELECT count(*) FROM tbl_name;
- @end example
- On the other hand, in a discussion of the @code{COUNT()} function, the
- same statement would be written like this:
- @example
- mysql> select COUNT(*) from tbl_name;
- @end example
- If no particular emphasis is intended, all keywords are written uniformly
- in uppercase.
- In syntax descriptions, square brackets (@samp{[} and @samp{]}) are used
- to indicate optional words or clauses:
- @example
- DROP TABLE [IF EXISTS] tbl_name
- @end example
- When a syntax element consists of a number of alternatives, the alternatives
- are separated by vertical bars (@samp{|}). When one member from a set of
- choices @strong{may} be chosen, the alternatives are listed within square
- brackets (@samp{[} and @samp{]}):
- @example
- TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
- @end example
- When one member from a set of choices @strong{must} be chosen, the
- alternatives are listed within braces (@samp{@{} and @samp{@}}):
- @example
- @{DESCRIBE | DESC@} tbl_name @{col_name | wild@}
- @end example
- @cindex MySQL version
- @cindex MySQL history
- @cindex history of MySQL
- @node History, MySQL-Books, Manual-info, Introduction
- @section History of MySQL
- We once started out with the intention of using @code{mSQL} to connect to our
- tables using our own fast low-level (ISAM) routines. However, after some
- testing we came to the conclusion that @code{mSQL} was not fast enough nor
- flexible enough for our needs. This resulted in a new SQL interface to our
- database but with almost the same API interface as @code{mSQL}. This API was
- chosen to ease porting of third-party code.
- The derivation of the name @strong{MySQL} is not perfectly clear. Our base
- directory and a large number of our libraries and tools have had the prefix
- ``my'' for well over 10 years. However, Monty's daughter (some years younger)
- is also named My. So which of the two gave its name to @strong{MySQL} is
- still a mystery, even for us.
- @node MySQL-Books, Features, History, Introduction
- @section Books About MySQL
- @cindex books, about MySQL
- @cindex manuals, about MySQL
- While this manual is still the right place for up to date techical
- information, its primary goal is to contain everything there is to know
- about @strong{MySQL}. It is sometimes nice to have a bound book to read
- in bed or while you travel. Here is a list of books about @strong{MySQL} and
- related subjects (in English).
- By purchasing a book through these hyperlinks provided herein, you are
- contributing to the development of @strong{MySQL}.
- @emph{MySQL}
- @multitable @columnfractions .3 .7
- @item Available @tab
- @uref{http://service.bfast.com/bfast/click?bfmid=2181&sourceid=34233559&bfpid=0735709211&bfmtype=book, Barnes and Noble}
- @item Publisher @tab New Riders
- @item Author @tab Paul DuBois
- @item Pub Date @tab 1st Edition December 1999
- @item ISBN @tab 0735709211
- @item Pages @tab 800
- @item Price @tab $49.99 US
- @item Downloadable examples @tab
- @uref{http://www.mysql.com/Downloads/Contrib/Examples/samp_db.tar.gz, @code{samp_db.tar.gz}}
- @item Errata @tab
- @uref{http://www.mysql.com/documentation/pauls-mysql-book-errata.html, are available here}
- @end multitable
- Foreword by Michael ``Monty'' Widenius, @strong{MySQL} Moderator.@*
- In @emph{MySQL}, Paul DuBois provides you with a comprehensive guide to
- one of the most popular relational database systems. Paul has
- contributed to the online documentation for @strong{MySQL} and is an
- active member of the @strong{MySQL} community. The principal @strong{MySQL}
- developer, Monty Widenius, and a network of his fellow developers
- reviewed the manuscript, and provided Paul with the kind of insight
- no one else could supply.@*
- Instead of merely giving you a general overview of @strong{MySQL}, Paul
- teaches you how to make the most of its capabilities. Through two
- sample database applications that run throughout the book, he
- gives you solutions to problems you're sure to face. He helps you
- integrate @strong{MySQL} efficiently with third-party tools, such as PHP
- and Perl, enabling you to generate dynamic Web pages through
- database queries. He teaches you to write programs that access
- @strong{MySQL} databases, and also provides a comprehensive set of
- references to column types, operators, functions, SQL syntax,
- @strong{MySQL} programming, C API, Perl @code{DBI}, and PHP API.
- @emph{MySQL} simply gives you the kind of information you won't find
- anywhere else.@*
- If you use @strong{MySQL}, this book provides you with:
- @itemize @bullet
- @item
- An introduction to @strong{MySQL} and SQL
- @item
- Coverage of @strong{MySQL}'s data types and how to use them
- @item
- Thorough treatment of how to write client programs in C
- @item
- A guide to using the Perl @code{DBI} and PHP APIs for developing
- command-line and Web-based applications
- @item
- Tips on administrative issues such as user accounts, backup,
- crash recovery, and security
- @item
- Help in choosing an ISP for @strong{MySQL} access
- @item
- A comprehensive reference for @strong{MySQL}'s data types, operators,
- functions, and SQL statements and utilities
- @item
- Complete reference guides for @strong{MySQL}'s C API, the Perl @code{DBI} API,
- and PHP's @strong{MySQL}-related functions
- @end itemize
- @*
- @emph{MySQL & mSQL}
- @multitable @columnfractions .3 .7
- @item Available @tab @uref{http://service.bfast.com/bfast/click?bfmid=2181&sourceid=34233559&bfpid=1565924347&bfmtype=book, Barnes and Noble}
- @item Publisher @tab O'Reilly
- @item Authors @tab Randy Jay Yarger, George Reese & Tim King
- @item Pub Date @tab 1st Edition July 1999
- @item ISBN @tab 1-56592-434-7, Order Number: 4347
- @item Pages @tab 506
- @item Price @tab $34.95
- @end multitable
- This book teaches you how to use @strong{MySQL} and @code{mSQL}, two popular
- and robust database products that support key subsets of SQL on both Linux
- and Unix systems. Anyone who knows basic C, Java, Perl, or Python can
- write a program to interact with a database, either as a stand-alone
- application or through a Web page. This book takes you through the
- whole process, from installation and configuration to programming
- interfaces and basic administration. Includes ample tutorial
- material.
- @*
- @emph{Sams' Teach Yourself MySQL in 21 Days}
- @multitable @columnfractions .3 .7
- @item Available @tab @uref{http://service.bfast.com/bfast/click?bfmid=2181&sourceid=34233559&bfpid=0672319144&bfmtype=book, Barnes and Noble}
- @item Publisher @tab Sams
- @item Authors @tab Mark Maslakowski and Tony Butcher
- @item Pub Date @tab June 2000
- @item ISBN @tab 0672319144
- @item Pages @tab 650
- @item Price @tab $39.99
- @end multitable
- Sams Teach Yourself @strong{MySQL} in 21 Days is for
- intermediate Linux users who want to move into databases. A large share of
- the audience is Web developers who need a database to store large amounts of
- information that can be retrieved via the Web.
- @emph{Sams' Teach Yourself MySQL in 21 Days} is a practical, step-by-step
- tutorial. The reader will learn to design and employ this open source
- database technology into his/her Web site using practical, hands-on examples
- to follow.@*
- @emph{E-Commerce Solutions with MySQL}
- @multitable @columnfractions .3 .7
- @item Available @tab @uref{http://service.bfast.com/bfast/click?bfmid=2181&sourceid=34233559&bfpid=0761524452&bfmtype=book, Barnes and Noble}
- @item Publisher @tab Prima Communications, Inc.
- @item Authors @tab N/A
- @item Pub Date @tab January 2000
- @item ISBN @tab 0761524452
- @item Pages @tab 500
- @item Price @tab $39.99
- @end multitable
- No description available.
- @*
- @emph{MySQL and PHP from Scratch}
- @multitable @columnfractions .3 .7
- @item Available @tab @uref{http://service.bfast.com/bfast/click?bfmid=2181&sourceid=34233559&bfpid=0789724405&bfmtype=book, Barnes and Noble}
- @item Publisher @tab Que
- @item Authors @tab N/A
- @item Pub Date @tab September 2000
- @item ISBN @tab 0789724405
- @item Pages @tab 550
- @item Price @tab $34.99
- @end multitable
- This book puts together information on installing, setting up, and
- troubleshooting Apache, MySQL, PHP3, and IMP into one complete
- volume. You also learn how each piece is part of a whole by learning,
- step-by-step, how to create a web-based e-mail system. Learn to run
- the equivalent of Active Server Pages (ASP) using PHP3, set up an
- e-commerce site using a database and the Apache web server, and create
- a data entry system (such as sales, product quality tracking, customer
- preferences, etc) that no installation in the PC.
- @*
- @emph{Professional MySQL Programming}
- @multitable @columnfractions .3 .7
- @item Available @tab @uref{http://shop.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=1861005164, Barnes and Noble}
- @item Publisher @tab Wrox Press, Inc.
- @item Authors @tab N/A
- @item Pub Date @tab Late 2001
- @item ISBN @tab 1861005164
- @item Pages @tab 1000
- @item Price @tab $49.99
- @end multitable
- No description available.
- @*
- @emph{Professional Linux Programming}
- @multitable @columnfractions .3 .7
- @item Available @tab @uref{http://service.bfast.com/bfast/click?bfmid=2181&sourceid=34233559&bfpid=1861003013&bfmtype=book, Barnes and Noble}
- @item Publisher @tab Wrox Press, Inc.
- @item Authors @tab N/A
- @item Pub Date @tab September 2000
- @item ISBN @tab 1861003013
- @item Pages @tab 1155
- @item Price @tab $47.99
- @end multitable
- In this follow-up to the best-selling Beginning Linux Programming, you
- will learn from the authors' real-world knowledge and experience of
- developing software for Linux; you'll be taken through the development
- of a sample 'DVD Store' application, with 'theme' chapters addressing
- different aspects of its implementation. Meanwhile, individual
- 'take-a-break' chapters cover important topics that go beyond the
- bounds of the central theme. All focus on the practical aspects of
- programming, showing how crucial it is to choose the right tools for
- the job, use them as they should be used, and get things right first
- time.
- @*
- @emph{PHP and MySQL Web Development}
- @multitable @columnfractions .3 .7
- @item Available @tab @uref{http://service.bfast.com/bfast/click?bfmid=2181&sourceid=34233559&bfpid=0672317842&bfmtype=book, Barnes and Noble}
- @item Publisher @tab Sams
- @item Authors @tab Luke Welling, Laura Thomson
- @item Pub Date @tab November 2000
- @item ISBN @tab 0672317842
- @item Pages @tab 700
- @item Price @tab $49.99
- @end multitable
- PHP3 and MySQL Web Development introduces you to the advantages of
- implementing both MySQL and PHP3. These advantages are detailed
- through the provision of both statistics and several case studies. A
- practical web application is developed throughout the book, providing
- you with the tools necessary to implement a functional online
- database. Each function is developed separately, allowing you the
- choice to incorporate only those parts that you would like to
- implement. Programming concepts of the PHP3 language are highlighted,
- including functions which tie MySQL support into a PHP3 script and
- advanced topics regarding table manipulation.
- @*
- @strong{Books recommended by the MySQL Developers}
- @emph{SQL-99 Complete, Really}
- @multitable @columnfractions .3 .7
- @item Available @tab @uref{http://service.bfast.com/bfast/click?bfmid=2181&sourceid=34233559&bfpid=0879305681&bfmtype=book, Barnes and Noble}
- @item Publisher @tab CMP Books
- @item Authors @tab Peter Gulutzan, Trudy Pelzer
- @item Pub Date @tab April 1999
- @item ISBN @tab 0879305681
- @item Pages @tab 1104
- @item Price @tab $55.96
- @end multitable
- This book contains complete descriptions of the new standards for
- syntax, data structures, and retrieval processes of SQL databases. As
- an example-based reference manual, it includes all of the CLI
- functions, information, schema tables, and status codes, as well as a
- working SQL database provided on the companion disk.
- @*
- @emph{C, A reference manual}
- @multitable @columnfractions .3 .7
- @item Available @tab @uref{http://service.bfast.com/bfast/click?bfmid=2181&sourceid=34233559&bfpid=0133262243&bfmtype=book, Barnes and Noble}
- @item Publisher @tab Prentice Hall
- @item Authors @tab Samuel P. Harbison, Guy L. Steele
- @item Pub Date @tab September 1994
- @item ISBN @tab 0133262243
- @item Pages @tab 480
- @item Price @tab $35.99
- @end multitable
- A new and improved revision of the bestselling C language
- reference. This manual introduces the notion of "Clean C, " writing C
- code that can be compiled as a C++ program, C programming style that
- emphasizes correctness, portability, and maintainability. and
- incorporates the ISO C Amendment 1 (1994) which specifies new
- facilities for writing portable, international programs in C.
- @*
- @emph{C++ for Real Programmers}
- @multitable @columnfractions .3 .7
- @item Available @tab @uref{http://service.bfast.com/bfast/click?bfmid=2181&sourceid=34233559&bfpid=0120499428&bfmtype=book, Barnes and Noble}
- @item Publisher @tab Academic Press, Incorporated
- @item Authors @tab Jeff Alger, Jim Keogh
- @item Pub Date @tab February 1998
- @item ISBN @tab 0120499428
- @item Pages @tab 388
- @item Price @tab $39.95
- @end multitable
- C++ For Real Programmers bridges the gap between C++ as described in
- beginner and intermediate-level books and C++ as it is practiced by
- experts. Numerous valuable techniques are described, organized into
- three simple themes: indirection, class hierarchies, and memory
- management. It also provides indepth coverage of template creation,
- exception handling, pointers and optimization techniques. The focus of
- the book is on ANSI C++ and so is compiler independent. C++ For Real
- Programmers is a revision of Secrets of the C++ Masters and includes a
- new appendix comparing C++ with Java. The book comes with a 3.5" disk
- for Windows with source code.
- @*
- @emph{Algorithms in C}
- @multitable @columnfractions .3 .7
- @item Available @tab @uref{http://service.bfast.com/bfast/click?bfmid=2181&sourceid=34233559&bfpid=0201514257&bfmtype=book, Barnes and Noble}
- @item Publisher @tab Addison Wesley Longman, Inc.
- @item Authors @tab Robert Sedgewick
- @item Pub Date @tab April 1990
- @item ISBN @tab 0201514257
- @item Pages @tab 648
- @item Price @tab $45.75
- @end multitable
- Algorithms in C describes a variety of algorithms in a number of areas
- of interest, including: sorting, searching, string-processing, and
- geometric, graph and mathematical algorithms. The book emphasizes
- fundamental techniques, providing readers with the tools to
- confidently implement, run, and debug useful algorithms.
- @*
- @emph{Multithreaded Programming with Pthreads}
- @multitable @columnfractions .3 .7
- @item Available @tab @uref{http://service.bfast.com/bfast/click?bfmid=2181&sourceid=34233559&bfpid=0136807291&bfmtype=book, Barnes and Noble}
- @item Publisher @tab Prentice Hall
- @item Authors @tab Bil Lewis, Daniel J. Berg
- @item Pub Date @tab October 1997
- @item ISBN @tab 0136807291
- @item Pages @tab 432
- @item Price @tab $34.95
- @end multitable
- Based on the best-selling Threads Primer, Multithreaded Programming
- with Pthreads gives you a solid understanding of Posix threads: what
- they are, how they work, when to use them, and how to optimize
- them. It retains the clarity and humor of the Primer, but includes
- expanded comparisons to Win32 and OS/2 implementations. Code examples
- tested on all of the major UNIX platforms are featured along with
- detailed explanations of how and why they use threads.
- @*
- @emph{Programming the PERL DBI: Database Programming with PERL}
- @multitable @columnfractions .3 .7
- @item Available @tab @uref{http://service.bfast.com/bfast/click?bfmid=2181&sourceid=34233559&bfpid=1565926994&bfmtype=book, Barnes and Noble}
- @item Publisher @tab O'Reilly & Associates, Incorporated
- @item Authors @tab Alligator Descartes, Tim Bunce
- @item Pub Date @tab February 2000
- @item ISBN @tab 1565926994
- @item Pages @tab 400
- @item Price @tab $27.96
- @end multitable
- Programming the Perl DBI is coauthored by Alligator Descartes, one of
- the most active members of the DBI community, and by Tim Bunce, the
- inventor of DBI. For the uninitiated, the book explains the
- architecture of DBI and shows you how to write DBI-based programs. For
- the experienced DBI dabbler, this book explains DBI's nuances and the
- peculiarities of each individual DBD.
- The book includes:
- @itemize @bullet
- @item
- An introduction to DBI and its design
- @item
- How to construct queries and bind parameters
- @item
- Working with database, driver, and statement handles
- @item
- Debugging techniques
- @item
- Coverage of each existing DBD
- @item
- A complete reference to DBI
- @end itemize
- @*
- @node Features, Stability, MySQL-Books, Introduction
- @section The Main Features of MySQL
- @cindex main features of MySQL
- @cindex features of MySQL
- The following list describes some of the important characteristics
- of @strong{MySQL}:
- @c This list is too technical and should be divided into one feature
- @c list comparable to commercial competition and a very technical on
- @c with max limits (from crash-me) and so on.
- @itemize @bullet
- @item
- Fully multi-threaded using kernel threads. That means it can easily
- use multiple CPUs if available.
- @item
- C, C++, Eiffel, Java, Perl, PHP, Python and Tcl APIs. @xref{Clients}.
- @item
- Works on many different platforms. @xref{Which OS}.
- @item
- Many column types: signed/unsigned integers 1, 2, 3, 4, and 8 bytes
- long, @code{FLOAT}, @code{DOUBLE}, @code{CHAR}, @code{VARCHAR},
- @code{TEXT}, @code{BLOB}, @code{DATE}, @code{TIME}, @code{DATETIME},
- @code{TIMESTAMP}, @code{YEAR}, @code{SET}, and @code{ENUM} types. @xref{Column
- types}.
- @item
- Very fast joins using an optimized one-sweep multi-join.
- @item
- Full operator and function support in the @code{SELECT} and @code{WHERE}
- parts of queries. Example:
- @example
- mysql> SELECT CONCAT(first_name, " ", last_name) FROM tbl_name
- WHERE income/dependents > 10000 AND age > 30;
- @end example
- @item
- SQL functions are implemented through a highly optimized class library and
- should be as fast as they can get! Usually there shouldn't be any memory
- allocation at all after query initialization.
- @item
- Full support for SQL @code{GROUP BY} and @code{ORDER BY}
- clauses. Support for group functions (@code{COUNT()},
- @code{COUNT(DISTINCT)}, @code{AVG()}, @code{STD()}, @code{SUM()},
- @code{MAX()} and @code{MIN()}).
- @item
- Support for @code{LEFT OUTER JOIN} and @code{RIGHT OUTER JOIN} with ANSI
- SQL and ODBC syntax.
- @item
- You can mix tables from different databases in the same query (as of
- Version 3.22).
- @item
- A privilege and password system that is very flexible and secure and
- allows host-based verification. Passwords are secure because all
- password traffic is encrypted when you connect to a server.
- @item
- ODBC (Open-DataBase-Connectivity) support for Win32 (with source). All
- ODBC 2.5 functions and many others. For example, you can use MS Access to
- connect to your @strong{MySQL} server. @xref{ODBC}.
- @item
- Very fast B-tree disk tables with index compression.
- @item
- Up to 32 indexes per table are allowed. Each index may consist of 1 to 16
- columns or parts of columns. The maximum index length is 500 bytes (this
- may be changed when compiling @strong{MySQL}). An index may use a prefix
- of a @code{CHAR} or @code{VARCHAR} field.
- @item
- Fixed-length and variable-length records.
- @item
- In-memory hash tables which are used as temporary tables.
- @item
- Handles large databases. We are using @strong{MySQL} with some
- databases that contain 50,000,000 records and we know of users that
- uses @strong{MySQL} with 60,000 tables and about 5,000,000,000 rows
- @item
- All columns have default values. You can use @code{INSERT} to insert a
- subset of a table's columns; those columns that are not explicitly given
- values are set to their default values.
- @item
- Uses GNU Automake, Autoconf, and @code{libtool} for portability.
- @item
- Written in C and C++. Tested with a broad range of different compilers.
- @item
- A very fast thread-based memory allocation system.
- @item
- No memory leaks. Tested with a commercial memory leakage detector
- (@code{purify}).
- @item
- Includes @code{myisamchk}, a very fast utility for table checking,
- optimization, and repair.
- @xref{Maintenance}.
- @item
- Full support for several different character sets, including
- ISO-8859-1 (Latin1), big5, ujis, and more. For example, the
- Scandinavian characters `@ringaccent{a}', `@"a' and `@"o' are allowed
- in table and column names.
- @item
- All data are saved in the chosen character set. All comparisons for normal
- string columns are case insensitive.
- @item
- Sorting is done according to the chosen character set (the Swedish
- way by default). It is possible to change this when the @strong{MySQL} server
- is started up. To see an example of very advanced sorting, look at the
- Czech sorting code. @strong{MySQL} supports many different character sets
- that can be specified at compile and run time.
- @item
- Aliases on tables and columns are allowed as in the SQL92 standard.
- @item
- @code{DELETE}, @code{INSERT}, @code{REPLACE}, and @code{UPDATE} return
- how many rows were changed (affected). It is possible to return the number
- of rows matched instead by setting a flag when connecting to the server.
- @item
- Function names do not clash with table or column names. For example, @code{ABS}
- is a valid column name. The only restriction is that for a function call, no
- spaces are allowed between the function name and the @samp{(} that follows it.
- @xref{Reserved words}.
- @item
- All @strong{MySQL} programs can be invoked with the @code{--help} or @code{-?}
- options to obtain online assistance.
- @item
- The server can provide error messages to clients in many
- languages. @xref{Languages}.
- @item
- Clients may connect to the @strong{MySQL} server using TCP/IP Sockets,
- Unix Sockets (Unixes), or Named Pipes (NT).
- @item
- The @strong{MySQL}-specific @code{SHOW} command can be used to retrieve
- information about databases, tables, and indexes. The @code{EXPLAIN} command
- can be used to determine how the optimizer resolves a query.
- @end itemize
- @cindex stability
- @node Stability, Year 2000 compliance, Features, Introduction
- @section How Stable Is MySQL?
- This section addresses the questions ``How stable is
- @strong{MySQL}?'' and ``Can I depend on @strong{MySQL} in this project?''
- We will try to clarify some issues and to answer some of the more
- important questions that seem to concern many people. This section has been
- put together from information gathered from the mailing list (which is very
- active in reporting bugs).
- At TcX, @strong{MySQL} has worked without any problems in our projects since
- mid-1996. When @strong{MySQL} was released to a wider public, we noticed that
- there were some pieces of ``untested code'' that were quickly found by the
- new users who made queries in a manner different than our own. Each new
- release has had fewer portability problems than the previous one (even though
- each has had many new features).
- @c FIX We've been stable for quite a while now. :) (jcole)
- Each release of @strong{MySQL} has been usable, and there have been problems
- only when users start to use code from the ``gray zones.'' Naturally, outside
- users don't know what the gray zones are; this section attempts to indicate
- those that are currently known. The descriptions deal with Version 3.23.x
- of @strong{MySQL}. All known and reported bugs are fixed in the
- latest version, with the exception of the bugs listed in the bugs section,
- which are things that are design-related. @xref{Bugs}.
- @strong{MySQL} is written in multiple layers and different independent
- modules. These modules are listed below with an indication of how
- well-tested each of them is:
- @cindex modules, list of
- @table @strong
- @item The ISAM table handler --- Stable
- This manages storage and retrieval of all data in @strong{MySQL} Version 3.22
- and earlier. In all @strong{MySQL} releases there hasn't been a
- single (reported) bug in this code. The only known way to get a
- corrupted table is to kill the server in the middle of an update. Even
- that is unlikely to destroy any data beyond rescue, because all data are
- flushed to disk between each query. There hasn't been a single bug
- report about lost data because of bugs in @strong{MySQL}.
- @cindex ISAM table handler
- @cindex storing, data
- @cindex retrieving, data
- @cindex data, ISAM table handler
- @item The MyISAM table handler --- Gamma
- This is new in @strong{MySQL} Version 3.23. It's largely based on the ISAM
- table code but has a lot of new and very useful features.
- @item The parser and lexical analyser --- Stable
- There hasn't been a single reported bug in this system for a long time.
- @item The C client code --- Stable
- No known problems. In early Version 3.20 releases, there were some limitations
- in the send/receive buffer size. As of Version 3.21, the buffer size is now
- dynamic up to a default of 16M.
- @item Standard client programs --- Stable
- These include @code{mysql}, @code{mysqladmin}, @code{mysqlshow},
- @code{mysqldump}, and @code{mysqlimport}.
- @item Basic SQL --- Stable
- The basic SQL function system and string classes and dynamic memory
- handling. Not a single reported bug in this system.
- @item Query optimizer --- Stable
- @item Range optimizer --- Stable
- @item Join optimizer --- Stable
- @item Locking --- Gamma
- This is very system-dependent. On some systems there are big problems
- using standard OS locking (@code{fcntl()}). In these cases, you should run the
- @strong{MySQL} daemon with the @code{--skip-locking} flag. Problems are known
- to occur on some Linux systems, and on SunOS when using NFS-mounted file
- systems.
- @item Linux threads --- Stable
- The major problem found has been with the @code{fcntl()} call, which is
- fixed by using the @w{@code{--skip-locking}} option to
- @code{mysqld}. Some people have reported lockup problems with Version 0.5.
- LinuxThreads will need to be recompiled if you plan to use
- 1000+ concurrent connections. Although it is possible to run that many
- connections with the default LinuxThreads (however, you will never go
- above 1021), the default stack spacing of 2 MB makes the application
- unstable, and we have been able to reproduce a coredump after creating
- 1021 idle connections. See Linux Notes for more details.
- @item Solaris 2.5+ pthreads --- Stable
- We use this for all our production work.
- @item MIT-pthreads (Other systems) --- Stable
- There have been no reported bugs since Version 3.20.15 and no known bugs since
- Version 3.20.16. On some systems, there is a ``misfeature'' where some
- operations are quite slow (a 1/20 second sleep is done between each query).
- Of course, MIT-pthreads may slow down everything a bit, but index-based
- @code{SELECT} statements are usually done in one time frame so there shouldn't
- be a mutex locking/thread juggling.
- @item Other thread implementions --- Beta - Gamma
- The ports to other systems are still very new and may have bugs, possibly
- in @strong{MySQL}, but most often in the thread implementation itself.
- @item @code{LOAD DATA ...}, @code{INSERT ... SELECT} --- Stable
- Some people thought they had found bugs here, but these usually have
- turned out to be misunderstandings. Please check the manual before reporting
- problems!
- @item @code{ALTER TABLE} --- Stable
- Small changes in Version 3.22.12.
- @item DBD --- Stable
- Now maintained by Jochen Wiedmann
- @email{wiedmann@@neckar-alb.de}. Thanks!
- @item @code{mysqlaccess} --- Stable
- Written and maintained by Yves Carlier
- @email{Yves.Carlier@@rug.ac.be}. Thanks!
- @item @code{GRANT} --- Stable
- Big changes made in @strong{MySQL} Version 3.22.12.
- @item @strong{MyODBC} (uses ODBC SDK 2.5) --- Gamma
- It seems to work well with some programs.
- @item Replication -- Beta / Gamma
- We are still working on replication, so don't expect this to be rock
- solid yet. On the other hand, some @strong{MySQL} users are already
- using this with good results.
- @item BDB Tables -- Beta
- The Berkeley DB code is very stable, but we are still improving the interface
- between @strong{MySQL} and BDB tables, so it will take some time before this
- is as tested as the other table types.
- @item Innobase Tables -- Alpha
- This is a very recent addition to @code{MySQL} and are not very tested yet.
- @item Automatic recovery of MyISAM tables - Beta.
- This only affects the new code that checks if the table was closed properly
- on open and executes an automatic check/repair of the table if it wasn't.
- @item MERGE tables -- Beta / Gamma
- The usage of keys on @code{MERGE} tables is still not that tested. The
- other part of the @code{MERGE} code is quite well tested.
- @item FULLTEXT -- Beta
- Text search seams to work, but is still not widely used.
- @end table
- MySQL AB provides e-mail support for paying customers, but the @strong{MySQL}
- mailing list usually provides answers to common questions. Bugs are
- usually fixed right away with a patch; for serious bugs, there is almost
- always a new release.
- @cindex Year 2000 compliance
- @cindex compliance, Y2K
- @cindex date functions, Y2K compliance
- @node Year 2000 compliance, General-SQL, Stability, Introduction
- @section Year 2000 Compliance
- @strong{MySQL} itself has no problems with Year 2000 (Y2K) compliance:
- @itemize @bullet
- @item
- @strong{MySQL} uses Unix time functions and has no problems with dates
- until @code{2069}; all 2-digit years are regarded to be in the range
- @code{1970} to @code{2069}, which means that if you store @code{01} in a
- @code{year} column, @strong{MySQL} treats it as @code{2001}.
- @item
- All @strong{MySQL} date
- functions are stored in one file @file{sql/time.cc} and coded very carefully
- to be year 2000-safe.
- @item
- In @strong{MySQL} Version 3.22 and later, the new @code{YEAR} column type
- can store years @code{0} and @code{1901} to @code{2155} in 1 byte and display
- them using 2 or 4 digits.
- @end itemize
- You may run into problems with applications that use @strong{MySQL} in a
- way that is not Y2K-safe. For example, many old applications store
- or manipulate years using 2-digit values (which are ambiguous) rather than
- 4-digit values. This problem may be compounded by applications that use
- values such as @code{00} or @code{99} as ``missing'' value indicators.
- Unfortunately, these problems may be difficult to fix, because different
- applications may be written by different programmers, each of whom may
- use a different set of conventions and date-handling functions.
- Here is a simple demonstration illustrating that @strong{MySQL} doesn't have
- any problems with dates until the year 2030:
- @example
- mysql> DROP TABLE IF EXISTS y2k;
- mysql> CREATE TABLE y2k (date date, date_time datetime, time_stamp timestamp);
- mysql> INSERT INTO y2k VALUES ("1998-12-31","1998-12-31 23:59:59",19981231235959);
- mysql> INSERT INTO y2k VALUES ("1999-01-01","1999-01-01 00:00:00",19990101000000);
- mysql> INSERT INTO y2k VALUES ("1999-09-09","1999-09-09 23:59:59",19990909235959);
- mysql> INSERT INTO y2k VALUES ("2000-01-01","2000-01-01 00:00:00",20000101000000);
- mysql> INSERT INTO y2k VALUES ("2000-02-28","2000-02-28 00:00:00",20000228000000);
- mysql> INSERT INTO y2k VALUES ("2000-02-29","2000-02-29 00:00:00",20000229000000);
- mysql> INSERT INTO y2k VALUES ("2000-03-01","2000-03-01 00:00:00",20000301000000);
- mysql> INSERT INTO y2k VALUES ("2000-12-31","2000-12-31 23:59:59",20001231235959);
- mysql> INSERT INTO y2k VALUES ("2001-01-01","2001-01-01 00:00:00",20010101000000);
- mysql> INSERT INTO y2k VALUES ("2004-12-31","2004-12-31 23:59:59",20041231235959);
- mysql> INSERT INTO y2k VALUES ("2005-01-01","2005-01-01 00:00:00",20050101000000);
- mysql> INSERT INTO y2k VALUES ("2030-01-01","2030-01-01 00:00:00",20300101000000);
- mysql> INSERT INTO y2k VALUES ("2050-01-01","2050-01-01 00:00:00",20500101000000);
- mysql> SELECT * FROM y2k;
- +------------+---------------------+----------------+
- | date | date_time | time_stamp |
- +------------+---------------------+----------------+
- | 1998-12-31 | 1998-12-31 23:59:59 | 19981231235959 |
- | 1999-01-01 | 1999-01-01 00:00:00 | 19990101000000 |
- | 1999-09-09 | 1999-09-09 23:59:59 | 19990909235959 |
- | 2000-01-01 | 2000-01-01 00:00:00 | 20000101000000 |
- | 2000-02-28 | 2000-02-28 00:00:00 | 20000228000000 |
- | 2000-02-29 | 2000-02-29 00:00:00 | 20000229000000 |
- | 2000-03-01 | 2000-03-01 00:00:00 | 20000301000000 |
- | 2000-12-31 | 2000-12-31 23:59:59 | 20001231235959 |
- | 2001-01-01 | 2001-01-01 00:00:00 | 20010101000000 |
- | 2004-12-31 | 2004-12-31 23:59:59 | 20041231235959 |
- | 2005-01-01 | 2005-01-01 00:00:00 | 20050101000000 |
- | 2030-01-01 | 2030-01-01 00:00:00 | 20300101000000 |
- | 2050-01-01 | 2050-01-01 00:00:00 | 00000000000000 |
- +------------+---------------------+----------------+
- 13 rows in set (0.00 sec)
- @end example
- This shows that the @code{DATE} and @code{DATETIME} types will not
- give any problems with future dates (they handle dates until the year
- 9999).
- The @code{TIMESTAMP} type, which is used to store the current time, has a
- range up to only @code{2030-01-01}. @code{TIMESTAMP} has a range of
- @code{1970} to @code{2030} on 32-bit machines (signed value). On 64-bit
- machines it handles times up to @code{2106} (unsigned value).
- Even though @strong{MySQL} is Y2K-compliant, it is your responsibility to
- provide unambiguous input. See @ref{Y2K issues} for @strong{MySQL}'s rules
- for dealing with ambiguous date input data (data containing 2-digit year
- values).
- @cindex manuals, about @strong{MySQL}
- @cindex books, about @strong{MySQL}
- @node General-SQL, Useful Links, Year 2000 compliance, Introduction
- @section General SQL Information and Tutorials
- The following book has been recommended by several people on the @strong{MySQL}
- mailing list:
- @example
- Judith S. Bowman, Sandra L. Emerson and Marcy Darnovsky
- @emph{The Practical SQL Handbook: Using Structured Query Language}
- Second Edition
- Addison-Wesley
- ISBN 0-201-62623-3
- http://www.awl.com
- @end example
- The following book has also received some recommendations by @strong{MySQL}
- users:
- @example
- Martin Gruber
- @emph{Understanding SQL}
- ISBN 0-89588-644-8
- Publisher Sybex 510 523 8233
- Alameda, CA USA
- @end example
- A SQL tutorial is available on the net at
- http://www.geocities.com/SiliconValley/Vista/2207/sql1.html.
- @c A nice german 404 error. (jcole)
- @c SQL in 21 Tagen (online book in German language):
- @c http://www.mut.de/leseecke/buecher/sql/inhalt.htm
- @node Useful Links, , General-SQL, Introduction
- @section Useful MySQL-related Links
- Apart from the following links, you can find and download a lot of
- @strong{MySQL} programs, tools and APIs from the
- @uref{http://www.mysql.com/Downloads/Contrib/, Contrib directory}.
- @cindex @code{Contrib} directory
- @cindex URLs to MySQL information
- @cindex related information URLs
- @strong{MySQL}
- @subheading Tutorials and Manuals
- @itemize @bullet
- @item @uref{http://www.4t2.com/mysql}@*
- Information about the German MySQL mailing list.
- @item @uref{http://www2.rent-a-database.de/mysql/}
- @strong{MySQL} manual in German.
- @item @uref{http://www.bitmover.com:8888//home/bk/mysql}@*
- Web access to the @strong{MySQL} BitKeeper repository.
- @item @uref{http://www.analysisandsolutions.com/code/mybasic.htm}@*
- Beginners @strong{MySQL} Tutorial on how to install and set up
- @strong{MySQL} on a Windows machine.
- @item @uref{http://www.devshed.com/Server_Side/MySQL/}@*
- A lot of @strong{MySQL} tutorials.
- @item @uref{http://mysql.hitstar.com/}@*
- MySQL manual in Chinese.
- @item @uref{http://www.linuxplanet.com/linuxplanet/tutorials/1046/1/}@*
- Setting Up a @strong{MySQL}-based Web site.
- @item @uref{http://www.hotwired.com/webmonkey/backend/tutorials/tutorial1.html}@*
- @strong{MySQL}-Perl tutorial.
- @item @uref{http://www.iserver.com/support/contrib/perl5/modules.html}@*
- Installing new Perl modules that require locally installed modules.
- @item @uref{http://www.hotwired.com/webmonkey/databases/tutorials/tutorial4.html}@*
- PHP/@strong{MySQL} Tutorial.
- @item @uref{http://www.useractive.com/}@*
- Hands on tutorial for @strong{MySQL}.
- @end itemize
- @subheading Porting MySQL/Using MySQL on Different Systems
- @itemize @bullet
- @item @uref{http://xclave.macnn.com/MySQL/}@*
- The Mac OS Xclave. Running @strong{MySQL} on Mac OS X
- @item @uref{http://www.prnet.de/RegEx/mysql.html}@*
- MySQL for Mac OS X Server.
- @item @uref{http://www.latencyzero.com/macosx/mysql.html}@*
- Bulding MySQL for Mac OS X
- @item @uref{http://www.essencesw.com/Software/mysqllib.html}@*
- New Client libraries for the Mac OS Classic (Macintosh).
- @item @uref{http://www.lilback.com/macsql/}@*
- Client libraries for Mac OS Classic (Macintosh).
- @end itemize
- @subheading Perl-related Links
- @itemize @bullet
- @item @uref{http://dbimysql.photoflux.com/}@*
- Perl DBI with @strong{MySQL} FAQ.
- @end itemize
- @subheading MySQL Discussion Forums
- @itemize @bullet
- @item @uref{http://www.weberdev.com/}@*
- Examples using @strong{MySQL}; (check Top 20)
- @item @uref{http://futurerealm.com/forum/futureforum.htm}@*
- FutureForum Web Discussion Software.
- @end itemize
- @c FIX We should get longer descriptions for things in this category!
- @subheading Commercial Applications that Support MySQL
- @itemize @bullet
- @item @uref{http://www.supportwizard.com/}@*
- SupportWizard; Interactive helpdesk on the Web (This product includes a
- licensed copy of @strong{MySQL}.)
- @item @uref{http://www.sonork.com/}@*
- Sonork, Instant Messenger that is not only Internet oriented. It's
- focused on private networks and on small to medium companies. Client
- is free, server is free for up to 5 seats.
- @item @uref{http://www.stweb.org/}@*
- StWeb - Stratos Web and Application server - An easy-to-use, cross
- platform, Internet/Intranet development and deployment system for
- development of web-enabled applications. The standard version of StWeb
- has a native interface to @strong{MySQL} database.
- @item @uref{http://www.rightnowtech.com/}@*
- Right Now Web; Web automation for customer service.
- @item @uref{http://www.icaap.org/Bazaar/}@*
- Bazaar; Interactive Discussion Forums with Web interface.
- @cindex PhoneSweep
- @item @uref{http://www.phonesweep.com/}@*
- PhoneSweepT is the world's first commercial Telephone Scanner. Many break-ins
- in recent years have come not through the Internet, but through unauthorized
- dial-up modems. PhoneSweep lets you find these modems by repeatedly placing
- phone calls to every phone number that your organization
- controls. PhoneSweep has a built-in expert system that can recognize
- more than 250 different kinds of remote-access programs, including
- Carbon Copy(TM), pcANYWHERE(TM), and Windows NT RAS. All information is stored
- in the SQL database. It then generates a comprehensive report detailing
- which services were discovered on which dial-up numbers in your
- organization.
- @end itemize
- @subheading SQL Clients and Report Writers
- @itemize @bullet
- @item @uref{http://www.urbanresearch.com/software/utils/urbsql/index.html}@*
- @strong{MySQL} Editor/Utility for MS Windows Platforms.
- @item @uref{http://ksql.sourceforge.net/}@*
- KDE @strong{MySQL} client.
- @item @uref{http://www.ecker-software.de}@*
- A Windows GUI client by David Ecker.
- @item @uref{http://www.icaap.org/software/kiosk/}@*
- Kiosk; a @strong{MySQL} client for database management. Written in Perl.
- Will be a part of Bazaar.
- @item @uref{http://www.casestudio.com/}
- Db design tool that supports MySQL 3.23.
- @item @uref{http://home.skif.net/~voland/zeos/eng/index.html}@*
- Zeos - A client that supports @strong{MySQL}, Interbase and PostgreSQL.
- @item @uref{http://www.geocities.com/SiliconValley/Ridge/4280/GenericReportWriter/grwhome.html}
- A free report writer in Java
- @item @uref{http://www.javaframework.de}@*
- MySQLExport - Export of @strong{MySQL} create statements and data in a lot of
- different formats (SQL, HTML, CVS, text, ZIP, GZIP...)
- @item @uref{http://dlabs.4t2.com}@*
- M2D, a MySQL-ADmin-client for windows. It supports administration of
- MySQL-Databases, creating of new DBs and tables, editing etc.
- @item @uref{http://www.scibit.com/Products/Software/Utils/Mascon.asp}@*
- Mascon is a powerful Win32 GUI for the administering MySQL server databases.
- @item @uref{http://www.rtlabs.com/}@*
- MacSQL Monitor. GUI for MySQL, ODBC, and JDBC databases for the Mac OS.
- @end itemize
- @subheading Distributions that Include MySQL
- @c FIX add the rest (at least a couple more Linuxes)
- @itemize @bullet
- @item @uref{http://www.suse.com/}@*
- SuSE Linux (6.1 and above)
- @item @uref{http://www.redhat.com/}@*
- RedHat Linux (7.0 and above)
- @item @uref{http://distro.conectiva.com.br}
- Conectiva Linux (4.0 and above)
- @end itemize
- @subheading Web Development Tools that Support @strong{MySQL}
- @itemize @bullet
- @item @uref{http://www.php.net/}@*
- PHP: A server-side HTML-embedded scripting language.
- @item @uref{http://www.midgard-project.org}@*
- The Midgard Application Server; a powerful Web development environment
- based on @strong{MySQL} and PHP.
- @item @uref{http://www.smartworker.org}@*
- SmartWorker is a platform for Web application development.
- @item @uref{http://xsp.lentus.se/}@*
- XSP: e(X)tendible (S)erver (P)ages and is a HTML embedded tag language
- written in Java (previously known as XTAGS.)
- @cindex dbServ
- @item @uref{http://www.dbServ.de/}@*
- dbServ is an extension to a web server to integrate database output into
- your HTML code. You may use any HTML function in your output. Only the
- client will stop you. It works as standalone server or as JAVA servlet.
- @item @uref{http://www.chilisoft.com/}@*
- Platform independent ASP from Chili!Soft
- @c @item
- @c no answer from server 990830
- @c @uref{http://www.voicenet.com/~zellert/tjFM}@*
- @c A JDBC driver for @strong{MySQL}.
- @item @uref{http://www.wernhart.priv.at/php/}@*
- @strong{MySQL} + PHP demos.
- @item @uref{http://www.dbwww.com/}@*
- ForwardSQL: HTML interface to manipulate @strong{MySQL} databases.
- @item @uref{http://www.daa.com.au/~james/www-sql/}@*
- WWW-SQL: Display database information.
- @item @uref{http://www.minivend.com/minivend/}@*
- Minivend: A Web shopping cart.
- @item @uref{http://www.heitml.com/}@*
- HeiTML: A server-side extension of HTML and a 4GL language at the same time.
- @item @uref{http://www.metahtml.com/}@*
- Metahtml: A Dynamic Programming Language for WWW Applications.
- @item @uref{http://www.binevolve.com/}@*
- VelocityGen for Perl and Tcl.
- @item @uref{http://hawkeye.net/}@*
- Hawkeye Internet Server Suite.
- @item @uref{http://www.fastflow.com/}@*
- Network Database Connection For Linux
- @item @uref{http://www.wdbi.net/}@*
- WDBI: Web browser as a universal front end to databases which supports
- @strong{MySQL} well.
- @item @uref{http://www.webgroove.com/}@*
- WebGroove Script: HTML compiler and server-side scripting language.
- @item @uref{http://www.ihtml.com/}@*
- A server-side Web site scripting language.
- @item @uref{ftp://ftp.igc.apc.org/pub/myodbc/README}@*
- How to use @strong{MySQL} with ColdFusion on Solaris.
- @item @uref{http://calistra.com/MySQL/}@*
- Calistra's ODBC @strong{MySQL} Administrator.
- @cindex Webmerger
- @item @uref{http://www.webmerger.com}@*
- Webmerger - This CGI tool interprets files and generates dynamic output
- based on a set of simple tags. Ready-to-run drivers for @strong{MySQL} and
- PostgreSQL through ODBC.
- @item @uref{http://phpclub.net/}@*
- PHPclub - Tips and tricks for PHP.
- @item @uref{http://www.penguinservices.com/scripts}@*
- @strong{MySQL} and Perl Scripts.
- @item @uref{http://www.widgetchuck.com}@*
- The Widgetchuck; Web Site Tools and Gadgets
- @item @uref{http://www.adcycle.com/}@*
- AdCycle - advertising management software.
- @cindex pwPage
- @item @uref{http://sourceforge.net/projects/pwpage/}@*
- pwPage - provides an extremely
- fast and simple approach to the creation of database forms. That is,
- if a database table exists and an HTML page has been constructed using
- a few simple guidelines, pwPage can be immediately used for table data
- selections, insertions, updates, deletions and selectable table content
- reviewing.
- @item @uref{http://www.omnis-software.com/products/studio/studio.html}@*
- OMNIS Studio is a rapid application development (RAD) tool.
- @cindex Web+
- @item @uref{http://www.webplus.com}@*
- talentsoft Web+ 4.6 - a powerful and comprehensive development language for
- use in creating web-based client/server applications without writing
- complicated, low-level, and time-consuming CGI programs.
- @end itemize
- @subheading Database Design Tools with MySQL Support
- @itemize @bullet
- @item @uref{http://www.mysql.com/documentation/dezign/}@*
- "DeZign for databases" is a database development tool that uses an
- entity relationship diagram (ERD).
- @end itemize
- @subheading Web Servers with @strong{MySQL} Tools
- @itemize @bullet
- @item @uref{http://bourbon.netvision.net.il/mysql/mod_auth_mysql/}@*
- An Apache authentication module.
- @item @uref{http://www.roxen.com/}@*
- The Roxen Challenger Web server.
- @end itemize
- @subheading Extensions for Other Programs
- @itemize @bullet
- @item @uref{http://www.seawood.org/msql_bind/}@*
- @strong{MySQL} support for BIND (The Internet Domain Name Server).
- @item @uref{http://www.inet-interactive.com/sendmail/}@*
- @strong{MySQL} support for Sendmail and Procmail.
- @end itemize
- @subheading Using @strong{MySQL} with Other Programs
- @itemize @bullet
- @item @uref{http://www.iserver.com/support/addonhelp/database/mysql/msaccess.html}
- Using @strong{MySQL} with Access.
- @item @uref{http://www.iserver.com/support/contrib/perl5/modules.html}
- Installing new Perl modules that require locally installed modules.
- @end itemize
- @subheading ODBC-related Links
- @itemize @bullet
- @item @uref{http://www.iodbc.org/}@*
- Popular iODBC Driver Manager (libiodbc) now available in Open Source format.
- @item @uref{http://users.ids.net/~bjepson/freeODBC/}@*
- The FreeODBC Pages.
- @item @uref{http:/http://genix.net/unixODBC/}@*
- The unixODBC Project goals are to develop and promote unixODBC to be the
- definitive standard for ODBC on the Linux platform. This is to include GUI
- support for KDE.
- @item @uref{http://www.sw-soft.com/products/BtrieveODBC/}@*
- A @strong{MySQL}-based ODBC drivers for Btrieve. From SWsoft.
- @end itemize
- @subheading @strong{API}-related Links
- @itemize @bullet
- @c FIX i get no route on this host on 7/31/2k, check later (jcole)
- @item @uref{http://www.amedea.cz/mysqlx/index.html}@*
- MySQL COM extension - With this COM object you can use MySQL also on
- Windows with ASP pages or with Delphi, Visual Basic, Visual C++, etc.
- @item @uref{http://www.jppp.com/}@*
- Partially implemented TDataset-compatible components for @strong{MySQL}.
- @item @uref{http://www.riverstyx.net/qpopmysql/}@*
- qpopmysql - A patch to allow POP3 authentication from a @strong{MySQL}
- database. There's also a link to Paul Khavkine's patch for Procmail to allow
- any MTA to deliver to users in a @strong{MySQL} database.
- @item @uref{http://www.pbc.ottawa.on.ca}@*
- Visual Basic class generator for Active X.
- @item @uref{http://www.essencesw.com/Software/mysqllib.html}@*
- New Client libraries for the Mac OS Classic (Macintosh).
- @item @uref{http://www.lilback.com/macsql/}@*
- Client libraries for the Macintosh.
- @item @uref{http://www.essencesw.com/Plugins/mysqlplug.html}@*
- Plugin for REALbasic (for Machintosh)
- @item @uref{http://www.iis.ee.ethz.ch/~neeri/macintosh/gusi-qa.html}@*
- A library that emulates BSD sockets and pthreads on Macintosh. This can
- be used if you want to compile the @strong{MySQL} client library on Mac. It
- could probably even be sued to port @strong{MySQL} to Macintosh, but we
- don't know of anyone that has tried that.
- @c 404 not found
- @c @item @uref{http://tfdec1.fys.kuleuven.ac.be/~michael/fpc-linux/mysql}@*
- @c @strong{MySQL} binding to Free Pascal.
- @item @uref{http://www.dedecker.net/jessie/scmdb/}@*
- SCMDB - an add-on for SCM that ports the mysql C library to scheme (SCM).
- With this library scheme developers can make connections to a mySQL
- database and use embedded SQL in their programs.
- @cindex SCMDB
- @end itemize
- @subheading Other @strong{MySQL}-related Links
- @itemize @bullet
- @item @uref{http://www.satisoft.com/, SAT}
- The Small Application Toolkit (SAT) is a collection of utilities
- intended to simplify the development of small, multi-user, GUI based
- applications in a (Microsoft -or- X) Windows Client / Unix Server
- environment.
- @item @uref{http://www.wix.com/mysql-hosting/}@*
- Registry of Web providers who support @strong{MySQL}.
- @item @uref{http://www.softagency.co.jp/mysql/index.en.phtml}@*
- Links about using @strong{MySQL} in Japan/Asia.
- @item @uref{http://abattoir.cc.ndsu.nodak.edu/~nem/mysql/udf/}@*
- @strong{MySQL} UDF Registry.
- @item @uref{http://www.open.com.au/products.html}@*
- Commercial Web defect tracking system.
- @item @uref{http://www.stonekeep.com/pts/}@*
- PTS: Project Tracking System.
- @item @uref{http://tomato.nvgc.vt.edu/~hroberts/mot}@*
- Job and software tracking system.
- @item @uref{http://www.cynergi.net/non-secure/exportsql/}@*
- ExportSQL: A script to export data from Access95+.
- @item @uref{http://SAL.KachinaTech.COM/H/1/MYSQL.html}@*
- SAL (Scientific Applications on Linux) @strong{MySQL} entry.
- @item @uref{http://www.infotech-nj.com/itech/index.shtml}@*
- A consulting company which mentions @strong{MySQL} in the right company.
- @item @uref{http://www.pmpcs.com/}@*
- PMP Computer Solutions. Database developers using @strong{MySQL} and
- @code{mSQL}.
- @item @uref{http://www.aewa.org/}@*
- Airborne Early Warning Association.
- @item @uref{http://www.dedserius.com/y2kmatrix/}@*
- Y2K tester.
- @end itemize
- @subheading SQL and Database Interfaces
- @itemize @bullet
- @item @uref{http://java.sun.com/products/jdbc/}@*
- The JDBC database access API.
- @item @uref{http://www.gagme.com/mysql}@*
- Patch for @code{mSQL} Tcl.
- @item @uref{http://www.amsoft.ru/easysql/}@*
- EasySQL: An ODBC-like driver manager.
- @item @uref{http://www.lightlink.com/hessling/rexxsql.html}@*
- A REXX interface to SQL databases.
- @item @uref{http://www.mytcl.cx/}@*
- Tcl interface based on tcl-sql with many bugfixes.
- @item @uref{http://www.binevolve.com/~tdarugar/tcl-sql/}@*
- Tcl interface.
- @end itemize
- @subheading Examples of MySQL Use
- @itemize @bullet
- @c Added 990601
- @c EMAIL: thuss@little6.com (Todd Huss)
- @item @uref{http://www.little6.com/about/linux/}@*
- Little6 Inc., An online contract and job finding site that is powered by
- @strong{MySQL}, PHP3, and Linux.
- @c Added 990521
- @c EMAIL: nh@delec.com (Hillbrecht Nicole)
- @item @uref{http://www.delec.com/is/products/prep/examples/BookShelf/index.html}
- DELECis - A tool that makes it very easy to create an automatically generated
- table documentation. They have used @strong{MySQL} as an example.
- @c @item
- @c Added 990531. Removed 000201 -> No answer from server
- @c EMAIL: sfambro@hotmail.com (Steve Fambro)
- @c @uref{http://shredder.elen.utah.edu/steve.html, Steve Fambro}
- @c Uses @strong{MySQL} and webmerger. There is an employee database, and a
- @c license plate database with all of the registered Utah vehicles (over
- @c 1.2 million). The License plate field is indexed.....so the *searches*
- @c are instantaneous.
- @c Added 990521
- @c EMAIL: info@worldrecords.com (Jim Rota)
- @item @uref{http://www.worldrecords.com}@*
- World Records - A search engine for information about music that uses
- @strong{MySQL} and PHP.
- @item @uref{http://www.webtechniques.com/archives/1998/01/note/}@*
- A Contact Database using @strong{MySQL} and PHP.
- @item @uref{http://modems.rosenet.net/mysql/}@*
- Web based interface and Community Calender with PHP.
- @item @uref{http://www.odbsoft.com/cook/sources.htm}@*
- Perl package to generate html from a SQL table structure and for generating
- SQL statements from an html form.
- @item @uref{http://www.gusnet.cx/proj/telsql/}@*
- Basic telephone database using @code{DBI}/@code{DBD}.
- @item @uref{http://tecfa.unige.ch/guides/java/staf2x/ex/jdbc/coffee-break}@*
- JDBC examples by Daniel K. Schneider.
- @item @uref{http://www.spade.com/linux/howto/PostgreSQL-HOWTO-41.html}
- SQL BNF
- @item @uref{http://www.ooc.com/}@*
- Object Oriented Concepts Inc; CORBA applications with examples in source.
- @item @uref{http://www.pbc.ottawa.on.ca/}@*
- DBWiz; Includes an example of how to manage cursors in VB.
- @cindex Pluribus
- @item @uref{http://keilor.cs.umass.edu/pluribus/}@*
- Pluribus is a free search engine that learns to improve
- the quality of its results over time. Pluribus works by recording
- which pages a user prefers among those returned for a query. A user
- votes for a page by selecting it; Pluribus then uses that knowledge
- to improve the quality of the results when someone else submits the
- same (or similar) query. Uses PHP and @strong{MySQL}.
- @c EMAIL: paul@sword.damocles.com (Paul Bannister)
- @item @uref{http://www.stopbit.com/}@*
- Stopbit - A technology news site using @strong{MySQL} and PHP.
- @c Added 990604
- @c EMAIL: ah@dybdahl.dk
- @item @uref{http://www.jokes2000.com/scripts/}@*
- Example scripts at Jokes2000.
- @item @uref{http://www.linuxsupportline.com/~kalendar/}@*
- KDE based calendar manager - The calendar manager has both single user
- (file based) and multi-user (@strong{MySQL} database) support.
- @item @uref{http://tim.desert.net/~tim/imger/}@*
- Example of storing/retrieving images with @strong{MySQL} and CGI.
- @item @uref{http://www.penguinservices.com/scripts}@*
- Online shopping cart system.
- @c Added 990928 from editor@city-gallery.com
- @cindex Old Photo Album
- @item @uref{http://www.city-gallery.com/album/}@*
- Old Photo Album - The album is a collaborative popular history of photography
- project that generates all pages from data stored in a @strong{MySQL}
- database. Pages are dynamically generated through a php3 interface to the
- database content. Users contribute images and descriptions. Contributed images
- are stored on the web server to avoid storing them in the database as BLOBs.
- All other information is stored on the shared @strong{MySQL} server.
- @end itemize
- @subheading General Database Links
- @itemize @bullet
- @item @uref{http://www.pcslink.com/~ej/dbweb.html}@*
- Database Jump Site
- @item @uref{http://black.hole-in-the.net/guy/webdb/}@*
- Homepage of the webdb-l (Web Databases) mailing list.
- @item @uref{http://www.symbolstone.org/technology/perl/DBI/index.html}@*
- Perl @code{DBI}/@code{DBD} modules homepage.
- @item @uref{http://www.student.uni-koeln.de/cygwin/}@*
- Cygwin tools. Unix on top of Windows.
- @item @uref{http://dbasecentral.com/}@*
- dbasecentral.com; Development and distribution of powerful and easy-to-use
- database applications and systems.
- @cindex Tek-Tips forums
- @cindex forums, Tek-Tips
- @item @uref{http://www.Tek-Tips.com}@*
- Tek-Tips Forums are 800+ independent peer-to-peer non-commercial support
- forums for Computer Professionals. Features include automatic e-mail
- notification of responses, a links library, and member confidentiality
- guaranteed.
- @item @uref{http://www.public.asu.edu/~peterjn/btree/}@*
- B-Trees: Balanced Tree Data Structures
- @item @uref{http://www.fit.qut.edu.au/~maire/baobab/lecture/sld001.htm}@*
- A lecture about B-Trees
- @end itemize
- There are also many Web pages that use
- @strong{MySQL}. @xref{Users}. Send any additions to this list to
- @email{webmaster@@mysql.com}. We now require that you show a
- @strong{MySQL} logo somewhere if you wish your site to be added.
- (It is okay to have it on a ``used tools'' page or something similar.)
- @cindex reporting, errors
- @cindex MySQL mailing lists
- @node Questions, Licensing and Support, Introduction, Top
- @chapter MySQL Mailing Lists
- @menu
- * Mailing-list:: The @strong{MySQL} mailing lists
- * Asking questions:: Asking questions or reporting bugs
- * Bug reports:: How to report bugs or problems
- * Answering questions:: Guidelines for answering questions on the mailing list
- @end menu
- @node Mailing-list, Asking questions, Questions, Questions
- @section The MySQL Mailing Lists
- @cindex mailing lists
- @cindex email lists
- To subscribe to the main @strong{MySQL} mailing list, send a message to the
- electronic mail address @email{mysql-subscribe@@lists.mysql.com}.
- To unsubscribe from the main @strong{MySQL} mailing list, send a message to
- the electronic mail address @email{mysql-unsubscribe@@lists.mysql.com}.
- Only the address to which you send your messages is significant. The
- subject line and the body of the message are ignored.
- @c the last two addresses in this paragraph are NOT @email because they
- @c shouldn't be live links.
- If your reply address is not valid, you can specify your address
- explicitly. Adding a hyphen to the subscribe or unsubscribe command
- word, followed by your address with the @samp{@@} character in your
- address replaced by a @samp{=}. For example, to subscribe
- @code{your_name@@host.domain}, send a message to
- @code{mysql-subscribe-your_name=host.domain@@lists.mysql.com}.
- Mail to @email{mysql-subscribe@@lists.mysql.com} or
- @email{mysql-unsubscribe@@lists.mysql.com} is handled automatically by the
- ezmlm mailing list processor. Information about ezmlm is available at
- @uref{http://www.ezmlm.org, The ezmlm Website}.
- To post a message to the list itself, send your message to
- @code{mysql@@lists.mysql.com}. However, please @emph{do not} send mail about
- subscribing or unsubscribing to @email{mysql@@lists.mysql.com}, because any
- mail sent to that address is distributed automatically to thousands of other
- users.
- Your local site may have many subscribers to @email{mysql@@lists.mysql.com}.
- If so, it may have a local mailing list, so that messages sent from
- @code{lists.mysql.com} to your site are propagated to the local list. In such
- cases, please contact your system administrator to be added to or dropped
- from the local @strong{MySQL} list.
- The following @strong{MySQL} mailing lists exist:
- @table @code
- @item @uref{mailto:announce-subscribe@@lists.mysql.com, announce}
- This is for announcement of new versions of @strong{MySQL} and related
- programs. This is a low volume list that we think all @strong{MySQL}
- users should be on.
- @item @uref{mailto:mysql-subscribe@@lists.mysql.com, mysql}
- The main list for general @strong{MySQL} discussion. Please note that some
- topics are better discussed on the more-specialized lists. If you post to the
- wrong list, you may not get an answer!
- @item @uref{mailto:mysql-digest-subscribe@@lists.mysql.com, mysql-digest}
- The @code{mysql} list in digest form. That means you get all individual
- messages, sent as one large mail message once a day.
- @item @uref{mailto:bugs-subscribe@@lists.mysql.com, bugs}
- On this list you should only post a full, repeatable bug report using
- the @code{mysqlbug} script (if you are running on Windows, you should
- include a description of the operating system and the @strong{MySQL} version).
- Preferably, you should test the problem using the latest stable or
- development version of @strong{MySQL} before posting!
- Anyone should be able to repeat the bug by just using
- @code{mysql test < script} on the included test case. All bugs posted on
- this list will be corrected or documented in the next @strong{MySQL} release!
- If there are only small code changes involved, we will also post a patch that
- fixes the problem.
- @item @uref{mailto:bugs-digest-subscribe@@lists.mysql.com, bugs-digest}
- The @code{bugs} list in digest form.
- @item @uref{mailto:developer-subscribe@@lists.mysql.com, developer}
- This list has been depreciated in favor of the
- @uref{mailto:internals-subscribe@@lists.mysql.com, internals} list (below).
- @item @uref{mailto:developer-digest-subscribe@@lists.mysql.com, developer-digest}
- This list has been depreciated in favor of the
- @uref{mailto:internals-digest-subscribe@@lists.mysql.com, internals-digest} list
- (below).
- @item @uref{mailto:internals-subscribe@@lists.mysql.com, internals}
- A list for people who work on the @strong{MySQL} code. On this list one
- can also discuss @strong{MySQL} development and post patches.
- @item @uref{mailto:internals-digest-subscribe@@lists.mysql.com, internals-digest}
- A digest version of the @uref{mailto:internals-subscribe@@lists.mysql.com, internals} list.
- @item @uref{mailto:java-subscribe@@lists.mysql.com, java}
- Discussion about @strong{MySQL} and Java. Mostly about the JDBC drivers.
- @item @uref{mailto:java-digest-subscribe@@lists.mysql.com, java-digest}
- A digest version of the @code{java} list.
- @item @uref{mailto:win32-subscribe@@lists.mysql.com, win32}
- All things concerning @strong{MySQL} on Microsoft operating systems such as
- Win95, Win98, NT, and Win2000.
- @item @uref{mailto:win32-digest-subscribe@@lists.mysql.com, win32-digest}
- A digest version of the @code{win32} list.
- @item @uref{mailto:myodbc-subscribe@@lists.mysql.com, myodbc}
- All things about connecting to @strong{MySQL} with ODBC.
- @item @uref{mailto:myodbc-digest-subscribe@@lists.mysql.com, myodbc-digest}
- A digest version of the @code{myodbc} list.
- @item @uref{mailto:plusplus-subscribe@@lists.mysql.com, plusplus}
- All things concerning programming with the C++ API to @strong{MySQL}.
- @item @uref{mailto:plusplus-digest-subscribe@@lists.mysql.com, plusplus-digest}
- A digest version of the @code{plusplus} list.
- @item @uref{mailto:msql-mysql-modules-subscribe@@lists.mysql.com, msql-mysql-modules}
- A list about the Perl support in @strong{MySQL}.
- @item @uref{mailto:msql-mysql-modules-digest-subscribe@@lists.mysql.com, msql-mysql-modules-digest}
- A digest version of the @code{msql-mysql-modules} list.
- @end table
- You subscribe or unsubscribe to all lists in the same way as described
- above. In your subscribe or unsubscribe message, just put the appropriate
- mailing list name rather than @code{mysql}. For example, to subscribe to or
- unsubscribe from the @code{myodbc} list, send a message to
- @email{myodbc-subscribe@@lists.mysql.com} or
- @email{myodbc-unsubscribe@@lists.mysql.com}.
- There is also a german mailing list. You can find information about this
- at: @uref{http://www.4t2.com/mysql}.
- @cindex net etiquette
- @cindex mailing lists, archive location
- @cindex searching, MySQL webpages
- @node Asking questions, Bug reports, Mailing-list, Questions
- @section Asking Questions or Reporting Bugs
- Before posting a bug report or question, please do the following:
- @itemize @bullet
- @item
- Start by searching the @strong{MySQL} online manual at:
- @*
- @uref{http://www.mysql.com/documentation/manual.php}
- @*
- We try to keep the manual up to date by
- updating it frequently with solutions to newly found problems!
- @item
- Search the @strong{MySQL} mailing list archives:
- @*
- @uref{http://www.mysql.com/documentation/}
- @*
- @item
- You can also use @uref{http://www.mysql.com/search.html} to search all the
- Web pages (including the manual) that are located at
- @uref{http://www.mysql.com/}.
- @end itemize
- If you can't find an answer in the manual or the archives, check with your
- local @strong{MySQL} expert. If you still can't find an answer to your
- question, go ahead and read the next section about how to send mail to
- @email{mysql@@lists.mysql.com}.
- @cindex bugs, reporting
- @cindex reporting, bugs
- @cindex problems, reporting
- @cindex errors, reporting
- @cindex @code{mysqlbug} script
- @cindex creating, bug reports
- @cindex scripts, @code{mysqlbug}
- @node Bug reports, Answering questions, Asking questions, Questions
- @section How to Report Bugs or Problems
- Writing a good bug report takes patience, but doing it right the first
- time saves time for us and for you. A good bug report containing a full
- test case for the bug will make it very likely that we will fix it in
- the next release. This section will help you write your report correctly
- so that you don't waste your time doing things that may not help us much
- or at all.
- We encourage everyone to use the @code{mysqlbug} script to generate a bug
- report (or a report about any problem), if possible. @code{mysqlbug} can be
- found in the @file{scripts} directory in the source distribution, or, for a
- binary distribution, in the @file{bin} directory under your @strong{MySQL}
- installation directory. If you are unable to use @code{mysqlbug}, you should
- still include all the necessary information listed in this section.
- The @code{mysqlbug} script helps you generate a report by determining much
- of the following information automatically, but if something important is
- missing, please include it with your message! Please read this section
- carefully and make sure that all the information described here is included
- in your report.
- @cindex bug reports, email address
- The normal plase to report bugs and problems is
- @email{mysql@@lists.mysql.com}. If you can make a test case that clearly
- shows the bug, you should post it to the @email{bugs@@lists.mysql.com}
- list. Note that on this list you should only post a full, repeatable bug
- report using the @code{mysqlbug} script. If you are running on Windows,
- you should include a description of the operating system and the
- @strong{MySQL} version. Preferably, you should test the problem using
- the latest stable or development version of @strong{MySQL} before
- posting! Anyone should be able to repeat the bug by just using
- ``@code{mysql test < script}'' on the included test case or run the
- shell or perl script that is included in the bug report. All bugs
- posted on the @code{bugs} list will be corrected or documented in the next
- @strong{MySQL} release! If there are only small code changes involved
- to correct this problem, we will also post a patch that fixes the
- problem.
- Remember that it is possible to respond to a message containing too much
- information, but not to one containing too little. Often people omit facts
- because they think they know the cause of a problem and assume that some
- details don't matter. A good principle is: if you are in doubt about stating
- something, state it! It is a thousand times faster and less troublesome to
- write a couple of lines more in your report than to be forced to ask again
- and wait for the answer because you didn't include enough information the
- first time.
- The most common errors are that people don't indicate the version number of
- the @strong{MySQL} distribution they are using, or don't indicate what
- platform they have @strong{MySQL} installed on (including the platform
- version number). This is highly relevant information, and in 99 cases out of
- 100 the bug report is useless without it! Very often we get questions like,
- ``Why doesn't this work for me?'' then we find that the feature
- requested wasn't implemented in that @strong{MySQL} version, or that a bug
- described in a report has been fixed already in newer @strong{MySQL}
- versions. Sometimes the error is platform dependent; in such cases, it is
- next to impossible to fix anything without knowing the operating system and
- the version number of the platform.
- Remember also to provide information about your compiler, if it is related to
- the problem. Often people find bugs in compilers and think the problem is
- @strong{MySQL} related. Most compilers are under development all the time and
- become better version by version. To determine whether or not your
- problem depends on your compiler, we need to know what compiler is used.
- Note that every compiling problem should be regarded as a bug report and
- reported accordingly.
- It is most helpful when a good description of the problem is included in the
- bug report. That is, a good example of all the things you did that led to
- the problem and the problem itself exactly described. The best reports are
- those that include a full example showing how to reproduce the bug or
- problem. @xref{Reproducable test case}.
- If a program produces an error message, it is very important to include the
- message in your report! If we try to search for something from the archives
- using programs, it is better that the error message reported exactly matches
- the one that the program produces. (Even the case should be
- observed!) You should never try to remember what the error message was;
- instead, copy and paste the entire message into your report!
- If you have a problem with MyODBC, you should try to genereate a MyODBC
- trace file. @xref{MyODBC bug report}.
- Please remember that many of the people who will read your report will
- do so using an 80-column display. When generating reports or examples
- using the @code{mysql} command line tool, you should therefore use
- the @code{--vertical} option (or the @code{G} statement terminator)
- for output that would exceed the available width for such a display
- (for example, with the @code{EXPLAIN SELECT} statement; see the
- example below).
- Please include the following information in your report:
- @cindex bug reports, criteria for
- @itemize @bullet
- @item
- The version number of the @strong{MySQL} distribution you are using (for
- example, @strong{MySQL} Version 3.22.22). You can find out which version you
- are running by executing @code{mysqladmin version}. @code{mysqladmin} can be
- found in the @file{bin} directory under your @strong{MySQL} installation
- directory.
- @item
- The manufacturer and model of the machine you are working on.
- @item
- The operating system name and version. For most operating systems, you can
- get this information by executing the Unix command @code{uname -a}.
- @item