Files
archived-doc-pt-br/reference/pdo_mysql/reference.xml
2025-01-04 12:01:55 -03:00

191 lines
6.1 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 3c1bec9d700807df36994cf368ba291214cd424d Maintainer: leonardolara Status: ready --><!-- CREDITS: felipe,leonardolara -->
<reference xml:id="ref.pdo-mysql" xmlns="http://docbook.org/ns/docbook">
<?phpdoc extension-membership="bundledexternal" ?>
<title>Driver PDO do MySQL (PDO_MYSQL)</title>
<titleabbrev>Driver PDO do MySQL</titleabbrev>
<partintro>
<section xml:id="ref.pdo-mysql.intro">
&reftitle.intro;
<para>
PDO_MYSQL é um driver que implementa a interface <link linkend="intro.pdo">PHP
Data Objects (PDO)</link>
para habilitar o acesso do PHP aos bancos de dados MySQL.
</para>
<para>
PDO_MYSQL utiliza as preparações emuladas por padrão.
</para>
<para>
<emphasis role="bold">MySQL 8</emphasis>
</para>
<para>
Ao executar uma versão de PHP anterior a 7.1.16, ou 7.2.4, defina
o plugin padrão de senhas do Servidor MySQL 8 para <emphasis>mysql_native_password</emphasis>
ou poderão surgir erros similares a
<emphasis>The server requested authentication method unknown to the client [caching_sha2_password]</emphasis>
mesmo quando <emphasis>caching_sha2_password</emphasis> não seja usado.
</para>
<para>
Isto acontece porque o padrão do MySQL 8 é caching_sha2_password, um plugin que não
é reconhecido pelas versões antigas do PHP (mysqlnd). Portanto, altere o plugin
configurando <literal>default_authentication_plugin=mysql_native_password</literal>
no arquivo <filename>my.cnf</filename>. O plugin <emphasis>caching_sha2_password</emphasis>
é totalmente suportado a partir do PHP 7.4.4. Para versões anteriores do PHP, a extensão
<link linkend="book.mysql-xdevapi">mysql_xdevapi</link> suporta
o plugin.
</para>
<warning>
<para>
Cuidado: Alguns tipos de tabelas do MySQL (motores de armazenamento) não suportam transações. Ao
escrever código para um banco de dados transacional onde o tipo de tabela não suporta
transações, o MySQL irá entender que a transação foi inicializada com sucesso.
Além disso, qualquer consulta DDL irá, de forma implícita,
executar o "commit" para qualquer transação que esteja pendente.
</para>
</warning>
<note>
<para>
O driver MySQL não suporta adequadamente a opção <constant>PDO::PARAM_INPUT_OUTPUT</constant>
através de <methodname>PDOStatement::bindParam</methodname>; embora tais parâmetros possam ser usados,
eles não são atualizados (isto é, a saída real é ignorada).
</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>Conectando a bancos de dados MySQL</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<para>
O Data Source Name (DSN) do PDO_MYSQL é composto dos seguintes elementos:
<variablelist>
<varlistentry>
<term>Prefixo DSN</term>
<listitem>
<para>
O prefixo DSN é <userinput>mysql:</userinput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>host</literal></term>
<listitem>
<para>
O nome do servidor onde está o banco de dados.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>port</literal></term>
<listitem>
<para>
O número da porta onde o servidor do banco de dados está escutando.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>dbname</literal></term>
<listitem>
<para>
O nome do banco de dados.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>unix_socket</literal></term>
<listitem>
<para>
O soquete Unix do MySQL (não deve ser usado com <literal>host</literal>
ou <literal>port</literal>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>charset</literal></term>
<listitem>
<para>
O conjunto de caracteres. Veja a documentação sobre <link linkend="mysqlinfo.concepts.charset">conjunto de caracteres</link>
para mais informação.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Exemplos de DSN do PDO_MYSQL</title>
<para>
O exemplo a seguir demonstra um DSN do PDO_MYSQL para conexão com
banco de dados MySQL:
<programlisting>
<![CDATA[
mysql:host=localhost;dbname=testdb
]]>
</programlisting>
Exemplos mais completos:
<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>Somente em Unix:</title>
<para>
Quando o nome do servidor é definido como <literal>"localhost"</literal>, a conexão ao
servidor é feita através de um soquete de domínio. Se o PDO_MYSQL tiver sido compilado usando libmysqlclient, a
localização do soquete é a mesma localização da compilação da libmysqlclient. Se o PDO_MYSQL foi compilado
usando mysqlnd, um soquete padrão pode ser definido através da configuração <link linkend="ini.pdo-mysql.default-socket">
pdo_mysql.default_socket</link>.
</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
-->