Pular para o conteúdo

MySQL e MariaDB

Um driver para os dois, a autenticação que quase todo driver caseiro não faz, e as diferenças que importam.

O mesmo driver serve os dois: o protocolo é o mesmo, e o que muda é o método de autenticação padrão e alguns nomes de variável.

dataforge
adopt Arcane.Forge as Forge

db := Forge.esperar("mysql://forge:segredo@localhost:3306/loja",
    prazo := 40.0)

out Forge.versao(db)
Forge.fechar(db)

As diferenças que importam#

MySQL / MariaDBPostgreSQL
parâmetro?$1
auto incrementoauto_incrementserial
texto sem limitetexttext
texto com limitevarchar(n) — e n é obrigatório num índicetext indexa direto
booleanotinyint(1)boolean
insert … on duplicateexisteé on conflict
comparação de textoinsensível a maiúsculas por padrãosensível

Codificação#

Use utf8mb4, sempre. O utf8 do MySQL guarda três bytes por caractere e não cabe emoji nem vários ideogramas — e o sintoma é um texto truncado na gravação, sem erro.

bash
docker run -d --name loja-my \
  -e MYSQL_ROOT_PASSWORD=segredo \
  -e MYSQL_DATABASE=loja \
  -e MYSQL_USER=forge -e MYSQL_PASSWORD=segredo \
  -p 3306:3306 mysql:8 \
  --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

Continue em Cada motor.