NOTA: Meu problema foi devido a um erro de sintaxe no my.cnf
arquivo, não tem nada a ver com erros na conversão para utf8mb4
. Eu ainda não tenho nenhuma idéia de como você faz isso. Eu postei uma resposta explicando qual era o problema.
Fundo
Eu estava escrevendo algum código para acessar o INFORMATION_SCHEMA. Eu queria fazer uma fonte de dados MySql para que eu pudesse criar um conjunto de dados a partir dele e gerar o select/fill/etc. funcionalidade de um DataSet tipado.
Quando me conectei ao banco de dados sem um banco de dados funcionou bem, apenas atualizamos tudo para uft8mb4 do novo padrão utf8mb3, porque .NET não suporta esse conjunto de caracteres. Quando tentei me conectar ao INFORMATION_SCHEMA, tudo parecia bem, exceto quando tentei abrir as tabelas, recebi o erro .NET não suporta utfmb3.
Alterando character_set_system
Fui olhar as variáveis do servidor no Workbench e notei que tudo foi atualizado para utf8mb4, exceto o character_set_system. Eu tinha lido que você tem que ter cuidado ao atualizar isso, mas bem, eu adicionei e reiniciei character_set_system utfmb4
de my.cnf
uma só vez, e apenas um segundo depois percebi o que tinha feito.
Nesse ponto, recebo uma mensagem de erro me dizendo para executar systemctl status mysqld.service
e journalctl -xe
. Eu cortei o que parecia ser as partes relevantes desses logs (os nomes de domínio foram alterados para proteger os culpados):
journalctl -xe
Jun 06 10:19:21 servername.tld polkitd[640]: Registered Authentication Agent for unix-process:32382:26043948 (system bus name :1.186 [/usr/bin/pkttyagent --notify-fd 5 --fallback]
Jun 06 10:19:21 servername.tld systemd[1]: Starting MySQL Server...
-- Subject: Unit mysqld.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit mysqld.service has begun starting up.
Jun 06 10:19:31 servername.tld systemd[1]: mysqld.service: main process exited, code=exited, status=1/FAILURE
Jun 06 10:19:31 servername.tld systemd[1]: Failed to start MySQL Server.
-- Subject: Unit mysqld.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit mysqld.service has failed.
--
-- The result is failed.
Jun 06 10:19:31 servername.tld systemd[1]: Unit mysqld.service entered failed state.
Jun 06 10:19:31 servername.tld systemd[1]: mysqld.service failed.
Jun 06 10:19:31 servername.tld polkitd[640]: Unregistered Authentication Agent for unix-process:32382:26043948 (system bus name :1.186, object path /org/freedesktop/PolicyKit1/Aut
systemctl status mysqld.service
Jun 06 10:19:31 ● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Mon 2022-06-06 10:19:31 EDT; 7min ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 32415 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=1/FAILURE)
Process: 32388 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 32415 (code=exited, status=1/FAILURE)
Status: "Server startup in progress"
Jun 06 10:19:21 servername.tld systemd[1]: Starting MySQL Server...
Jun 06 10:19:31 servername.tld systemd[1]: mysqld.service: main process exited, code=exited, status=1/FAILURE
Jun 06 10:19:31 servername.tld systemd[1]: Failed to start MySQL Server.
Jun 06 10:19:31 servername.tld systemd[1]: Unit mysqld.service entered failed state.
Jun 06 10:19:31 servername.tld systemd[1]: mysqld.service failed. systemd[1]: mysqld.service failed.
Nesse ponto eu percebi que realmente quebrei as coisas, porque eu tinha visto pessoas alertando para não mudar essas coisas sem saber o que você estava fazendo. O que, claramente, eu não fiz.
Voltei para my.cnf e mudei a configuração para character_set_system utf8mb3
eu diria 'mudou de volta', mas não o fiz, já que não era assim para começar. Acabei de adicionar a configuração.
Ao reiniciar, recebi a mesma mensagem sobre verificar os erros, os erros são praticamente idênticos, então tentar configurá-lo para mb3 não fez diferença.
De qualquer forma, eu pesquisei dba/serverfault/stackoverflow/google para saber como consertar isso, e vi muitas pessoas alertando para não fazer isso, mas, pelo menos, não consegui encontrar alguém que realmente tenha sido imprudente o suficiente para faça isso.
Talvez possamos fazer backup dos dados em algum lugar e depois restaurar um backup da semana passada e, em seguida, colocar os dados de volta, na pior das hipóteses? Só não estou familiarizado o suficiente com o back-end para saber que horrores fiz aos dados.