Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

MYSQL charset e MyISAM

Cadastrei o produto "ração" e os caracteres com acentuação ficaram todos desconfigurados. Ao acessar o phpMyAdmin, percebi que está configurado como latin1_swedish_ci. O tipo da tabela é MyISAM.

Minha dúvida é sobre como ajustar para que os caracteres sejam interpretados corretamente, pois eu usei o create table normal e essas configurações de tipo da tabela e de enconding vieram automáticas.

Como evitar isso desde o início do projeto? Qual a diferença do MyISAM para outros como InnoDB? Como saber qual o mais adequado para um projeto? Alguma referencia para conhecer esses assuntos mais a fundo?

1 resposta
solução!

Rafael, bom dia!

O InnoDB ele funciona mais rápido que o MyISAM quando os dados são alterados com uma certa frequência, pois o InnoDB usa uma proteção por registros, já o MyISAM ele usa uma proteção por tabela, além de que o InnoDB funciona bem com transações, ou seja, dados que serão alterados normalmentente. Já o MyISAM recomenda-se usar quando os dados da tabela não vão se alterar, exemplo: Uma tabela com cidades ou estados

Agora, para alterar é só fazer o seguinte

ALTER TABLE produto
engine = InnoDB

Você pode evitar que ele crie a tabela MyISAM declarando a engine ao criar a tabela

CREATE TABLE produto (
    id integer NOT NULL AUTO_INCREMENT  PRIMARY KEY, 
    nome varchar(255),
    preco decimal(10,5)
)  ENGINE=InnoDB;

E para alterar o banco e deixar a acentuação correta

 ALTER DATABASE loja CHARSET = UTF8 COLLATE = utf8_general_ci;

Referência sobre InnoDB e MyISAM