mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 10:14:19 +01:00
Merge
Docs/manual.texi: SCCS merged libmysql/libmysql.c: SCCS merged
This commit is contained in:
commit
ded5902f71
3 changed files with 155 additions and 152 deletions
287
Docs/manual.texi
287
Docs/manual.texi
|
@ -487,7 +487,7 @@ language already supports MySQL.
|
||||||
@cindex MySQL, pronunciation
|
@cindex MySQL, pronunciation
|
||||||
@cindex goals of MySQL
|
@cindex goals of MySQL
|
||||||
The official way to pronounce MySQL is ``My Ess Que Ell'' (not
|
The official way to pronounce MySQL is ``My Ess Que Ell'' (not
|
||||||
MY-SEQUEL), but we don't mind if you pronounce it as MY-SEQUEL
|
``my sequel''), but we don't mind if you pronounce it as ``my sequel''
|
||||||
or in some other localised way.
|
or in some other localised way.
|
||||||
|
|
||||||
|
|
||||||
|
@ -1886,7 +1886,7 @@ the electronic mail address @email{mysql-unsubscribe@@lists.mysql.com}.
|
||||||
Only the address to which you send your messages is significant. The
|
Only the address to which you send your messages is significant. The
|
||||||
subject line and the body of the message are ignored.
|
subject line and the body of the message are ignored.
|
||||||
|
|
||||||
@c the last two addresses in this paragraph are NOT @email because they
|
@c the last two addresses in this paragraph are not @email because they
|
||||||
@c shouldn't be live links.
|
@c shouldn't be live links.
|
||||||
If your reply address is not valid, you can specify your address
|
If your reply address is not valid, you can specify your address
|
||||||
explicitly. Adding a hyphen to the subscribe or unsubscribe command
|
explicitly. Adding a hyphen to the subscribe or unsubscribe command
|
||||||
|
@ -2327,20 +2327,20 @@ try repairing your tables with @code{myisamchk} or @code{CHECK TABLE} and
|
||||||
|
|
||||||
@item
|
@item
|
||||||
If you often get corrupted tables you should try to find out when and why this
|
If you often get corrupted tables you should try to find out when and why this
|
||||||
happens! In this case, the @file{mysql-data-directory/'hostname'.err} file
|
happens. In this case, the @file{mysql-data-directory/'hostname'.err} file
|
||||||
may contain some information about what happened. @xref{Error log}. Please
|
may contain some information about what happened. @xref{Error log}. Please
|
||||||
include any relevant information from this file in your bug report! Normally
|
include any relevant information from this file in your bug report. Normally
|
||||||
@code{mysqld} should @strong{NEVER} crash a table if nothing killed it in the
|
@code{mysqld} should @strong{never} crash a table if nothing killed it in the
|
||||||
middle of an update! If you can find the cause of @code{mysqld} dying,
|
middle of an update! If you can find the cause of @code{mysqld} dying,
|
||||||
it's much easier for us to provide you with a fix for the problem!
|
it's much easier for us to provide you with a fix for the problem.
|
||||||
@xref{What is crashing}.
|
@xref{What is crashing}.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
If possible, download and install the most recent version of MySQL
|
If possible, download and install the most recent version of MySQL
|
||||||
and check whether or not it solves your problem. All versions of
|
and check whether or not it solves your problem. All versions of
|
||||||
MySQL are thoroughly tested and should work without problems! We
|
MySQL are thoroughly tested and should work without problems. We
|
||||||
believe in making everything as backward compatible as possible, and you
|
believe in making everything as backward compatible as possible, and you
|
||||||
should be able to switch MySQL versions in minutes!
|
should be able to switch MySQL versions without any hassle.
|
||||||
@xref{Which version}.
|
@xref{Which version}.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
@ -5324,7 +5324,7 @@ benchmark page.
|
||||||
Before going to the other benchmarks we know of, we would like to give
|
Before going to the other benchmarks we know of, we would like to give
|
||||||
some background on benchmarks:
|
some background on benchmarks:
|
||||||
|
|
||||||
It's very easy to write a test that shows ANY database to be the best
|
It's very easy to write a test that shows @strong{any} database to be the best
|
||||||
database in the world, by just restricting the test to something the
|
database in the world, by just restricting the test to something the
|
||||||
database is very good at and not testing anything that the database is
|
database is very good at and not testing anything that the database is
|
||||||
not good at. If one, after doing this, summarises the result with as
|
not good at. If one, after doing this, summarises the result with as
|
||||||
|
@ -5362,12 +5362,12 @@ conduct. This was not only tuned to only test what PostgreSQL is absolutely
|
||||||
best at, it was also totally unfair against every other database involved in
|
best at, it was also totally unfair against every other database involved in
|
||||||
the test.
|
the test.
|
||||||
|
|
||||||
@strong{NOTE}: We know that not even some of the main PostgreSQL
|
@strong{Note}: We know that even some of the main PostgreSQL
|
||||||
developers did like the way Great Bridge conducted the benchmark, so we
|
developers did not like the way Great Bridge conducted the benchmark, so we
|
||||||
don't blame them for the way the benchmark was done.
|
don't blame the PostgreSQL team for the way the benchmark was done.
|
||||||
|
|
||||||
This benchmark has been condemned in a lot of postings and newsgroups so
|
This benchmark has been condemned in a lot of postings and newsgroups so
|
||||||
we will here just shortly repeat some things that where wrong with it.
|
we will here just shortly repeat some things that were wrong with it.
|
||||||
|
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
|
@ -5762,7 +5762,7 @@ Added @code{LOAD DATE INFILE.. UPDATE} syntax.
|
||||||
@item
|
@item
|
||||||
For tables with primary keys, if the data contains the primary key,
|
For tables with primary keys, if the data contains the primary key,
|
||||||
entries matching that primary key are updated from the remainder of the
|
entries matching that primary key are updated from the remainder of the
|
||||||
columns. However, columns MISSING from the incoming data feed are not
|
columns. However, columns @strong{missing} from the incoming data feed are not
|
||||||
touched.
|
touched.
|
||||||
@item
|
@item
|
||||||
For tables tables with primary keys that are missing some part of the key
|
For tables tables with primary keys that are missing some part of the key
|
||||||
|
@ -5831,15 +5831,15 @@ Add support for UNICODE.
|
||||||
@code{NATURAL JOIN} and @code{UNION JOIN}
|
@code{NATURAL JOIN} and @code{UNION JOIN}
|
||||||
@item
|
@item
|
||||||
Allow @code{select a from crash_me left join crash_me2 using (a)}; In this
|
Allow @code{select a from crash_me left join crash_me2 using (a)}; In this
|
||||||
case a is assumed to come from the crash_me table.
|
case @code{a} is assumed to come from the @code{crash_me} table.
|
||||||
@item
|
@item
|
||||||
Fix that @code{ON} and @code{USING} works with the @code{JOIN}
|
Fix that @code{ON} and @code{USING} works with the @code{JOIN}
|
||||||
join type.
|
join type.
|
||||||
@item
|
@item
|
||||||
Oracle like @code{CONNECT BY PRIOR ...} to search hierarchy structures.
|
Oracle like @code{CONNECT BY PRIOR ...} to search hierarchy structures.
|
||||||
@item
|
@item
|
||||||
@code{mysqladmin copy database new-database}. -- Requires COPY command to be
|
@code{mysqladmin copy database new-database}; Requires @code{COPY}
|
||||||
added to @code{mysqld}
|
command to be added to @code{mysqld}
|
||||||
@item
|
@item
|
||||||
Processlist should show number of queries/thread.
|
Processlist should show number of queries/thread.
|
||||||
@item
|
@item
|
||||||
|
@ -7439,7 +7439,7 @@ install the standard @code{MySQL} RPM.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
If you want to configure @code{mysqld} with some extra features that are
|
If you want to configure @code{mysqld} with some extra features that are
|
||||||
NOT in the standard binary distributions. Here is a list of the most
|
not in the standard binary distributions. Here is a list of the most
|
||||||
common extra options that you may want to use:
|
common extra options that you may want to use:
|
||||||
|
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
|
@ -7781,7 +7781,7 @@ An alternative installation method under Linux is to use RPM (RedHat Package
|
||||||
Manager) distributions. @xref{Linux-RPM}.
|
Manager) distributions. @xref{Linux-RPM}.
|
||||||
|
|
||||||
@c texi2html fails to split chapters if I use strong for all of this.
|
@c texi2html fails to split chapters if I use strong for all of this.
|
||||||
If you run into problems, @strong{PLEASE ALWAYS USE} @code{mysqlbug} when
|
If you run into problems, @strong{please always use @code{mysqlbug}} when
|
||||||
posting questions to @email{mysql@@lists.mysql.com}. Even if the problem
|
posting questions to @email{mysql@@lists.mysql.com}. Even if the problem
|
||||||
isn't a bug, @code{mysqlbug} gathers system information that will help others
|
isn't a bug, @code{mysqlbug} gathers system information that will help others
|
||||||
solve your problem. By not using @code{mysqlbug}, you lessen the likelihood
|
solve your problem. By not using @code{mysqlbug}, you lessen the likelihood
|
||||||
|
@ -8013,7 +8013,7 @@ sometimes required. If you have problems, we recommend trying GNU
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
If you are using a recent version of @strong{gcc}, recent enough to understand
|
If you are using a recent version of @strong{gcc}, recent enough to understand
|
||||||
@code{-fno-exceptions} option, it is @strong{VERY IMPORTANT} that you use
|
@code{-fno-exceptions} option, it is @strong{very important} that you use
|
||||||
it. Otherwise, you may compile a binary that crashes randomly. We also
|
it. Otherwise, you may compile a binary that crashes randomly. We also
|
||||||
recommend that you use @code{-felide-contructors} and @code{-fno-rtti} along
|
recommend that you use @code{-felide-contructors} and @code{-fno-rtti} along
|
||||||
with @code{-fno-exceptions}. When in doubt, do the following:
|
with @code{-fno-exceptions}. When in doubt, do the following:
|
||||||
|
@ -8027,7 +8027,7 @@ CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtt
|
||||||
On most systems this will give you a fast and stable binary.
|
On most systems this will give you a fast and stable binary.
|
||||||
|
|
||||||
@c texi2html fails to split chapters if I use strong for all of this.
|
@c texi2html fails to split chapters if I use strong for all of this.
|
||||||
If you run into problems, @strong{PLEASE ALWAYS USE @code{mysqlbug}} when
|
If you run into problems, @strong{please always use @code{mysqlbug}} when
|
||||||
posting questions to @email{mysql@@lists.mysql.com}. Even if the problem
|
posting questions to @email{mysql@@lists.mysql.com}. Even if the problem
|
||||||
isn't a bug, @code{mysqlbug} gathers system information that will help others
|
isn't a bug, @code{mysqlbug} gathers system information that will help others
|
||||||
solve your problem. By not using @code{mysqlbug}, you lessen the likelihood
|
solve your problem. By not using @code{mysqlbug}, you lessen the likelihood
|
||||||
|
@ -8507,7 +8507,7 @@ system-specific section of this manual.
|
||||||
@cindex BitKeeper tree
|
@cindex BitKeeper tree
|
||||||
@cindex cvs tree
|
@cindex cvs tree
|
||||||
|
|
||||||
@strong{CAUTION:} You should read this section only if you are interested
|
@strong{Caution:} You should read this section only if you are interested
|
||||||
in helping us test our new code. If you just want to get MySQL up
|
in helping us test our new code. If you just want to get MySQL up
|
||||||
and running on your system, you should use a standard release distribution
|
and running on your system, you should use a standard release distribution
|
||||||
(either a source or binary distribution will do).
|
(either a source or binary distribution will do).
|
||||||
|
@ -9880,7 +9880,7 @@ return any server error, only @code{CR_UNKNOWN_ERROR} (but it
|
||||||
works for client errors), and the server uses the old @code{password()}
|
works for client errors), and the server uses the old @code{password()}
|
||||||
checking rather than the new one.
|
checking rather than the new one.
|
||||||
|
|
||||||
If you are @strong{NOT} using the @code{--old-protocol} option to
|
If you are @strong{not} using the @code{--old-protocol} option to
|
||||||
@code{mysqld}, you will need to make the following changes:
|
@code{mysqld}, you will need to make the following changes:
|
||||||
|
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
|
@ -10080,10 +10080,10 @@ Linux version that doesn't have @code{glibc2}, you must install
|
||||||
LinuxThreads before trying to compile MySQL. You can get
|
LinuxThreads before trying to compile MySQL. You can get
|
||||||
LinuxThreads at @uref{http://www.mysql.com/Downloads/Linux}.
|
LinuxThreads at @uref{http://www.mysql.com/Downloads/Linux}.
|
||||||
|
|
||||||
@strong{NOTE:} We have seen some strange problems with Linux 2.2.14 and
|
@strong{Note:} We have seen some strange problems with Linux 2.2.14 and
|
||||||
MySQL on SMP systems; If you have a SMP system, we recommend
|
MySQL on SMP systems; If you have a SMP system, we recommend
|
||||||
you to upgrade to Linux 2.4 ASAP! Your system will be faster and more
|
you to upgrade to Linux 2.4 as soon as possible! Your system will be
|
||||||
stable by doing this!
|
faster and more stable by doing this!
|
||||||
|
|
||||||
Note that @code{glibc} versions before and including Version 2.1.1 have
|
Note that @code{glibc} versions before and including Version 2.1.1 have
|
||||||
a fatal bug in @code{pthread_mutex_timedwait} handling, which is used
|
a fatal bug in @code{pthread_mutex_timedwait} handling, which is used
|
||||||
|
@ -10519,7 +10519,7 @@ Debugging threaded applications like MySQL will not work with
|
||||||
|
|
||||||
@item
|
@item
|
||||||
If you try linking @code{mysqld} statically when using @code{gcc}, the
|
If you try linking @code{mysqld} statically when using @code{gcc}, the
|
||||||
resulting image will core dump at start. In other words, @strong{DON'T}
|
resulting image will core dump at start. In other words, @strong{don't}
|
||||||
use @code{--with-mysqld-ldflags=-all-static} with @code{gcc}.
|
use @code{--with-mysqld-ldflags=-all-static} with @code{gcc}.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
@ -10852,7 +10852,7 @@ On your Windows machine, start some ODBC application (such as Access).
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Create a new file in Windows and link to MySQL using the ODBC
|
Create a new file in Windows and link to MySQL using the ODBC
|
||||||
driver the same way you normally do, EXCEPT type in @code{localhost}
|
driver the same way you normally do, except type in @code{localhost}
|
||||||
for the MySQL host server --- not @code{yourmysqlservername}.
|
for the MySQL host server --- not @code{yourmysqlservername}.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
@ -11952,7 +11952,7 @@ you must also remove the @code{-qstrict} option (this is a limitation in
|
||||||
the IBM C compiler).
|
the IBM C compiler).
|
||||||
|
|
||||||
If you are using @code{gcc} or @code{egcs} to compile MySQL, you
|
If you are using @code{gcc} or @code{egcs} to compile MySQL, you
|
||||||
@strong{MUST} use the @code{-fno-exceptions} flag, as the exception
|
@strong{must} use the @code{-fno-exceptions} flag, as the exception
|
||||||
handling in @code{gcc}/@code{egcs} is not thread safe! (This is tested with
|
handling in @code{gcc}/@code{egcs} is not thread safe! (This is tested with
|
||||||
@code{egcs} 1.1.) There are also some known problems with IBM's assembler,
|
@code{egcs} 1.1.) There are also some known problems with IBM's assembler,
|
||||||
which may cause it to generate bad code when used with gcc.
|
which may cause it to generate bad code when used with gcc.
|
||||||
|
@ -12806,7 +12806,7 @@ to
|
||||||
$sysliblist .= " -lm -lz";
|
$sysliblist .= " -lm -lz";
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
After this, you MUST run 'make realclean' and then proceed with the
|
After this, you @strong{must} run 'make realclean' and then proceed with the
|
||||||
installation from the beginning.
|
installation from the beginning.
|
||||||
|
|
||||||
If you want to use the Perl module on a system that doesn't support dynamic
|
If you want to use the Perl module on a system that doesn't support dynamic
|
||||||
|
@ -16026,16 +16026,16 @@ files to @code{safe_mysqld} with @code{--log}, @code{--log-update}, or
|
||||||
@code{--log-slow-queries}. Otherwise, both servers may be trying to
|
@code{--log-slow-queries}. Otherwise, both servers may be trying to
|
||||||
write to the same log file.
|
write to the same log file.
|
||||||
|
|
||||||
@strong{WARNING}: Normally you should never have two servers that update
|
@strong{Warning}: Normally you should never have two servers that update
|
||||||
data in the same database! If your OS doesn't support fault-free system
|
data in the same database! If your OS doesn't support fault-free system
|
||||||
locking, this may lead to unpleasant surprises!
|
locking, this may lead to unpleasant surprises!
|
||||||
|
|
||||||
If you want to use another database directory for the second server, you
|
If you want to use another database directory for the second server, you
|
||||||
can use the @code{--datadir=path} option to @code{safe_mysqld}.
|
can use the @code{--datadir=path} option to @code{safe_mysqld}.
|
||||||
|
|
||||||
@strong{NOTE} also that starting several MySQL servers
|
@strong{Note} also that starting several MySQL servers
|
||||||
(@code{mysqlds}) in different machines and letting them access one data
|
(@code{mysqlds}) in different machines and letting them access one data
|
||||||
directory over @code{NFS} is generally a @strong{BAD IDEA}! The problem
|
directory over @code{NFS} is generally a @strong{bad idea}! The problem
|
||||||
is that the @code{NFS} will become the bottleneck with the speed. It is
|
is that the @code{NFS} will become the bottleneck with the speed. It is
|
||||||
not meant for such use. And last but not least, you would still have to
|
not meant for such use. And last but not least, you would still have to
|
||||||
come up with a solution how to make sure that two or more @code{mysqlds}
|
come up with a solution how to make sure that two or more @code{mysqlds}
|
||||||
|
@ -16138,11 +16138,12 @@ When running MySQL, follow these guidelines whenever possible:
|
||||||
|
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
DON'T EVER GIVE ANYONE (EXCEPT THE MySQL ROOT USER) ACCESS TO THE
|
@strong{Do not ever give anyone (except the mysql root user) access to the
|
||||||
@code{user} TABLE IN THE @code{mysql} DATABASE! The encrypted password
|
@code{user} table in the @code{mysql} database!} This is critical.
|
||||||
is the real password in MySQL. If you know the password listed in
|
@strong{The encrypted password is the real password in MySQL.}
|
||||||
the @code{user} table for a given user, you can easily log in as that
|
Anyone who knows the password which is listed in the @code{user} table
|
||||||
user if you have access to the host listed for that account.
|
and has access to the host listed for the account @strong{can easily log
|
||||||
|
in as that user}.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Learn the MySQL access privilege system. The @code{GRANT} and
|
Learn the MySQL access privilege system. The @code{GRANT} and
|
||||||
|
@ -16872,7 +16873,7 @@ Alternate forms of the @code{-h}, @code{-u}, and @code{-p} options are
|
||||||
@code{--password=your_pass}. Note that there is @emph{no space} between
|
@code{--password=your_pass}. Note that there is @emph{no space} between
|
||||||
@code{-p} or @code{--password=} and the password following it.
|
@code{-p} or @code{--password=} and the password following it.
|
||||||
|
|
||||||
@strong{NOTE:} Specifying a password on the command line is not secure!
|
@strong{Note:} Specifying a password on the command line is not secure!
|
||||||
Any user on your system may then find out your password by typing a command
|
Any user on your system may then find out your password by typing a command
|
||||||
like: @code{ps auxww}. @xref{Option files}.
|
like: @code{ps auxww}. @xref{Option files}.
|
||||||
|
|
||||||
|
@ -17767,7 +17768,7 @@ you use a @code{column_list} clause) are @code{SELECT}, @code{INSERT}, and
|
||||||
You can set global privileges by using @code{ON *.*} syntax. You can set
|
You can set global privileges by using @code{ON *.*} syntax. You can set
|
||||||
database privileges by using @code{ON db_name.*} syntax. If you specify
|
database privileges by using @code{ON db_name.*} syntax. If you specify
|
||||||
@code{ON *} and you have a current database, you will set the privileges for
|
@code{ON *} and you have a current database, you will set the privileges for
|
||||||
that database. (@strong{WARNING:} If you specify @code{ON *} and you
|
that database. (@strong{Warning:} If you specify @code{ON *} and you
|
||||||
@emph{don't} have a current database, you will affect the global privileges!)
|
@emph{don't} have a current database, you will affect the global privileges!)
|
||||||
|
|
||||||
In order to accommodate granting rights to users from arbitrary hosts,
|
In order to accommodate granting rights to users from arbitrary hosts,
|
||||||
|
@ -17783,7 +17784,7 @@ You can specify wild cards in the hostname. For example,
|
||||||
for any host in the @code{144.155.166} class C subnet.
|
for any host in the @code{144.155.166} class C subnet.
|
||||||
|
|
||||||
The simple form @code{user} is a synonym for @code{user@@"%"}.
|
The simple form @code{user} is a synonym for @code{user@@"%"}.
|
||||||
@strong{NOTE:} If you allow anonymous users to connect to the MySQL
|
@strong{Note:} If you allow anonymous users to connect to the MySQL
|
||||||
server (which is the default), you should also add all local users as
|
server (which is the default), you should also add all local users as
|
||||||
@code{user@@localhost} because otherwise the anonymous user entry for the
|
@code{user@@localhost} because otherwise the anonymous user entry for the
|
||||||
local host in the @code{mysql.user} table will be used when the user tries to
|
local host in the @code{mysql.user} table will be used when the user tries to
|
||||||
|
@ -17833,7 +17834,7 @@ password will be set to the password specified by the @code{IDENTIFIED BY}
|
||||||
clause, if one is given. If the user already had a password, it is replaced
|
clause, if one is given. If the user already had a password, it is replaced
|
||||||
by the new one.
|
by the new one.
|
||||||
|
|
||||||
@strong{WARNING:} If you create a new user but do not specify an
|
@strong{Warning:} If you create a new user but do not specify an
|
||||||
@code{IDENTIFIED BY} clause, the user has no password. This is insecure.
|
@code{IDENTIFIED BY} clause, the user has no password. This is insecure.
|
||||||
|
|
||||||
Passwords can also be set with the @code{SET PASSWORD} command.
|
Passwords can also be set with the @code{SET PASSWORD} command.
|
||||||
|
@ -17986,7 +17987,7 @@ or the short form:
|
||||||
mysql -u monty -p database_name
|
mysql -u monty -p database_name
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
Note that in the last example the password is @strong{NOT} 'database_name'.
|
Note that in the last example the password is @strong{not} 'database_name'.
|
||||||
|
|
||||||
If you want to use the @code{-p} option to supply a password you should do so
|
If you want to use the @code{-p} option to supply a password you should do so
|
||||||
like this:
|
like this:
|
||||||
|
@ -18057,7 +18058,7 @@ of privileges:
|
||||||
The MySQL @code{root} user is created as a superuser who can do
|
The MySQL @code{root} user is created as a superuser who can do
|
||||||
anything. Connections must be made from the local host.
|
anything. Connections must be made from the local host.
|
||||||
|
|
||||||
@strong{NOTE:}
|
@strong{Note:}
|
||||||
The initial @code{root} password is empty, so anyone can connect as @code{root}
|
The initial @code{root} password is empty, so anyone can connect as @code{root}
|
||||||
@emph{without a password} and be granted all privileges.
|
@emph{without a password} and be granted all privileges.
|
||||||
|
|
||||||
|
@ -18073,7 +18074,7 @@ Other privileges are denied. For example, normal users can't use
|
||||||
@code{mysqladmin shutdown} or @code{mysqladmin processlist}.
|
@code{mysqladmin shutdown} or @code{mysqladmin processlist}.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@strong{NOTE:} The default privileges are different for Windows.
|
@strong{Note:} The default privileges are different for Windows.
|
||||||
@xref{Windows running}.
|
@xref{Windows running}.
|
||||||
|
|
||||||
Because your installation is initially wide open, one of the first things you
|
Because your installation is initially wide open, one of the first things you
|
||||||
|
@ -18134,8 +18135,8 @@ the database directory, which is listed when you run @code{mysqld
|
||||||
--help}.) Then run the @code{mysql_install_db} script, possibly after
|
--help}.) Then run the @code{mysql_install_db} script, possibly after
|
||||||
editing it first to have the privileges you want.
|
editing it first to have the privileges you want.
|
||||||
|
|
||||||
@strong{NOTE:} For MySQL versions older than Version 3.22.10,
|
@strong{Note:} For MySQL versions older than Version 3.22.10,
|
||||||
you should NOT delete the @file{.frm} files. If you accidentally do this,
|
you should not delete the @file{.frm} files. If you accidentally do this,
|
||||||
you should copy them back from your MySQL distribution before
|
you should copy them back from your MySQL distribution before
|
||||||
running @code{mysql_install_db}.
|
running @code{mysql_install_db}.
|
||||||
|
|
||||||
|
@ -18910,7 +18911,7 @@ CHECK TABLE test_table FAST QUICK;
|
||||||
|
|
||||||
Which only would do a quick check on the table if it wasn't closed properly.
|
Which only would do a quick check on the table if it wasn't closed properly.
|
||||||
|
|
||||||
@strong{NOTE:} that in some case @code{CHECK TABLE} will change the
|
@strong{Note:} that in some case @code{CHECK TABLE} will change the
|
||||||
table! This happens if the table is marked as 'corrupted' or 'not
|
table! This happens if the table is marked as 'corrupted' or 'not
|
||||||
closed properly' but @code{CHECK TABLE} didn't find any problems in the
|
closed properly' but @code{CHECK TABLE} didn't find any problems in the
|
||||||
table. In this case @code{CHECK TABLE} will mark the table as ok.
|
table. In this case @code{CHECK TABLE} will mark the table as ok.
|
||||||
|
@ -18935,7 +18936,7 @@ bug you have found a bug in the @code{MyISAM} code.)
|
||||||
|
|
||||||
@code{EXTENDED} is only to be used after you have run a normal check but
|
@code{EXTENDED} is only to be used after you have run a normal check but
|
||||||
still get strange errors from a table when MySQL tries to
|
still get strange errors from a table when MySQL tries to
|
||||||
update a row or find a row by key (this is VERY unlikely to happen if a
|
update a row or find a row by key (this is very unlikely if a
|
||||||
normal check has succeeded!).
|
normal check has succeeded!).
|
||||||
|
|
||||||
Some things reported by check table, can't be corrected automatically:
|
Some things reported by check table, can't be corrected automatically:
|
||||||
|
@ -19221,7 +19222,7 @@ Check table for errors. This is the default operation if you are not
|
||||||
giving @code{myisamchk} any options that override this.
|
giving @code{myisamchk} any options that override this.
|
||||||
|
|
||||||
@item -e or --extend-check
|
@item -e or --extend-check
|
||||||
Check the table VERY thoroughly (which is quite slow if you have many
|
Check the table very thoroughly (which is quite slow if you have many
|
||||||
indexes). This option should only be used in extreme cases. Normally,
|
indexes). This option should only be used in extreme cases. Normally,
|
||||||
@code{myisamchk} or @code{myisamchk --medium-check} should, in most
|
@code{myisamchk} or @code{myisamchk --medium-check} should, in most
|
||||||
cases, be able to find out if there are any errors in the table.
|
cases, be able to find out if there are any errors in the table.
|
||||||
|
@ -19345,7 +19346,7 @@ This will optimise seeks and will make table scanning by key faster.
|
||||||
@item -R or --sort-records=#
|
@item -R or --sort-records=#
|
||||||
Sorts records according to an index. This makes your data much more localised
|
Sorts records according to an index. This makes your data much more localised
|
||||||
and may speed up ranged @code{SELECT} and @code{ORDER BY} operations on
|
and may speed up ranged @code{SELECT} and @code{ORDER BY} operations on
|
||||||
this index. (It may be VERY slow to do a sort the first time!)
|
this index. (It may be very slow to do a sort the first time!)
|
||||||
To find out a table's index numbers, use @code{SHOW INDEX}, which shows a
|
To find out a table's index numbers, use @code{SHOW INDEX}, which shows a
|
||||||
table's indexes in the same order that @code{myisamchk} sees them. Indexes are
|
table's indexes in the same order that @code{myisamchk} sees them. Indexes are
|
||||||
numbered beginning with 1.
|
numbered beginning with 1.
|
||||||
|
@ -19427,13 +19428,15 @@ to update the table will wait until @code{myisamchk} is ready before
|
||||||
continuing.
|
continuing.
|
||||||
|
|
||||||
If you use @code{myisamchk} to repair or optimise tables, you
|
If you use @code{myisamchk} to repair or optimise tables, you
|
||||||
@strong{MUST} always ensure that the @code{mysqld} server is not using
|
@strong{must} always ensure that the @code{mysqld} server is not using
|
||||||
the table (this also applies if you are using @code{--skip-locking}).
|
the table (this also applies if you are using @code{--skip-locking}).
|
||||||
If you don't take down @code{mysqld} you should at least do a
|
If you don't take down @code{mysqld} you should at least do a
|
||||||
@code{mysqladmin flush-tables} before you run @code{myisamchk}.
|
@code{mysqladmin flush-tables} before you run @code{myisamchk}.
|
||||||
|
Your tables @strong{may be corrupted} if the server and @code{myisamchk}
|
||||||
|
access the tables simultaneously.
|
||||||
|
|
||||||
This chapter describes how to check for and deal with data corruption
|
This chapter describes how to check for and deal with data corruption
|
||||||
in MySQL databases. If your tables get corrupted a lot you should
|
in MySQL databases. If your tables get corrupted frequently you should
|
||||||
try to find the reason for this! @xref{Crashing}.
|
try to find the reason for this! @xref{Crashing}.
|
||||||
|
|
||||||
The @code{MyISAM} table section contains reason for why a table could be
|
The @code{MyISAM} table section contains reason for why a table could be
|
||||||
|
@ -19481,7 +19484,7 @@ To check a MyISAM table, use the following commands:
|
||||||
@table @code
|
@table @code
|
||||||
@item myisamchk tbl_name
|
@item myisamchk tbl_name
|
||||||
This finds 99.99% of all errors. What it can't find is corruption that
|
This finds 99.99% of all errors. What it can't find is corruption that
|
||||||
involves @strong{ONLY} the data file (which is very unusual). If you want
|
involves @strong{only} the data file (which is very unusual). If you want
|
||||||
to check a table, you should normally run @code{myisamchk} without options or
|
to check a table, you should normally run @code{myisamchk} without options or
|
||||||
with either the @code{-s} or @code{--silent} option.
|
with either the @code{-s} or @code{--silent} option.
|
||||||
|
|
||||||
|
@ -19494,7 +19497,7 @@ in the index tree.
|
||||||
@item myisamchk -e tbl_name
|
@item myisamchk -e tbl_name
|
||||||
This does a complete and thorough check of all data (@code{-e} means
|
This does a complete and thorough check of all data (@code{-e} means
|
||||||
``extended check''). It does a check-read of every key for each row to verify
|
``extended check''). It does a check-read of every key for each row to verify
|
||||||
that they indeed point to the correct row. This may take a LONG time on a
|
that they indeed point to the correct row. This may take a long time on a
|
||||||
big table with many keys. @code{myisamchk} will normally stop after the first
|
big table with many keys. @code{myisamchk} will normally stop after the first
|
||||||
error it finds. If you want to obtain more information, you can add the
|
error it finds. If you want to obtain more information, you can add the
|
||||||
@code{--verbose} (@code{-v}) option. This causes @code{myisamchk} to keep
|
@code{--verbose} (@code{-v}) option. This causes @code{myisamchk} to keep
|
||||||
|
@ -19606,7 +19609,7 @@ memory} errors), or if @code{myisamchk} crashes, go to Stage 3.
|
||||||
@noindent
|
@noindent
|
||||||
@strong{Stage 2: Easy safe repair}
|
@strong{Stage 2: Easy safe repair}
|
||||||
|
|
||||||
NOTE: If you want repairing to go much faster, you should add: @code{-O
|
Note: If you want repairing to go much faster, you should add: @code{-O
|
||||||
sort_buffer=# -O key_buffer=#} (where # is about 1/4 of the available
|
sort_buffer=# -O key_buffer=#} (where # is about 1/4 of the available
|
||||||
memory) to all @code{isamchk/myisamchk} commands.
|
memory) to all @code{isamchk/myisamchk} commands.
|
||||||
|
|
||||||
|
@ -20422,7 +20425,7 @@ host. You can also get this list using the @code{mysqlshow} command.
|
||||||
@code{SHOW TABLES} lists the tables in a given database. You can also
|
@code{SHOW TABLES} lists the tables in a given database. You can also
|
||||||
get this list using the @code{mysqlshow db_name} command.
|
get this list using the @code{mysqlshow db_name} command.
|
||||||
|
|
||||||
@strong{NOTE:} If a user doesn't have any privileges for a table, the table
|
@strong{Note:} If a user doesn't have any privileges for a table, the table
|
||||||
will not show up in the output from @code{SHOW TABLES} or @code{mysqlshow
|
will not show up in the output from @code{SHOW TABLES} or @code{mysqlshow
|
||||||
db_name}.
|
db_name}.
|
||||||
|
|
||||||
|
@ -20796,7 +20799,7 @@ Is @code{ON} if @code{mysqld} was started with @code{--ansi}.
|
||||||
|
|
||||||
@item @code{back_log}
|
@item @code{back_log}
|
||||||
The number of outstanding connection requests MySQL can have. This
|
The number of outstanding connection requests MySQL can have. This
|
||||||
comes into play when the main MySQL thread gets @strong{VERY}
|
comes into play when the main MySQL thread gets @strong{very}
|
||||||
many connection requests in a very short time. It then takes some time
|
many connection requests in a very short time. It then takes some time
|
||||||
(although very little) for the main thread to check the connection and start
|
(although very little) for the main thread to check the connection and start
|
||||||
a new thread. The @code{back_log} value indicates how many requests can be
|
a new thread. The @code{back_log} value indicates how many requests can be
|
||||||
|
@ -20971,7 +20974,7 @@ Increase this to get better index handling (for all reads and multiple
|
||||||
writes) to as much as you can afford; 64M on a 256M machine that mainly
|
writes) to as much as you can afford; 64M on a 256M machine that mainly
|
||||||
runs MySQL is quite common. If you, however, make this too big
|
runs MySQL is quite common. If you, however, make this too big
|
||||||
(more than 50% of your total memory?) your system may start to page and
|
(more than 50% of your total memory?) your system may start to page and
|
||||||
become REALLY slow. Remember that because MySQL does not cache
|
become extremely slow. Remember that because MySQL does not cache
|
||||||
data read, that you will have to leave some room for the OS filesystem
|
data read, that you will have to leave some room for the OS filesystem
|
||||||
cache.
|
cache.
|
||||||
|
|
||||||
|
@ -21388,7 +21391,7 @@ use this character set for this connection.
|
||||||
|
|
||||||
One should use @code{mysql_real_escape_string()} when escaping strings
|
One should use @code{mysql_real_escape_string()} when escaping strings
|
||||||
for a SQL query. @code{mysql_real_escape_string()} is identical to the
|
for a SQL query. @code{mysql_real_escape_string()} is identical to the
|
||||||
old @code{mysql_escape_string()} function, except that it takes the MYSQL
|
old @code{mysql_escape_string()} function, except that it takes the @code{MYSQL}
|
||||||
connection handle as the first parameter.
|
connection handle as the first parameter.
|
||||||
|
|
||||||
If the client is compiled with different paths than where the server is
|
If the client is compiled with different paths than where the server is
|
||||||
|
@ -21634,7 +21637,7 @@ the discussion of string collating below. @xref{String collating}.
|
||||||
@code{ctype[]} is an array of bit values, with one element for one character.
|
@code{ctype[]} is an array of bit values, with one element for one character.
|
||||||
(Note that @code{to_lower[]}, @code{to_upper[]}, and @code{sort_order[]}
|
(Note that @code{to_lower[]}, @code{to_upper[]}, and @code{sort_order[]}
|
||||||
are indexed by character value, but @code{ctype[]} is indexed by character
|
are indexed by character value, but @code{ctype[]} is indexed by character
|
||||||
value + 1. This is an old legacy to be able to handle EOF.)
|
value + 1. This is an old legacy to be able to handle @code{EOF}.)
|
||||||
|
|
||||||
You can find the following bitmask definitions in @file{m_ctype.h}:
|
You can find the following bitmask definitions in @file{m_ctype.h}:
|
||||||
|
|
||||||
|
@ -21989,7 +21992,7 @@ edited version that you can reinstall.
|
||||||
@cindex @code{mysqld_multi}
|
@cindex @code{mysqld_multi}
|
||||||
|
|
||||||
@code{mysqld_multi} is meant for managing several @code{mysqld}
|
@code{mysqld_multi} is meant for managing several @code{mysqld}
|
||||||
processes running in different UNIX sockets and TCP/IP ports.
|
processes running in different Unix sockets and TCP/IP ports.
|
||||||
|
|
||||||
The program will search for group(s) named [mysqld#] from my.cnf (or the
|
The program will search for group(s) named [mysqld#] from my.cnf (or the
|
||||||
given --config-file=...), where # can be any positive number starting
|
given --config-file=...), where # can be any positive number starting
|
||||||
|
@ -22019,7 +22022,7 @@ list. Anything after a white space is ignored.
|
||||||
@itemize
|
@itemize
|
||||||
@cindex config-file option
|
@cindex config-file option
|
||||||
@item --config-file=...
|
@item --config-file=...
|
||||||
Alternative config file. NOTE: This will not affect this program's own
|
Alternative config file. Note: This will not affect this program's own
|
||||||
options (group @code{[mysqld_multi]}), but only groups
|
options (group @code{[mysqld_multi]}), but only groups
|
||||||
[mysqld#]. Without this option everything will be searched from the
|
[mysqld#]. Without this option everything will be searched from the
|
||||||
ordinary my.cnf file.
|
ordinary my.cnf file.
|
||||||
|
@ -22031,7 +22034,7 @@ Give an example of a config file.
|
||||||
Print this help and exit.
|
Print this help and exit.
|
||||||
@cindex log option
|
@cindex log option
|
||||||
@item --log=...
|
@item --log=...
|
||||||
Log file. Full path to and the name for the log file. NOTE: If the file
|
Log file. Full path to and the name for the log file. Note: If the file
|
||||||
exists, everything will be appended.
|
exists, everything will be appended.
|
||||||
@cindex mysqladmin option
|
@cindex mysqladmin option
|
||||||
@item --mysqladmin=...
|
@item --mysqladmin=...
|
||||||
|
@ -22052,9 +22055,9 @@ Password for user for @code{mysqladmin}.
|
||||||
@cindex tcp-ip option
|
@cindex tcp-ip option
|
||||||
@item --tcp-ip
|
@item --tcp-ip
|
||||||
Connect to the MySQL server(s) via the TCP/IP port instead of
|
Connect to the MySQL server(s) via the TCP/IP port instead of
|
||||||
the UNIX socket. This affects stopping and reporting. If a socket file
|
the Unix socket. This affects stopping and reporting. If a socket file
|
||||||
is missing, the server may still be running, but can be accessed only
|
is missing, the server may still be running, but can be accessed only
|
||||||
via the TCP/IP port. By default connecting is done via the UNIX socket.
|
via the TCP/IP port. By default connecting is done via the Unix socket.
|
||||||
@cindex user option
|
@cindex user option
|
||||||
@item --user=...
|
@item --user=...
|
||||||
MySQL user for @code{mysqladmin}.
|
MySQL user for @code{mysqladmin}.
|
||||||
|
@ -22091,7 +22094,7 @@ should have its own @code{pid-file}. The advantage using
|
||||||
it, if a @code{mysqld} process fails due to signal kill -9, or
|
it, if a @code{mysqld} process fails due to signal kill -9, or
|
||||||
similar. (Like segmentation fault, which MySQL should never do,
|
similar. (Like segmentation fault, which MySQL should never do,
|
||||||
of course ;) Please note that @code{safe_mysqld} script may require that
|
of course ;) Please note that @code{safe_mysqld} script may require that
|
||||||
you start it from a certain place. This means that you may have to CD to
|
you start it from a certain place. This means that you may have to @code{cd} to
|
||||||
a certain directory, before you start the @code{mysqld_multi}. If
|
a certain directory, before you start the @code{mysqld_multi}. If
|
||||||
you have problems starting, please see the @code{safe_mysqld}
|
you have problems starting, please see the @code{safe_mysqld}
|
||||||
script. Check especially the lines:
|
script. Check especially the lines:
|
||||||
|
@ -22106,7 +22109,7 @@ release) if test -d /data/mysql -a -f ./share/mysql/english/errmsg.sys
|
||||||
The above test should be successful, or you may encounter problems.
|
The above test should be successful, or you may encounter problems.
|
||||||
@item
|
@item
|
||||||
Beware of the dangers starting multiple @code{mysqlds} in the same data
|
Beware of the dangers starting multiple @code{mysqlds} in the same data
|
||||||
directory. Use separate data directories, unless you @strong{KNOW} what
|
directory. Use separate data directories, unless you @strong{know} what
|
||||||
you are doing!
|
you are doing!
|
||||||
@item
|
@item
|
||||||
The socket file and the TCP/IP port must be different for every @code{mysqld}.
|
The socket file and the TCP/IP port must be different for every @code{mysqld}.
|
||||||
|
@ -22123,17 +22126,17 @@ You may want to use option '--user' for @code{mysqld}, but in order to
|
||||||
do this you need to be root when you start the @code{mysqld_multi}
|
do this you need to be root when you start the @code{mysqld_multi}
|
||||||
script. Having the option in the config file doesn't matter; you will
|
script. Having the option in the config file doesn't matter; you will
|
||||||
just get a warning, if you are not the superuser and the @code{mysqlds}
|
just get a warning, if you are not the superuser and the @code{mysqlds}
|
||||||
are started under @strong{YOUR} UNIX account. @strong{IMPORTANT}: Make
|
are started under @strong{your} Unix account. @strong{Important}: Make
|
||||||
sure that the @code{pid-file} and the data directory are
|
sure that the @code{pid-file} and the data directory are
|
||||||
read+write(+execute for the latter one) accessible for @strong{THAT}
|
read+write(+execute for the latter one) accessible for @strong{that}
|
||||||
UNIX user, who the specific @code{mysqld} process is started
|
Unix user, who the specific @code{mysqld} process is started
|
||||||
as. @strong{DON'T} use the UNIX root account for this, unless you
|
as. @strong{Do not} use the Unix root account for this, unless you
|
||||||
@strong{KNOW} what you are doing!
|
@strong{know} what you are doing!
|
||||||
@item
|
@item
|
||||||
@strong{MOST IMPORTANT}: Make sure that you understand the meanings of
|
@strong{Most important}: Make sure that you understand the meanings of
|
||||||
the options that are passed to the @code{mysqlds} and why @strong{WOULD
|
the options that are passed to the @code{mysqld}s and @strong{why one
|
||||||
YOU WANT} to have separate @code{mysqld} processes. Starting multiple
|
would want} to have separate @code{mysqld} processes. Starting multiple
|
||||||
@code{mysqlds} in one data directory @strong{WILL NOT} give you extra
|
@code{mysqld}s in one data directory @strong{will not} give you extra
|
||||||
performance in a threaded system!
|
performance in a threaded system!
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
@ -22256,7 +22259,7 @@ Display a help message and exit.
|
||||||
@item -j big_tbl_name, --join=big_tbl_name
|
@item -j big_tbl_name, --join=big_tbl_name
|
||||||
Join all tables named on the command line into a single table
|
Join all tables named on the command line into a single table
|
||||||
@code{big_tbl_name}. All tables that are to be combined
|
@code{big_tbl_name}. All tables that are to be combined
|
||||||
MUST be identical (same column names and types, same indexes, etc.).
|
@strong{must} be identical (same column names and types, same indexes, etc.).
|
||||||
|
|
||||||
@item -p #, --packlength=#
|
@item -p #, --packlength=#
|
||||||
Specify the record length storage size, in bytes. The value should be 1, 2,
|
Specify the record length storage size, in bytes. The value should be 1, 2,
|
||||||
|
@ -22617,12 +22620,12 @@ The meaning of the values are:
|
||||||
|
|
||||||
@multitable @columnfractions .3 .7
|
@multitable @columnfractions .3 .7
|
||||||
@item @strong{Value} @tab @strong{Meaning}.
|
@item @strong{Value} @tab @strong{Meaning}.
|
||||||
@item YES @tab The option is activated and usable.
|
@item @code{YES} @tab The option is activated and usable.
|
||||||
@item NO @tab MySQL is not compiled with support for this option.
|
@item @code{NO} @tab MySQL is not compiled with support for this option.
|
||||||
@item DISABLED @tab The xxxx option is disabled because one started @code{mysqld} with @code{--skip-xxxx} or because one didn't start @code{mysqld} with all needed options to enable the option. In this case the @code{hostname.err} file should contain a reason for why the option is disabled.
|
@item @code{DISABLED} @tab The xxxx option is disabled because one started @code{mysqld} with @code{--skip-xxxx} or because one didn't start @code{mysqld} with all needed options to enable the option. In this case the @code{hostname.err} file should contain a reason for why the option is disabled.
|
||||||
@end multitable
|
@end multitable
|
||||||
|
|
||||||
@strong{NOTE}: To be able to create InnoDB tables you @strong{MUST} edit
|
@strong{Note}: To be able to create InnoDB tables you @strong{must} edit
|
||||||
your startup options to include at least the @code{innodb_data_file_path}
|
your startup options to include at least the @code{innodb_data_file_path}
|
||||||
option. @xref{InnoDB start}.
|
option. @xref{InnoDB start}.
|
||||||
|
|
||||||
|
@ -22889,7 +22892,7 @@ Continue even if we get a SQL error.
|
||||||
@item -g, --no-named-commands
|
@item -g, --no-named-commands
|
||||||
Named commands are disabled. Use \* form only, or use named commands
|
Named commands are disabled. Use \* form only, or use named commands
|
||||||
only in the beginning of a line ending with a semicolon (@samp{;}). Since
|
only in the beginning of a line ending with a semicolon (@samp{;}). Since
|
||||||
Version 10.9, the client now starts with this option ENABLED by default!
|
Version 10.9, the client now starts with this option @strong{enabled} by default!
|
||||||
With the -g option, long format commands will still work from the first
|
With the -g option, long format commands will still work from the first
|
||||||
line, however.
|
line, however.
|
||||||
|
|
||||||
|
@ -22944,7 +22947,7 @@ other database in the update log.
|
||||||
@item @code{--pager[=...]}
|
@item @code{--pager[=...]}
|
||||||
Output type. Default is your @code{ENV} variable @code{PAGER}. Valid
|
Output type. Default is your @code{ENV} variable @code{PAGER}. Valid
|
||||||
pagers are less, more, cat [> filename], etc. See interactive help (\h)
|
pagers are less, more, cat [> filename], etc. See interactive help (\h)
|
||||||
also. This option does not work in batch mode. Pager works only in UNIX.
|
also. This option does not work in batch mode. Pager works only in Unix.
|
||||||
|
|
||||||
@cindex @code{password}, @code{mysql} option
|
@cindex @code{password}, @code{mysql} option
|
||||||
@item -p[password], --password[=...]
|
@item -p[password], --password[=...]
|
||||||
|
@ -23056,7 +23059,7 @@ tee (\T) Set outfile [to_outfile]. Append everything into given outfile.
|
||||||
use (\u) Use another database. Takes database name as argument.
|
use (\u) Use another database. Takes database name as argument.
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
From the above, pager only works in UNIX.
|
From the above, pager only works in Unix.
|
||||||
|
|
||||||
@cindex status command
|
@cindex status command
|
||||||
The @code{status} command gives you some information about the
|
The @code{status} command gives you some information about the
|
||||||
|
@ -23143,7 +23146,7 @@ each command, just before the command line appears again waiting for the
|
||||||
next command.
|
next command.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Browsing, or searching the results in the interactive mode in UNIX less,
|
Browsing, or searching the results in the interactive mode in Unix less,
|
||||||
more, or any other similar program, is now possible with option
|
more, or any other similar program, is now possible with option
|
||||||
@code{--pager[=...]}. Without argument, @code{mysql} client will look
|
@code{--pager[=...]}. Without argument, @code{mysql} client will look
|
||||||
for environment variable PAGER and set @code{pager} to that.
|
for environment variable PAGER and set @code{pager} to that.
|
||||||
|
@ -23152,7 +23155,7 @@ command @code{pager} and disabled with command @code{nopager}. The
|
||||||
command takes an argument optionally and the @code{pager} will be set to
|
command takes an argument optionally and the @code{pager} will be set to
|
||||||
that. Command @code{pager} can be called without an argument, but this
|
that. Command @code{pager} can be called without an argument, but this
|
||||||
requires that the option @code{--pager} was used, or the @code{pager}
|
requires that the option @code{--pager} was used, or the @code{pager}
|
||||||
will default to stdout. @code{pager} works only in UNIX, since it uses
|
will default to stdout. @code{pager} works only in Unix, since it uses
|
||||||
the popen() function, which doesn't exist in Windows. In Windows, the
|
the popen() function, which doesn't exist in Windows. In Windows, the
|
||||||
@code{tee} option can be used instead, although it may not be as handy
|
@code{tee} option can be used instead, although it may not be as handy
|
||||||
as @code{pager} can be in some situations.
|
as @code{pager} can be in some situations.
|
||||||
|
@ -23191,11 +23194,11 @@ mysql> pager cat | tee /dr1/tmp/res.txt | tee /dr2/tmp/res2.txt | less -n -i -S
|
||||||
You can also combine the two functions above; have the @code{tee}
|
You can also combine the two functions above; have the @code{tee}
|
||||||
enabled, @code{pager} set to 'less' and you will be able to browse the
|
enabled, @code{pager} set to 'less' and you will be able to browse the
|
||||||
results in unix 'less' and still have everything appended into a file
|
results in unix 'less' and still have everything appended into a file
|
||||||
the same time. The difference between @code{UNIX tee} used with the
|
the same time. The difference between Unix @code{tee} used with the
|
||||||
@code{pager} and the @code{mysql} client in-built @code{tee}, is that
|
@code{pager} and the @code{mysql} client in-built @code{tee}, is that
|
||||||
the in-built @code{tee} works even if you don't have the @code{UNIX tee}
|
the in-built @code{tee} works even if you don't have the Unix @code{tee}
|
||||||
available. The in-built @code{tee} also logs everything that is printed
|
available. The in-built @code{tee} also logs everything that is printed
|
||||||
on the screen, where the @code{UNIX tee} used with @code{pager} doesn't
|
on the screen, where the Unix @code{tee} used with @code{pager} doesn't
|
||||||
log quite that much. Last, but not least, the interactive @code{tee} is
|
log quite that much. Last, but not least, the interactive @code{tee} is
|
||||||
more handy to switch on and off, when you want to log something into a
|
more handy to switch on and off, when you want to log something into a
|
||||||
file, but want to be able to turn the feature off sometimes.
|
file, but want to be able to turn the feature off sometimes.
|
||||||
|
@ -23586,7 +23589,7 @@ Verbose mode. Print out more information on what the program does.
|
||||||
@item -V, --version
|
@item -V, --version
|
||||||
Print version information and exit.
|
Print version information and exit.
|
||||||
@item -w, --where='where-condition'
|
@item -w, --where='where-condition'
|
||||||
Dump only selected records. Note that QUOTES are mandatory:
|
Dump only selected records. Note that quotes are mandatory:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
"--where=user='jimf'" "-wuserid>1" "-wuserid<1"
|
"--where=user='jimf'" "-wuserid>1" "-wuserid<1"
|
||||||
|
@ -23781,7 +23784,7 @@ is @code{localhost}.
|
||||||
See the description for the @code{--replace} option.
|
See the description for the @code{--replace} option.
|
||||||
|
|
||||||
@item -l, --lock-tables
|
@item -l, --lock-tables
|
||||||
Lock @strong{ALL} tables for writing before processing any text files. This
|
Lock @strong{all} tables for writing before processing any text files. This
|
||||||
ensures that all tables are synchronised on the server.
|
ensures that all tables are synchronised on the server.
|
||||||
|
|
||||||
@item -L, --local
|
@item -L, --local
|
||||||
|
@ -24046,7 +24049,7 @@ after the query is executed, but before any locks are released.
|
||||||
@cindex update log
|
@cindex update log
|
||||||
@cindex files, update log
|
@cindex files, update log
|
||||||
|
|
||||||
@strong{NOTE}: The update log is replaced by the binary
|
@strong{Note}: The update log is replaced by the binary
|
||||||
log. @xref{Binary log}. With this you can do anything that you can do
|
log. @xref{Binary log}. With this you can do anything that you can do
|
||||||
with the update log.
|
with the update log.
|
||||||
|
|
||||||
|
@ -24060,7 +24063,7 @@ extension, @code{mysqld} will create log file names like so:
|
||||||
time you execute @code{mysqladmin refresh}, execute @code{mysqladmin
|
time you execute @code{mysqladmin refresh}, execute @code{mysqladmin
|
||||||
flush-logs}, execute the @code{FLUSH LOGS} statement, or restart the server.
|
flush-logs}, execute the @code{FLUSH LOGS} statement, or restart the server.
|
||||||
|
|
||||||
@strong{NOTE:} For the above scheme to work, you should NOT create
|
@strong{Note:} For the above scheme to work, you must not create
|
||||||
your own files with the same filename as the update log + some extensions
|
your own files with the same filename as the update log + some extensions
|
||||||
that may be regarded as a number, in the directory used by the update log!
|
that may be regarded as a number, in the directory used by the update log!
|
||||||
|
|
||||||
|
@ -25484,7 +25487,7 @@ is, they have different design compromises that lead to different
|
||||||
behavior.
|
behavior.
|
||||||
|
|
||||||
If you strive for database independence, you need to get a good feeling
|
If you strive for database independence, you need to get a good feeling
|
||||||
for each SQL server's bottlenecks. MySQL is VERY fast in
|
for each SQL server's bottlenecks. MySQL is very fast in
|
||||||
retrieving and updating things, but will have a problem in mixing slow
|
retrieving and updating things, but will have a problem in mixing slow
|
||||||
readers/writers on the same table. Oracle, on the other hand, has a big
|
readers/writers on the same table. Oracle, on the other hand, has a big
|
||||||
problem when you try to access rows that you have recently updated
|
problem when you try to access rows that you have recently updated
|
||||||
|
@ -25505,11 +25508,11 @@ MySQL-specific keywords to a query. The code inside
|
||||||
@code{/**/} will be treated as a comment (ignored) by most other SQL
|
@code{/**/} will be treated as a comment (ignored) by most other SQL
|
||||||
servers.
|
servers.
|
||||||
|
|
||||||
If REAL high performance is more important than exactness, as in some
|
If high performance is more important than exactness, as in some
|
||||||
Web applications, a possibility is to create an application layer that
|
Web applications, it is possibile to create an application layer that
|
||||||
caches all results to give you even higher performance. By letting
|
caches all results to give you even higher performance. By letting
|
||||||
old results 'expire' after a while, you can keep the cache reasonably
|
old results 'expire' after a while, you can keep the cache reasonably
|
||||||
fresh. This is quite nice in case of extremely high load, in which case
|
fresh. This provides a method to handle high load spikes, in which case
|
||||||
you can dynamically increase the cache and set the expire timeout higher
|
you can dynamically increase the cache and set the expire timeout higher
|
||||||
until things get back to normal.
|
until things get back to normal.
|
||||||
|
|
||||||
|
@ -25635,7 +25638,7 @@ We have gather some more benchmark results at
|
||||||
|
|
||||||
Note that Oracle is not included because they asked to be removed. All
|
Note that Oracle is not included because they asked to be removed. All
|
||||||
Oracle benchmarks have to be passed by Oracle! We believe that makes
|
Oracle benchmarks have to be passed by Oracle! We believe that makes
|
||||||
Oracle benchmarks @strong{VERY} biased because the above benchmarks are
|
Oracle benchmarks @strong{very} biased because the above benchmarks are
|
||||||
supposed to show what a standard installation can do for a single
|
supposed to show what a standard installation can do for a single
|
||||||
client.
|
client.
|
||||||
|
|
||||||
|
@ -25697,8 +25700,8 @@ It is very common that some problems only occur when the system is very
|
||||||
heavily loaded. We have had many customers who contact us when they
|
heavily loaded. We have had many customers who contact us when they
|
||||||
have a (tested) system in production and have encountered load problems. In
|
have a (tested) system in production and have encountered load problems. In
|
||||||
every one of these cases so far, it has been problems with basic design
|
every one of these cases so far, it has been problems with basic design
|
||||||
(table scans are NOT good at high load) or OS/Library issues. Most of
|
(table scans are @strong{not good} at high load) or OS/Library issues. Most of
|
||||||
this would be a @strong{LOT} easier to fix if the systems were not
|
this would be a @strong{lot} easier to fix if the systems were not
|
||||||
already in production.
|
already in production.
|
||||||
|
|
||||||
To avoid problems like this, you should put some effort into benchmarking
|
To avoid problems like this, you should put some effort into benchmarking
|
||||||
|
@ -26773,7 +26776,7 @@ Try to keep the names simple (use @code{name} instead of
|
||||||
@code{customer_name} in the customer table). To make your names portable
|
@code{customer_name} in the customer table). To make your names portable
|
||||||
to other SQL servers you should keep them shorter than 18 characters.
|
to other SQL servers you should keep them shorter than 18 characters.
|
||||||
@item
|
@item
|
||||||
If you need REALLY high speed, you should take a look at the low-level
|
If you need really high speed, you should take a look at the low-level
|
||||||
interfaces for data storage that the different SQL servers support! For
|
interfaces for data storage that the different SQL servers support! For
|
||||||
example, by accessing the MySQL @code{MyISAM} directly, you could
|
example, by accessing the MySQL @code{MyISAM} directly, you could
|
||||||
get a speed increase of 2-5 times compared to using the SQL interface.
|
get a speed increase of 2-5 times compared to using the SQL interface.
|
||||||
|
@ -26887,7 +26890,7 @@ The table locking code in MySQL is deadlock free.
|
||||||
|
|
||||||
MySQL uses table locking (instead of row locking or column
|
MySQL uses table locking (instead of row locking or column
|
||||||
locking) on all table types, except @code{BDB} tables, to achieve a very
|
locking) on all table types, except @code{BDB} tables, to achieve a very
|
||||||
high lock speed. For large tables, table locking is MUCH better than
|
high lock speed. For large tables, table locking is much better than
|
||||||
row locking for most applications, but there are, of course, some
|
row locking for most applications, but there are, of course, some
|
||||||
pitfalls.
|
pitfalls.
|
||||||
|
|
||||||
|
@ -27039,7 +27042,7 @@ You lose a lot of space, as you must duplicate indexes from the nodes
|
||||||
Deletes will degenerate the table over time (as indexes in nodes are
|
Deletes will degenerate the table over time (as indexes in nodes are
|
||||||
usually not updated on delete).
|
usually not updated on delete).
|
||||||
@item
|
@item
|
||||||
It's harder to cache ONLY the index data.
|
It's harder to cache only the index data.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
|
||||||
|
@ -27099,7 +27102,7 @@ Only create the indexes that you really need. Indexes are good for
|
||||||
retrieval but bad when you need to store things fast. If you mostly
|
retrieval but bad when you need to store things fast. If you mostly
|
||||||
access a table by searching on a combination of columns, make an index
|
access a table by searching on a combination of columns, make an index
|
||||||
on them. The first index part should be the most used column. If you are
|
on them. The first index part should be the most used column. If you are
|
||||||
ALWAYS using many columns, you should use the column with more duplicates
|
@strong{always} using many columns, you should use the column with more duplicates
|
||||||
first to get better compression of the index.
|
first to get better compression of the index.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
|
@ -28106,7 +28109,7 @@ for replication of tables with fancy column names to work.
|
||||||
@item TIMESTAMP = timestamp_value | DEFAULT
|
@item TIMESTAMP = timestamp_value | DEFAULT
|
||||||
Set the time for this client. This is used to get the original timestamp if
|
Set the time for this client. This is used to get the original timestamp if
|
||||||
you use the update log to restore rows. @code{timestamp_value} should be a
|
you use the update log to restore rows. @code{timestamp_value} should be a
|
||||||
UNIX Epoch timestamp, not a MySQL timestamp.
|
Unix epoch timestamp, not a MySQL timestamp.
|
||||||
|
|
||||||
@item LAST_INSERT_ID = #
|
@item LAST_INSERT_ID = #
|
||||||
Set the value to be returned from @code{LAST_INSERT_ID()}. This is stored in
|
Set the value to be returned from @code{LAST_INSERT_ID()}. This is stored in
|
||||||
|
@ -28335,7 +28338,7 @@ will be created in the same directory where the data/index file is.
|
||||||
@item
|
@item
|
||||||
When you drop a table that is using symlinks, both the symlink and the
|
When you drop a table that is using symlinks, both the symlink and the
|
||||||
file the symlink points to is dropped. This is a good reason to why you
|
file the symlink points to is dropped. This is a good reason to why you
|
||||||
should NOT run @code{mysqld} as root and not allow persons to have write
|
should @strong{not} run @code{mysqld} as root and not allow persons to have write
|
||||||
access to the MySQL database directories.
|
access to the MySQL database directories.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
|
@ -29363,7 +29366,7 @@ These three are synonyms for @code{CHAR(1)}.
|
||||||
@tindex VARCHAR
|
@tindex VARCHAR
|
||||||
@item [NATIONAL] VARCHAR(M) [BINARY]
|
@item [NATIONAL] VARCHAR(M) [BINARY]
|
||||||
|
|
||||||
A variable-length string. @strong{NOTE:} Trailing spaces are removed when
|
A variable-length string. @strong{Note:} Trailing spaces are removed when
|
||||||
the value is stored (this differs from the ANSI SQL specification). The range
|
the value is stored (this differs from the ANSI SQL specification). The range
|
||||||
of @code{M} is 1 to 255 characters. @code{VARCHAR} values are sorted and
|
of @code{M} is 1 to 255 characters. @code{VARCHAR} values are sorted and
|
||||||
compared in case-insensitive fashion unless the @code{BINARY} keyword is
|
compared in case-insensitive fashion unless the @code{BINARY} keyword is
|
||||||
|
@ -30585,7 +30588,7 @@ An expression that contains @code{NULL} always produces a @code{NULL} value
|
||||||
unless otherwise indicated in the documentation for the operators and
|
unless otherwise indicated in the documentation for the operators and
|
||||||
functions involved in the expression.
|
functions involved in the expression.
|
||||||
|
|
||||||
@strong{NOTE:} There must be no whitespace between a function name and the
|
@strong{Note:} There must be no whitespace between a function name and the
|
||||||
parenthesis following it. This helps the MySQL parser distinguish
|
parenthesis following it. This helps the MySQL parser distinguish
|
||||||
between function calls and references to tables or columns that happen to
|
between function calls and references to tables or columns that happen to
|
||||||
have the same name as a function. Spaces around arguments are permitted,
|
have the same name as a function. Spaces around arguments are permitted,
|
||||||
|
@ -33657,7 +33660,7 @@ the @code{ESCAPED BY} character:
|
||||||
Additionally, @code{ASCII 0} is converted to @code{ESCAPED BY} followed by 0
|
Additionally, @code{ASCII 0} is converted to @code{ESCAPED BY} followed by 0
|
||||||
(@code{ASCII 48}).
|
(@code{ASCII 48}).
|
||||||
|
|
||||||
The reason for the above is that you MUST escape any @code{FIELDS
|
The reason for the above is that you @strong{must} escape any @code{FIELDS
|
||||||
TERMINATED BY}, @code{ESCAPED BY}, or @code{LINES TERMINATED BY}
|
TERMINATED BY}, @code{ESCAPED BY}, or @code{LINES TERMINATED BY}
|
||||||
characters to reliably be able to read the file back. @code{ASCII 0} is
|
characters to reliably be able to read the file back. @code{ASCII 0} is
|
||||||
escaped to make it easier to view with some pagers.
|
escaped to make it easier to view with some pagers.
|
||||||
|
@ -34340,7 +34343,7 @@ all rows, and are willing to suffer a speed penalty, you can use a
|
||||||
mysql> DELETE FROM table_name WHERE 1>0;
|
mysql> DELETE FROM table_name WHERE 1>0;
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
Note that this is MUCH slower than @code{DELETE FROM table_name} with no
|
Note that this is much slower than @code{DELETE FROM table_name} with no
|
||||||
@code{WHERE} clause, because it deletes rows one at a time.
|
@code{WHERE} clause, because it deletes rows one at a time.
|
||||||
|
|
||||||
If you specify the keyword @code{LOW_PRIORITY}, execution of the
|
If you specify the keyword @code{LOW_PRIORITY}, execution of the
|
||||||
|
@ -34359,7 +34362,7 @@ TABLE} statement or the @code{myisamchk} utility to reorganise tables.
|
||||||
|
|
||||||
The multi table delete format is supported starting from MySQL 4.0.0.
|
The multi table delete format is supported starting from MySQL 4.0.0.
|
||||||
|
|
||||||
The idea is that only matching rows from the tables listed BEFORE the
|
The idea is that only matching rows from the tables listed @strong{before} the
|
||||||
@code{FROM} clause is deleted. The effect is that you can delete rows
|
@code{FROM} clause is deleted. The effect is that you can delete rows
|
||||||
from many tables at the same time and also have additional tables that
|
from many tables at the same time and also have additional tables that
|
||||||
are used for searching.
|
are used for searching.
|
||||||
|
@ -35918,7 +35921,7 @@ exist.
|
||||||
@code{RESTRICT} and @code{CASCADE} are allowed to make porting easier.
|
@code{RESTRICT} and @code{CASCADE} are allowed to make porting easier.
|
||||||
For the moment they don't do anything.
|
For the moment they don't do anything.
|
||||||
|
|
||||||
@strong{NOTE}: @code{DROP TABLE} is not transaction-safe and will
|
@strong{Note}: @code{DROP TABLE} is not transaction-safe and will
|
||||||
automatically commit any active transactions.
|
automatically commit any active transactions.
|
||||||
|
|
||||||
|
|
||||||
|
@ -36216,7 +36219,7 @@ tables to transactions safe tables.
|
||||||
You can safely kill a thread that is waiting for a table lock with
|
You can safely kill a thread that is waiting for a table lock with
|
||||||
@code{KILL}. @xref{KILL}.
|
@code{KILL}. @xref{KILL}.
|
||||||
|
|
||||||
Note that you should @strong{NOT} lock any tables that you are using with
|
Note that you should @strong{not} lock any tables that you are using with
|
||||||
@code{INSERT DELAYED}. This is because that in this case the @code{INSERT}
|
@code{INSERT DELAYED}. This is because that in this case the @code{INSERT}
|
||||||
is done by a separate thread.
|
is done by a separate thread.
|
||||||
|
|
||||||
|
@ -36768,9 +36771,9 @@ The following options to @code{mysqld} can be used to change the behavior of
|
||||||
@item @code{--myisam-recover=#} @tab Automatic recover of crashed tables.
|
@item @code{--myisam-recover=#} @tab Automatic recover of crashed tables.
|
||||||
@item @code{-O myisam_sort_buffer_size=#} @tab Buffer used when recovering tables.
|
@item @code{-O myisam_sort_buffer_size=#} @tab Buffer used when recovering tables.
|
||||||
@item @code{--delay-key-write-for-all-tables} @tab Don't flush key buffers between writes for any MyISAM table
|
@item @code{--delay-key-write-for-all-tables} @tab Don't flush key buffers between writes for any MyISAM table
|
||||||
@item @code{-O myisam_max_extra_sort_file_size=#} @tab Used to help MySQL to decide when to use the slow but safe key cache index create method. @strong{NOTE} that this parameter is given in megabytes!
|
@item @code{-O myisam_max_extra_sort_file_size=#} @tab Used to help MySQL to decide when to use the slow but safe key cache index create method. @strong{Note} that this parameter is given in megabytes!
|
||||||
@item @code{-O myisam_max_sort_file_size=#} @tab Don't use the fast sort index method to created index if the temporary file would get bigger than this. @strong{NOTE} that this paramter is given in megabytes!
|
@item @code{-O myisam_max_sort_file_size=#} @tab Don't use the fast sort index method to created index if the temporary file would get bigger than this. @strong{Note} that this paramter is given in megabytes!
|
||||||
@item @code{-O myisam_bulk_insert_tree_size=#} @tab Size of tree cache used in bulk insert optimisation. @strong{NOTE} that this is a limit @strong{per thread}!
|
@item @code{-O myisam_bulk_insert_tree_size=#} @tab Size of tree cache used in bulk insert optimisation. @strong{Note} that this is a limit @strong{per thread}!
|
||||||
@end multitable
|
@end multitable
|
||||||
|
|
||||||
The automatic recovery is activated if you start @code{mysqld} with
|
The automatic recovery is activated if you start @code{mysqld} with
|
||||||
|
@ -38901,7 +38904,7 @@ file size in @code{innodb_data_file_path}. The partition must be
|
||||||
innodb_data_file_path=hdd1:5Gnewraw;hdd2:2Gnewraw
|
innodb_data_file_path=hdd1:5Gnewraw;hdd2:2Gnewraw
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
When you start the database again you MUST change the keyword
|
When you start the database again you @strong{must} change the keyword
|
||||||
to @code{raw}. Otherwise InnoDB will write over your
|
to @code{raw}. Otherwise InnoDB will write over your
|
||||||
partition!
|
partition!
|
||||||
|
|
||||||
|
@ -39270,7 +39273,7 @@ stored as the key data + the @code{PRIMARY KEY}, it's important to keep the
|
||||||
@code{PRIMARY KEY} as short as possible to save disk and get better speed.
|
@code{PRIMARY KEY} as short as possible to save disk and get better speed.
|
||||||
@item
|
@item
|
||||||
@code{LOCK TABLES} works on @code{BDB} tables as with other tables. If
|
@code{LOCK TABLES} works on @code{BDB} tables as with other tables. If
|
||||||
you don't use @code{LOCK TABLE}, MYSQL will issue an internal
|
you don't use @code{LOCK TABLE}, MySQL will issue an internal
|
||||||
multiple-write lock on the table to ensure that the table will be
|
multiple-write lock on the table to ensure that the table will be
|
||||||
properly locked if another thread issues a table lock.
|
properly locked if another thread issues a table lock.
|
||||||
@item
|
@item
|
||||||
|
@ -39708,7 +39711,7 @@ $rv = $dbh->do($statement)
|
||||||
or die "Can't execute $statement: $dbh- >errstr\n";
|
or die "Can't execute $statement: $dbh- >errstr\n";
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
Generally the 'do' statement is MUCH faster (and is preferable)
|
Generally the 'do' statement is much faster (and is preferable)
|
||||||
than prepare/execute for statements that don't contain parameters.
|
than prepare/execute for statements that don't contain parameters.
|
||||||
|
|
||||||
@findex DBI->quote()
|
@findex DBI->quote()
|
||||||
|
@ -42593,7 +42596,7 @@ else // query succeeded, process any data returned by it
|
||||||
@}
|
@}
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
An alternative (if you KNOW that your query should have returned a result set)
|
An alternative (if you know that your query should have returned a result set)
|
||||||
is to replace the @code{mysql_errno(&mysql)} call with a check if
|
is to replace the @code{mysql_errno(&mysql)} call with a check if
|
||||||
@code{mysql_field_count(&mysql)} is = 0. This will only happen if something
|
@code{mysql_field_count(&mysql)} is = 0. This will only happen if something
|
||||||
went wrong.
|
went wrong.
|
||||||
|
@ -44973,7 +44976,7 @@ parameter to @code{1}:
|
||||||
If @code{xxx()} sets @code{*error} to @code{1} for any row, the function
|
If @code{xxx()} sets @code{*error} to @code{1} for any row, the function
|
||||||
value is @code{NULL} for the current row and for any subsequent rows
|
value is @code{NULL} for the current row and for any subsequent rows
|
||||||
processed by the statement in which @code{XXX()} was invoked. (@code{xxx()}
|
processed by the statement in which @code{XXX()} was invoked. (@code{xxx()}
|
||||||
will not even be called for subsequent rows.) @strong{NOTE:} In
|
will not even be called for subsequent rows.) @strong{Note:} In
|
||||||
MySQL versions prior to 3.22.10, you should set both @code{*error}
|
MySQL versions prior to 3.22.10, you should set both @code{*error}
|
||||||
and @code{*is_null}:
|
and @code{*is_null}:
|
||||||
|
|
||||||
|
@ -45289,7 +45292,7 @@ The machine doesn't answer to a remote machine's pings.
|
||||||
Different, unrelated programs don't behave correctly.
|
Different, unrelated programs don't behave correctly.
|
||||||
@item
|
@item
|
||||||
If your system rebooted unexpectedly (a faulty user level program should
|
If your system rebooted unexpectedly (a faulty user level program should
|
||||||
NEVER be able to take down your system).
|
@strong{never} be able to take down your system).
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
In this case you should start by checking all your cables and run some
|
In this case you should start by checking all your cables and run some
|
||||||
|
@ -46034,10 +46037,10 @@ symbols that start with @code{mysql_}, like the following:
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
you should be able to solve this by adding @code{-Lpath-to-the-mysql-library
|
you should be able to solve this by adding @code{-Lpath-to-the-mysql-library
|
||||||
-lmysqlclient} @strong{LAST} on your link line.
|
-lmysqlclient} @strong{last} on your link line.
|
||||||
|
|
||||||
If you get @code{undefined reference} errors for the @code{uncompress}
|
If you get @code{undefined reference} errors for the @code{uncompress}
|
||||||
or @code{compress} function, add @code{-lz} @strong{LAST} on your link
|
or @code{compress} function, add @code{-lz} @strong{last} on your link
|
||||||
line and try again!
|
line and try again!
|
||||||
|
|
||||||
If you get @code{undefined reference} errors for functions that should
|
If you get @code{undefined reference} errors for functions that should
|
||||||
|
@ -46978,9 +46981,9 @@ SELECT col_name1, col_name3, col_name2 FROM tbl_name;
|
||||||
|
|
||||||
will return columns in the order @code{col_name1}, @code{col_name3}, @code{col_name2}.
|
will return columns in the order @code{col_name1}, @code{col_name3}, @code{col_name2}.
|
||||||
|
|
||||||
You should @strong{NEVER}, in an application, use @code{SELECT *} and
|
You should @strong{never}, in an application, use @code{SELECT *} and
|
||||||
retrieve the columns based on their position, because the order in which
|
retrieve the columns based on their position, because the order in which
|
||||||
columns are returned @strong{CANNOT} be guaranteed over time. A simple
|
columns are returned @strong{cannot} be guaranteed over time. A simple
|
||||||
change to your database may cause your application to fail rather
|
change to your database may cause your application to fail rather
|
||||||
dramatically.
|
dramatically.
|
||||||
|
|
||||||
|
@ -49480,7 +49483,7 @@ Initialise signals early to avoid problem with signals in InnoDB.
|
||||||
@item
|
@item
|
||||||
Applied patch for the @code{tis620} character set to make comparisons
|
Applied patch for the @code{tis620} character set to make comparisons
|
||||||
case-independent and to fix a bug in @code{LIKE} for this character set.
|
case-independent and to fix a bug in @code{LIKE} for this character set.
|
||||||
@strong{NOTE}: All tables that uses the @code{tis620} character set must be
|
@strong{Note}: All tables that uses the @code{tis620} character set must be
|
||||||
fixed with @code{myisamchk -r} or @code{REPAIR TABLE} !
|
fixed with @code{myisamchk -r} or @code{REPAIR TABLE} !
|
||||||
@item
|
@item
|
||||||
Added @code{--skip-safemalloc} option to @code{mysqld}.
|
Added @code{--skip-safemalloc} option to @code{mysqld}.
|
||||||
|
@ -49496,7 +49499,7 @@ Fixed a bug that allowed you to use database names containing a @samp{.}
|
||||||
character. This fixes a serious security issue when @code{mysqld} is run
|
character. This fixes a serious security issue when @code{mysqld} is run
|
||||||
as root.
|
as root.
|
||||||
@item
|
@item
|
||||||
Fixed bug when thread creation failed (could happen when doing a LOT
|
Fixed bug when thread creation failed (could happen when doing a @strong{lot}
|
||||||
of connections in a short time).
|
of connections in a short time).
|
||||||
@item
|
@item
|
||||||
Fixed some problems with @code{FLUSH TABLES} and @code{TEMPORARY} tables.
|
Fixed some problems with @code{FLUSH TABLES} and @code{TEMPORARY} tables.
|
||||||
|
@ -50027,7 +50030,7 @@ and the interactive help for more information.
|
||||||
Fixed crash when automatic repair of @code{MyISAM} table failed.
|
Fixed crash when automatic repair of @code{MyISAM} table failed.
|
||||||
@item
|
@item
|
||||||
Fixed a major performance bug in the table locking code when one
|
Fixed a major performance bug in the table locking code when one
|
||||||
constantly had a LOT of @code{SELECT}, @code{UPDATE} and @code{INSERT}
|
constantly had a lot of @code{SELECT}, @code{UPDATE} and @code{INSERT}
|
||||||
statements running. The symptom was that the @code{UPDATE} and
|
statements running. The symptom was that the @code{UPDATE} and
|
||||||
@code{INSERT} queries were locked for a long time while new @code{SELECT}
|
@code{INSERT} queries were locked for a long time while new @code{SELECT}
|
||||||
statements were executed before the updates.
|
statements were executed before the updates.
|
||||||
|
@ -51549,7 +51552,7 @@ Added @code{mysqld} option @code{--default-table-type}.
|
||||||
|
|
||||||
The 3.22 version has faster and safer connect code than version 3.21, as well
|
The 3.22 version has faster and safer connect code than version 3.21, as well
|
||||||
as a lot of new nice enhancements. The reason for not including these changes
|
as a lot of new nice enhancements. The reason for not including these changes
|
||||||
As there aren't really any MAJOR changes, upgrading from 3.21 to 3.22 should
|
As there aren't really any major changes, upgrading from 3.21 to 3.22 should
|
||||||
be very easy and painless. @xref{Upgrading-from-3.21}.
|
be very easy and painless. @xref{Upgrading-from-3.21}.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
|
@ -52088,7 +52091,7 @@ Fix for @code{isamchk} for tables which need big temporary files.
|
||||||
|
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
@strong{IMPORTANT}: You must run the @code{mysql_fix_privilege_tables} script
|
@strong{Important}: You must run the @code{mysql_fix_privilege_tables} script
|
||||||
when you upgrade to this version! This is needed because of the new
|
when you upgrade to this version! This is needed because of the new
|
||||||
@code{GRANT} system. If you don't do this, you will get @code{Access
|
@code{GRANT} system. If you don't do this, you will get @code{Access
|
||||||
denied} when you try to use @code{ALTER TABLE}, @code{CREATE INDEX} or
|
denied} when you try to use @code{ALTER TABLE}, @code{CREATE INDEX} or
|
||||||
|
@ -52169,7 +52172,7 @@ Added @code{maybe_null} to the UDF structure.
|
||||||
Added option @code{IGNORE} to @code{INSERT} statements with many rows.
|
Added option @code{IGNORE} to @code{INSERT} statements with many rows.
|
||||||
@item
|
@item
|
||||||
Fixed some problems with sorting of the koi8 character sets; Users of koi8
|
Fixed some problems with sorting of the koi8 character sets; Users of koi8
|
||||||
@strong{MUST} run @code{isamchk -rq} on each table that has an index on
|
@strong{must} run @code{isamchk -rq} on each table that has an index on
|
||||||
a @code{CHAR} or @code{VARCHAR} column.
|
a @code{CHAR} or @code{VARCHAR} column.
|
||||||
@item
|
@item
|
||||||
New script @code{mysql_setpermission}, by Luuk de Boer, allows one
|
New script @code{mysql_setpermission}, by Luuk de Boer, allows one
|
||||||
|
@ -52218,7 +52221,7 @@ Added a lot more output to @code{mysqladmin debug}.
|
||||||
@item
|
@item
|
||||||
You can now start @code{mysqld} on Windows with the @code{--flush} option.
|
You can now start @code{mysqld} on Windows with the @code{--flush} option.
|
||||||
This will flush all tables to disk after each update. This makes things
|
This will flush all tables to disk after each update. This makes things
|
||||||
much safer on NT/Win98 but also @strong{MUCH} slower.
|
much safer on NT/Win98 but also @strong{much} slower.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
|
||||||
|
@ -52421,13 +52424,13 @@ trailing @samp{;}.
|
||||||
@item
|
@item
|
||||||
Fix for corrupted fixed-format output generated by @code{SELECT INTO OUTFILE}.
|
Fix for corrupted fixed-format output generated by @code{SELECT INTO OUTFILE}.
|
||||||
@item
|
@item
|
||||||
@strong{WARNING: INCOMPATIBLE CHANGE!!}
|
@strong{Warning: Incompatible change!}
|
||||||
Added Oracle @code{GREATEST()} and @code{LEAST()} functions. You must now use
|
Added Oracle @code{GREATEST()} and @code{LEAST()} functions. You must now use
|
||||||
these instead of the @code{MAX()} and @code{MIN()} functions to get the
|
these instead of the @code{MAX()} and @code{MIN()} functions to get the
|
||||||
largest/smallest value from a list of values. These can now handle @code{REAL},
|
largest/smallest value from a list of values. These can now handle @code{REAL},
|
||||||
@code{BIGINT} and string (@code{CHAR} or @code{VARCHAR}) values.
|
@code{BIGINT} and string (@code{CHAR} or @code{VARCHAR}) values.
|
||||||
@item
|
@item
|
||||||
@strong{WARNING: INCOMPATIBLE CHANGE!!}
|
@strong{Warning: Incompatible change!}
|
||||||
@code{DAYOFWEEK()} had offset 0 for Sunday. Changed the offset to 1.
|
@code{DAYOFWEEK()} had offset 0 for Sunday. Changed the offset to 1.
|
||||||
@item
|
@item
|
||||||
Give an error for queries that mix @code{GROUP BY} columns and fields when
|
Give an error for queries that mix @code{GROUP BY} columns and fields when
|
||||||
|
@ -53247,7 +53250,7 @@ Added ODBC 2.0 & 3.0 functions @code{POWER()}, @code{SPACE()},
|
||||||
@code{COT()}, @code{DEGREES()}, @code{RADIANS()}, @code{ROUND(2 arg)}
|
@code{COT()}, @code{DEGREES()}, @code{RADIANS()}, @code{ROUND(2 arg)}
|
||||||
and @code{TRUNCATE()}.
|
and @code{TRUNCATE()}.
|
||||||
@item
|
@item
|
||||||
@strong{WARNING: INCOMPATIBLE CHANGE!!} @code{LOCATE()} parameters were
|
@strong{Warning: Incompatible change!} @code{LOCATE()} parameters were
|
||||||
swapped according to ODBC standard. Fixed.
|
swapped according to ODBC standard. Fixed.
|
||||||
@item
|
@item
|
||||||
Added function @code{TIME_TO_SEC()}.
|
Added function @code{TIME_TO_SEC()}.
|
||||||
|
@ -53266,14 +53269,14 @@ be compatible with @code{mysqldump}.
|
||||||
|
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
@strong{WARNING: INCOMPATIBLE CHANGE!!} @code{mysqlperl} is now from
|
@strong{Warning: Incompatible change!} @code{mysqlperl} is now from
|
||||||
Msql-Mysql-modules. This means that @code{connect()} now takes
|
Msql-Mysql-modules. This means that @code{connect()} now takes
|
||||||
@code{host}, @code{database}, @code{user}, @code{password} arguments! The old
|
@code{host}, @code{database}, @code{user}, @code{password} arguments! The old
|
||||||
version took @code{host}, @code{database}, @code{password}, @code{user}.
|
version took @code{host}, @code{database}, @code{password}, @code{user}.
|
||||||
@item
|
@item
|
||||||
Allow @code{DATE '1997-01-01'}, @code{TIME '12:10:10'} and
|
Allow @code{DATE '1997-01-01'}, @code{TIME '12:10:10'} and
|
||||||
@code{TIMESTAMP '1997-01-01 12:10:10'} formats required by ANSI SQL.
|
@code{TIMESTAMP '1997-01-01 12:10:10'} formats required by ANSI SQL.
|
||||||
@strong{WARNING: INCOMPATIBLE CHANGE!!} This has the unfortunate
|
@strong{Warning: Incompatible change!} This has the unfortunate
|
||||||
side-effect that you no longer can have columns named @code{DATE}, @code{TIME}
|
side-effect that you no longer can have columns named @code{DATE}, @code{TIME}
|
||||||
or @code{TIMESTAMP}. :( Old columns can still be accessed through
|
or @code{TIMESTAMP}. :( Old columns can still be accessed through
|
||||||
@code{tablename.columnname}!)
|
@code{tablename.columnname}!)
|
||||||
|
@ -54758,7 +54761,7 @@ After this you can use the @code{mysql.exe} command line tool in a
|
||||||
second DOS window to reproduce the problem. You can take down the above
|
second DOS window to reproduce the problem. You can take down the above
|
||||||
@code{mysqld} server with @code{mysqladmin shutdown}.
|
@code{mysqld} server with @code{mysqladmin shutdown}.
|
||||||
|
|
||||||
Note that the trace file will get very @emph{BIG}!
|
Note that the trace file will get @strong{very big}!
|
||||||
If you want to have a smaller trace file, you can use something like:
|
If you want to have a smaller trace file, you can use something like:
|
||||||
|
|
||||||
@code{mysqld --debug=d,info,error,query,general,where:O,/tmp/mysqld.trace}
|
@code{mysqld --debug=d,info,error,query,general,where:O,/tmp/mysqld.trace}
|
||||||
|
@ -54867,7 +54870,7 @@ setting the @code{DBI_TRACE} environment variable.
|
||||||
On some operating systems, the error log will contain a stack trace if
|
On some operating systems, the error log will contain a stack trace if
|
||||||
@code{mysqld} dies unexpectedly. You can use this to find out where (and
|
@code{mysqld} dies unexpectedly. You can use this to find out where (and
|
||||||
maybe why) @code{mysqld} died. @xref{Error log}. To get a stack trace,
|
maybe why) @code{mysqld} died. @xref{Error log}. To get a stack trace,
|
||||||
you should NOT compile @code{mysqld} with the @code{-fomit-frame-pointer}
|
you must not compile @code{mysqld} with the @code{-fomit-frame-pointer}
|
||||||
option to gcc. @xref{Compiling for debugging}.
|
option to gcc. @xref{Compiling for debugging}.
|
||||||
|
|
||||||
If the error file contains something like the following:
|
If the error file contains something like the following:
|
||||||
|
@ -55235,7 +55238,7 @@ Here are some tips about locking in MySQL:
|
||||||
|
|
||||||
On web application most applications do lots of selects, very few
|
On web application most applications do lots of selects, very few
|
||||||
deletes, updates mainly on keys and inserts in some specific tables.
|
deletes, updates mainly on keys and inserts in some specific tables.
|
||||||
The base MySQL setup is VERY tuned for this.
|
The base MySQL setup is very well tuned for this.
|
||||||
|
|
||||||
Concurrent users is not a problem if one doesn't mix updates and selects
|
Concurrent users is not a problem if one doesn't mix updates and selects
|
||||||
that needs to examine many rows in the same table.
|
that needs to examine many rows in the same table.
|
||||||
|
|
|
@ -1712,7 +1712,7 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
|
||||||
charset_name=charset_name_buff;
|
charset_name=charset_name_buff;
|
||||||
sprintf(charset_name,"%d",mysql->server_language); /* In case of errors */
|
sprintf(charset_name,"%d",mysql->server_language); /* In case of errors */
|
||||||
if (!(mysql->charset =
|
if (!(mysql->charset =
|
||||||
get_charset((uint8) mysql->server_language, MYF(MY_WME))))
|
get_charset((uint8) mysql->server_language, MYF(0))))
|
||||||
mysql->charset = default_charset_info; /* shouldn't be fatal */
|
mysql->charset = default_charset_info; /* shouldn't be fatal */
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -296,7 +296,7 @@ static CHARSET_INFO *find_charset_by_name(CHARSET_INFO **table,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static CHARSET_INFO *add_charset(uint cs_number, const char *cs_name)
|
static CHARSET_INFO *add_charset(uint cs_number, const char *cs_name, myf flags)
|
||||||
{
|
{
|
||||||
CHARSET_INFO tmp_cs,*cs;
|
CHARSET_INFO tmp_cs,*cs;
|
||||||
uchar tmp_ctype[CTYPE_TABLE_SIZE];
|
uchar tmp_ctype[CTYPE_TABLE_SIZE];
|
||||||
|
@ -311,11 +311,11 @@ static CHARSET_INFO *add_charset(uint cs_number, const char *cs_name)
|
||||||
cs->to_lower=tmp_to_lower;
|
cs->to_lower=tmp_to_lower;
|
||||||
cs->to_upper=tmp_to_upper;
|
cs->to_upper=tmp_to_upper;
|
||||||
cs->sort_order=tmp_sort_order;
|
cs->sort_order=tmp_sort_order;
|
||||||
if (read_charset_file(cs_number, cs, MYF(MY_WME)))
|
if (read_charset_file(cs_number, cs, flags))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
cs = (CHARSET_INFO*) my_once_alloc(sizeof(CHARSET_INFO),
|
cs = (CHARSET_INFO*) my_once_alloc(sizeof(CHARSET_INFO),
|
||||||
MYF(MY_WME));
|
MYF(MY_WME));
|
||||||
*cs=tmp_cs;
|
*cs=tmp_cs;
|
||||||
cs->name = (char *) my_once_alloc((uint) strlen(cs_name)+1, MYF(MY_WME));
|
cs->name = (char *) my_once_alloc((uint) strlen(cs_name)+1, MYF(MY_WME));
|
||||||
cs->ctype = (uchar*) my_once_alloc(CTYPE_TABLE_SIZE, MYF(MY_WME));
|
cs->ctype = (uchar*) my_once_alloc(CTYPE_TABLE_SIZE, MYF(MY_WME));
|
||||||
|
@ -333,7 +333,7 @@ static CHARSET_INFO *add_charset(uint cs_number, const char *cs_name)
|
||||||
return cs;
|
return cs;
|
||||||
}
|
}
|
||||||
|
|
||||||
static CHARSET_INFO *get_internal_charset(uint cs_number)
|
static CHARSET_INFO *get_internal_charset(uint cs_number, myf flags)
|
||||||
{
|
{
|
||||||
CHARSET_INFO *cs;
|
CHARSET_INFO *cs;
|
||||||
/*
|
/*
|
||||||
|
@ -344,13 +344,13 @@ static CHARSET_INFO *get_internal_charset(uint cs_number)
|
||||||
if (!(cs = find_charset((CHARSET_INFO**) cs_info_table.buffer, cs_number,
|
if (!(cs = find_charset((CHARSET_INFO**) cs_info_table.buffer, cs_number,
|
||||||
cs_info_table.elements)))
|
cs_info_table.elements)))
|
||||||
if (!(cs = find_compiled_charset(cs_number)))
|
if (!(cs = find_compiled_charset(cs_number)))
|
||||||
cs=add_charset(cs_number, get_charset_name(cs_number));
|
cs=add_charset(cs_number, get_charset_name(cs_number), flags);
|
||||||
pthread_mutex_unlock(&THR_LOCK_charset);
|
pthread_mutex_unlock(&THR_LOCK_charset);
|
||||||
return cs;
|
return cs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static CHARSET_INFO *get_internal_charset_by_name(const char *name)
|
static CHARSET_INFO *get_internal_charset_by_name(const char *name, myf flags)
|
||||||
{
|
{
|
||||||
CHARSET_INFO *cs;
|
CHARSET_INFO *cs;
|
||||||
/*
|
/*
|
||||||
|
@ -361,7 +361,7 @@ static CHARSET_INFO *get_internal_charset_by_name(const char *name)
|
||||||
if (!(cs = find_charset_by_name((CHARSET_INFO**) cs_info_table.buffer, name,
|
if (!(cs = find_charset_by_name((CHARSET_INFO**) cs_info_table.buffer, name,
|
||||||
cs_info_table.elements)))
|
cs_info_table.elements)))
|
||||||
if (!(cs = find_compiled_charset_by_name(name)))
|
if (!(cs = find_compiled_charset_by_name(name)))
|
||||||
cs=add_charset(get_charset_number(name), name);
|
cs=add_charset(get_charset_number(name), name, flags);
|
||||||
pthread_mutex_unlock(&THR_LOCK_charset);
|
pthread_mutex_unlock(&THR_LOCK_charset);
|
||||||
return cs;
|
return cs;
|
||||||
}
|
}
|
||||||
|
@ -371,7 +371,7 @@ CHARSET_INFO *get_charset(uint cs_number, myf flags)
|
||||||
{
|
{
|
||||||
CHARSET_INFO *cs;
|
CHARSET_INFO *cs;
|
||||||
(void) init_available_charsets(MYF(0)); /* If it isn't initialized */
|
(void) init_available_charsets(MYF(0)); /* If it isn't initialized */
|
||||||
cs=get_internal_charset(cs_number);
|
cs=get_internal_charset(cs_number, flags);
|
||||||
|
|
||||||
if (!cs && (flags & MY_WME))
|
if (!cs && (flags & MY_WME))
|
||||||
{
|
{
|
||||||
|
@ -403,7 +403,7 @@ CHARSET_INFO *get_charset_by_name(const char *cs_name, myf flags)
|
||||||
{
|
{
|
||||||
CHARSET_INFO *cs;
|
CHARSET_INFO *cs;
|
||||||
(void) init_available_charsets(MYF(0)); /* If it isn't initialized */
|
(void) init_available_charsets(MYF(0)); /* If it isn't initialized */
|
||||||
cs=get_internal_charset_by_name(cs_name);
|
cs=get_internal_charset_by_name(cs_name, flags);
|
||||||
|
|
||||||
if (!cs && (flags & MY_WME))
|
if (!cs && (flags & MY_WME))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue