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 / MariaDB | PostgreSQL | |
|---|---|---|
| parâmetro | ? | $1 |
| auto incremento | auto_increment | serial |
| texto sem limite | text | text |
| texto com limite | varchar(n) — e n é obrigatório num índice | text indexa direto |
| booleano | tinyint(1) | boolean |
insert … on duplicate | existe | é on conflict |
| comparação de texto | insensível a maiúsculas por padrão | sensí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_ciContinue em Cada motor.