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

Problema com tipo de caracter ao chamar PREPARA_BANCO

Ao rodar o script prepara_banco retorna o seguinte erro:

MySQLdb._exceptions.OperationalError: (1366, "Incorrect string value: '\\xE9gia' for column 'categoria' at row 6")

Esse erro é eliminado quando mudo as entradas 'Ação' e 'Estratégia' para 'Acao' e 'Estrategia' (sem cedilha e acentos) no SQL de inicialização da tabela usuário.

Como eu poderia adequar o código SQL para que essas entradas Ação e Estratégia fossem aceitas normalmente?

Código SQL fornecido é:

''' 
    SET NAMES utf8;
    CREATE DATABASE `jogoteca` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;
    USE `jogoteca`;
    CREATE TABLE `jogo` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `nome` varchar(50) COLLATE utf8_bin NOT NULL,
      `categoria` varchar(40) COLLATE utf8_bin NOT NULL,
      `console` varchar(20) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
    CREATE TABLE `usuario` (
      `id` varchar(8) COLLATE utf8_bin NOT NULL,
      `nome` varchar(20) COLLATE utf8_bin NOT NULL,
      `senha` varchar(8) COLLATE utf8_bin NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
'''
1 resposta
solução!

Oi Bruno, tudo bem com você?

Isso acontece pois seu ambiente por padrão, provavelmente, está usando latin1 para se comunicar com o mysql e não o utf8. Para resolver, mude a primeira linha do comando de criar a tabela de utf8 para latin1. Exemplo:

criar_tabelas = '''SET NAMES latin1;
 # resto do código....

Após efetuar a troca acima, também volte as entradas com caracteres especiais. Feito isso, apague o banco e tente compilar novamente.

Fico à disposição para qualquer dúvida. Abraços e bons estudos!