Commit 78bb800b authored by Bruce Momjian's avatar Bruce Momjian

Update initdb locale/encoding documentation description. Backpatch to

8.0.X.
parent 1808ce78
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/initdb.sgml,v 1.33 2005/01/04 00:05:45 momjian Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/initdb.sgml,v 1.34 2005/02/22 02:54:19 momjian Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -43,34 +43,23 @@ PostgreSQL documentation ...@@ -43,34 +43,23 @@ PostgreSQL documentation
</para> </para>
<para> <para>
Creating a database cluster consists of creating the directories in which Creating a database cluster consists of creating the directories in
the database data will live, generating the shared catalog tables which the database data will live, generating the shared catalog
(tables that belong to the whole cluster rather than to any particular tables (tables that belong to the whole cluster rather than to any
database), and creating the <literal>template1</literal> particular database), and creating the <literal>template1</literal>
database. When you later create a new database, everything in the database. When you later create a new database, everything in the
<literal>template1</literal> database is copied. <literal>template1</literal> database is copied. It contains catalog
It contains catalog tables filled in for things like the tables containing things like built-in data types.
built-in types.
</para> </para>
<para> <para>
<command>initdb</command> initializes the database cluster's default Although <command>initdb</command> will attempt to create the
locale and character set encoding. Some locale categories are fixed specified data directory, it might not have permission if the parent
for the lifetime of the cluster. There is also a performance impact directory of the desired data directory is root-owned. To initialize
in using locales other than <literal>C</> or <literal>POSIX</>. in such a setup, create an empty data directory as root, then use
Therefore it is important to make the right choice when running <command>chown</command> to assign ownership of that directory to the
<command>initdb</command>. Other locale categories can be changed database user account, then <command>su</command> to become the
later when the server is started. <command>initdb</command> will database user to run <command>initdb</command>.
write those locale settings into the
<filename>postgresql.conf</filename> configuration file so they are
the default, but they can be changed by editing that file. To set the
locale that <command>initdb</command> uses, see the description of
the <option>--locale</option> option. The character set encoding can
be set separately for each database as it is created.
<command>initdb</command> determines the encoding for the
<literal>template1</literal> database, which will serve as the
default for all other databases. To alter the default encoding use
the <option>--encoding</option> option.
</para> </para>
<para> <para>
...@@ -83,15 +72,28 @@ PostgreSQL documentation ...@@ -83,15 +72,28 @@ PostgreSQL documentation
</para> </para>
<para> <para>
Although <command>initdb</command> will attempt to create the <command>initdb</command> initializes the database cluster's default
specified data directory, often it won't have permission to do so, locale and character set encoding. The collation order
since the parent of the desired data directory is often a root-owned (<literal>LC_COLLATE</>) and character set classes
directory. To set up an arrangement like this, create an empty data (<literal>LC_CTYPE</>, e.g. upper, lower, digit) are fixed for all
directory as root, then use <command>chown</command> to hand over databases and can not be changed. Collation orders other than
ownership of that directory to the database user account, then <literal>C</> or <literal>POSIX</> also have a performance penalty.
<command>su</command> to become the database user, and For these reasons it is important to choose the right locale when
finally run <command>initdb</command> as the database user. running <command>initdb</command>. The remaining locale categories
can be changed later when the server is started. All server locale
values (<literal>lc_*</>) can be displayed via <command>SHOW ALL</>.
More details can be found in <xref linkend="locale">.
</para> </para>
<para>
The character set encoding can be set separately for a database when
it is created. <command>initdb</command> determines the encoding for
the <literal>template1</literal> database, which will serve as the
default for all other databases. To alter the default encoding use
the <option>--encoding</option> option. More details can be found in
<xref linkend="multibyte">.
</para>
</refsect1> </refsect1>
<refsect1> <refsect1>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment