Notas Técnicas
dbDelta e MariaDB
Como evitar erro SQL em migrações de tabelas no WordPress.
Causa do erro
O dbDelta() é sensível ao formato do CREATE TABLE. Definir tabela inteira em uma linha pode gerar ALTER TABLE CHANGE COLUMN inválido.
Padrão seguro
- Uma coluna por linha.
- Índices em linhas separadas.
- Usar
PRIMARY KEY (id). - Não misturar
ALTER COLUMN SET DEFAULTindevido. - Testar em MariaDB real.
CREATE TABLE {$table} (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
product_id BIGINT UNSIGNED NOT NULL,
amount DECIMAL(12,2) NOT NULL DEFAULT 0.00,
created_at DATETIME NOT NULL,
PRIMARY KEY (id),
KEY product_id (product_id)
) {$charset_collate};