📄 manual_server.html
字号:
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<title>MySQL中文参考手册- 9 MySQL服务器功能</title>
<style type="text/css">
<!--
.p13{font-size:14.8px;font-family:宋体;}
.p14{font-size:14.8px;font-family:宋体;line-height:14pt;}
.bc{ background-color: rgb(255,255,132) ;font-size:9pt;font-family:宋体;line-height:14pt;}
.pt{font-size:14.8px;font-family:宋体;line-height:14pt; background-color: rgb(255,255,132) }
a:hover{color:red;}
a.t1:visited{color:red;}
-->
</style>
</head>
<body BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#101090" VLINK="#7030B0" class="p4">
<h1><img src="Img/mysql-logo.gif" alt="mysql-logo.gif (3082 bytes)" WIDTH="127" HEIGHT="60"><font color="#FF0000">MySQL中文参考手册</font></h1>
<p>译者:晏子 <a href="mailto:(clyan@sohu.com">(clyan@sohu.com</a>)
主页:<a href="http://linuxdb.yeah.net">http://linuxdb.yeah.net</a></p>
<hr>
<p><a HREF="manual_Introduction.html">第一章</a>, <a HREF="manual_Tutorial.html">前一章</a>,
<a HREF="manual_Performance.html">下一章</a>, <a HREF="manual_Concept_Index.html">最后一章</a>,<a HREF="manual_toc.html">目录</a>. </p>
<hr>
<h1><a NAME="Server" HREF="manual_toc.html#Server">9 MySQL服务器功能</a><a NAME="IDX605"></a> </h1>
<h2><a NAME="Languages" HREF="manual_toc.html#Languages">9.1 MySQL支持哪些语言?</a></h2>
<p><code>mysqld</code>可以用下列语言发出错误消息:捷克语、荷兰语、英语(缺省)、爱沙尼亚语、法语、德语、匈牙利、意大利语、挪威语。
</p>
<p>启动<code>mysqld</code>使用一种特定的语言,使用一个<code>--language=lang</code>或<code>-L
lang</code>选项。例如: </p>
<pre>shell> mysqld --language=swedish
</pre>
<p>或: </p>
<pre>shell> mysqld --language=/usr/local/share/swedish
</pre>
<p>注意,所有语言的名称用小写字母指定。 </p>
<p>语言文件位于(缺省的)<tt>'<var>mysql_base_dir</var>/share/<var>LANGUAGE</var>/'</tt>。
</p>
<p>为了更新错误消息文件,你应该编辑<tt>“errmsg.txt”</tt>文件并且执行下列命令生成<tt>“errmsg.sys”</tt>文件:
</p>
<pre>shell> comp_err errmsg.txt errmsg.sys
</pre>
<p>如果你升级到一个更新的<strong>MySQL</strong>版本,记得要再次用新<tt>的“errmsg.txt”</tt>文件进行更新。
</p>
<h3><a NAME="Character_sets" HREF="manual_toc.html#Character_sets">9.1.1
用于数据和排序的字符集</a></h3>
<p>缺省地,<strong>MySQL</strong>使用 ISO-8859-1 ( Latin1 )
字符集。这是在美国和西欧使用的字符集。 </p>
<p>字符集决定了在名字中允许什么字符和如何由<code>SELECT</code>语句的<code>ORDER
BY</code>和<code>GROUP BY</code>子句排序。 </p>
<p>通过给<code>configure</code>以<code>--with-charset=charset</code>选项,你可以在编译时改变字符集。见<a HREF="manual_Installing.html#Quick_install">4.7.1 快速安装概述</a>。 </p>
<p>为了把其他字符集加入<strong>MySQL</strong>,使用下列过程: </p>
<h3><a NAME="Adding_character_set" HREF="manual_toc.html#Adding_character_set">9.1.2
增加一个新的字符集</a></h3>
<ol>
<li>为字符集选择一个名字,下面用<code>MYSET</code>表示。 </li>
<li>在<strong>MySQL</strong>源代码分发中创造文件<tt>“strings/ctype-MYSET.c”</tt>。
</li>
<li>研究一个现有的<tt>“ctype-*.c'</tt>文件,看需要定义什么。注意,你文件中的数组必须有类似于<code>ctype_MYSET</code>、<code>to_lower_MYSET</code>等等的名字。<code>to_lower[]</code>和<code>to_upper[]</code>是简单的数组,保存字符集每个成员相应的小写和大写字符。例如:
<pre>to_lower['A'] should contain 'a'
to_upper['a'] should contain 'A'</pre>
<p><code>sort_order[]</code>是一个映射,指出字符为了比较和排序目的应该如何定序。对于许多字符集,这与<code>to_upper[]</code>一样(意味着排序将忽略大小写)。<strong>MySQL</strong>将基于<code>sort_order[character]</code>值排序字符。<code>ctype[]</code>是一个位值的数组,一个元素对应一个字符。(注意,<code>to_lower[]</code>、<code>to_upper[]</code>和<code>sort_order[]</code>按字符定下标,但是<code>ctype[]</code>按字符值+1定下标。这是一个旧遗产以便能处理EOF)
你能在<tt>“m_ctype.h”</tt>找到下列bitmask定义: </p>
<pre>#define _U 01 /* Upper case */
#define _L 02 /* Lower case */
#define _N 04 /* Numeral (digit) */
#define _S 010 /* Spacing character */
#define _P 020 /* Punctuation */
#define _C 040 /* Control character */
#define _B 0100 /* Blank */
#define _X 0200 /* heXadecimal digit */
</pre>
<p>每个字符的<code>ctype[]</code>的入口应该是描述字符的适用的位模(bitmask)值的联合(union)。例如,<code>'A'</code>是一个大写字符(<code>_U</code>)
,同时是十六进制位(<code>_X</code>),这样<code>ctype['A'+1]</code>应该包含值:
</p>
<pre>_U + _X = 01 + 0200 = 0201
</pre>
</li>
<li>为你的字符集增加一个唯一的编号到<tt>“include/m_ctype.h.in”</tt>。 </li>
<li>把字符集名字加到在<code>configure.in</code>中的<code>CHARSETS_AVAILABLE</code>表。
</li>
<li>重新配置,重新编译并且测试。 </li>
</ol>
<h3><a NAME="Multi-byte_characters" HREF="manual_toc.html#Multi-byte_characters">9.1.3
多字节字符支持</a></h3>
<p>如果你正在创建一个多字节字符集,你可以使用<code>_MB</code>宏。在<tt>“include/m_ctype.h.in”</tt>,增加:</p>
<pre>#define MY_CHARSET_MYSET X
#if MY_CHARSET_CURRENT == MY_CHARSET_MYSET
#define USE_MB
#define USE_MB_IDENT
#define ismbchar(p, end) (...)
#define ismbhead(c) (...)
#define mbcharlen(c) (...)
#define MBMAXLEN N
#endif
</pre>
<p>这里: </p>
<table BORDER="1" WIDTH="100%" NOSAVE="#101090" class="p4">
<tr>
<td><code>MY_CHARSET_MYSET</code> </td>
<td>一个唯一的字符集值。 </td>
</tr>
<tr>
<td><code>USE_MB</code> </td>
<td>这个字符集有多字节字符,由<code>ismbhead()</code>和<code>mbcharlen()</code>来处理。</td>
</tr>
<tr>
<td><code>USE_MB_IDENT</code> </td>
<td>(可选 ) 如果定义,你能使用多字节字符的表和列名。</td>
</tr>
<tr>
<td><code>ismbchar(p, e)</code> </td>
<td>如果<code>p</code>不是一个多字节字符字符串,返回0,否则如果它是,返回字符的大小(字节数)。<code>p</code>和<code>e</code>指向字符串的开始和结束。检查是从<code>(char*)p</code>到<code>(char*)e-1</code>。
</td>
</tr>
<tr>
<td><code>ismbhead(c)</code> </td>
<td>如果<code>c</code>是一个多字节字符字符串的第一个字符,返回真。</td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -