-
Notifications
You must be signed in to change notification settings - Fork 50
Expand file tree
/
Copy pathreference.xml
More file actions
200 lines (190 loc) · 6.41 KB
/
reference.xml
File metadata and controls
200 lines (190 loc) · 6.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 3c1bec9d700807df36994cf368ba291214cd424d Maintainer: samesch Status: ready -->
<!-- Reviewed: no -->
<reference xml:id="ref.pdo-mysql" xmlns="http://docbook.org/ns/docbook">
<?phpdoc extension-membership="bundledexternal" ?>
<title>MySQL PDO-Treiber (PDO_MYSQL)</title>
<titleabbrev>MySQL PDO-Treiber</titleabbrev>
<partintro>
<section xml:id="ref.pdo-mysql.intro">
&reftitle.intro;
<para>
PDO_MYSQL ist ein Treiber, der die
<link linkend="intro.pdo">PHP Data Objects (PDO)-Schnittstelle</link>
implementiert, um von PHP aus auf MySQL Datenbanken zugreifen zu können.
</para>
<para>
PDO_MYSQL verwendet standardmäßig emulierte vorbereitete Anweisungen.
</para>
<para>
<emphasis role="bold">MySQL 8</emphasis>
</para>
<para>
Bei PHP-Versionen vor PHP 7.1.16 oder der 7.2-Serie vor 7.2.4 muss das
Standard-Passwort-Plugin des MySQL 8-Servers auf
<emphasis>mysql_native_password</emphasis> gesetzt werden, da sonst
Fehler angezeigt werden wie <emphasis>The server requested authentication
method unknown to the client [caching_sha2_password]</emphasis>, auch
wenn <emphasis>caching_sha2_password</emphasis> nicht verwendet wird.
</para>
<para>
Das liegt daran, dass MySQL 8 standardmäßig caching_sha2_password
verwendet und dieses Plugin von den älteren PHP- (mysqlnd) Versionen
nicht erkannt wird. Stattdessen muss die Voreinstellung durch den
Eintrag
<literal>default_authentication_plugin=mysql_native_password</literal> in
der Datei <filename>my.cnf</filename> geändert werden. Das Plugin
<emphasis>caching_sha2_password</emphasis> wird seit PHP 7.4.4
vollständig unterstützt. In älteren Versionen wird es von der Erweiterung
<link linkend="book.mysql-xdevapi">mysql_xdevapi</link> unterstützt.
</para>
<warning>
<para>
Vorsicht ist geboten: Einige MySQL-Tabellentypen (Speicher-Engines)
unterstützen keine Transaktionen. Wenn transaktionaler Datenbankcode für
einen Tabellentyp geschrieben wird, der keine Transaktionen unterstützt,
verhält sich MySQL so, als sei eine Transaktion erfolgreich initiiert
worden. Darüber hinaus werden alle ausgelösten DDL-Abfragen implizit
alle anstehenden Transaktionen festschreiben.
</para>
</warning>
<note>
<para>
Der MySQL-Treiber unterstützt die Konstante
<constant>PDO::PARAM_INPUT_OUTPUT</constant> über die Methode
<methodname>PDOStatement::bindParam</methodname> nicht korrekt; solche
Parameter können zwar verwendet werden, werden aber nicht aktualisiert
(&dh; die eigentliche Ausgabe wird ignoriert).
</para>
</note>
</section>
&reference.pdo-mysql.configure;
&reference.pdo-mysql.constants;
&reference.pdo-mysql.ini;
</partintro>
<refentry xml:id="ref.pdo-mysql.connection">
<refnamediv>
<refname>PDO_MYSQL DSN</refname>
<refpurpose>Verbinden mit MySQL-Datenbanken</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<para>
Der Data Source Name (Name der Datenquelle, DSN) von PDO_MYSQL setzt sich
aus den folgenden Elementen zusammen:
<variablelist>
<varlistentry>
<term>DSN-Präfix</term>
<listitem>
<para>
Das DSN-Präfix ist <userinput>mysql:</userinput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>host</literal></term>
<listitem>
<para>
Der Name des Rechners, auf dem sich der Datenbankserver befindet
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>port</literal></term>
<listitem>
<para>
Die Nummer des Ports, an dem der Datenbankserver lauscht
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>dbname</literal></term>
<listitem>
<para>
Der Name der Datenbank
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>unix_socket</literal></term>
<listitem>
<para>
Der MySQL-Unix-Socket (sollte nicht mit <literal>host</literal> oder
<literal>port</literal> verwendet werden).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>charset</literal></term>
<listitem>
<para>
Der Zeichensatz. Weitere Informationen enthält die Dokumentation zum
<link linkend="mysqlinfo.concepts.charset">Zeichensatz</link>-Konzept.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>DSN-Beispiele für PDO_MYSQL</title>
<para>
Das folgende Beispiel zeigt einen PDO_MYSQL-DSN für die Verbindung zu
einer MySQL-Datenbank:
<programlisting>
<![CDATA[
mysql:host=localhost;dbname=testdb
]]>
</programlisting>
Ein paar komplettere Beispiele:
<programlisting>
<![CDATA[
mysql:host=localhost;port=3307;dbname=testdb
mysql:unix_socket=/tmp/mysql.sock;dbname=testdb
]]>
</programlisting>
</para>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<title>Nur Unix:</title>
<para>
Wenn der Hostname auf <literal>"localhost"</literal> gesetzt ist, wird
die Verbindung zum Server über einen Domain-Socket hergestellt. Wenn
PDO_MYSQL gegen libmysqlclient kompiliert wurde, ist der Speicherort der
Socket-Datei der einkompilierte Speicherort von libmysqlclient. Wenn
PDO_MYSQL gegen mysqlnd kompiliert wurde, kann der Standard-Socket mit
der Einstellung
<link linkend="ini.pdo-mysql.default-socket">pdo_mysql.default_socket</link>
festgelegt werden.
</para>
</note>
</refsect1>
</refentry>
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->