AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 313005
Accepted
shelleybutterfly
shelleybutterfly
Asked: 2022-06-07 07:03:09 +0800 CST2022-06-07 07:03:09 +0800 CST 2022-06-07 07:03:09 +0800 CST

Como você pode reparar uma instalação do MySQL 8.0 depois de alterar `character_set_system` de utfmb3 para utfmb4 falhar?

  • 772

NOTA: Meu problema foi devido a um erro de sintaxe no my.cnfarquivo, 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 utfmb4de my.cnfuma 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.servicee 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 utf8mb3eu 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.

mysql character-set
  • 2 2 respostas
  • 86 Views

2 respostas

  • Voted
  1. Best Answer
    shelleybutterfly
    2022-06-07T07:48:19+08:002022-06-07T07:48:19+08:00

    Isso foi apenas eu sendo descuidado com a formatação. Eu tinha um espaço em vez de um igual na character_set_systematribuição de variável. Então, felizmente, eu nunca toquei no banco de dados do sistema, e tirar a linha corrigiu o erro de sintaxe, então funciona novamente.

    Eu ainda estaria interessado em saber se há uma maneira de obter mais informações desses erros. Os erros basicamente diziam que as coisas falhavam; se eu tivesse visto que era um erro ao analisar my.cnf ou similar, eu provavelmente o teria percebido imediatamente. Mas, se mais alguém se encontrar nesta circunstância, certifique-se de que todas as alterações feitas são realmente sintaticamente válidas,

    TL;DR: já que você não está recebendo erros detalhados, verifique qualquer coisa que você alterou com muito cuidado para erros de sintaxe (ou descubra como obter os detalhes, o que eu provavelmente teria tentado fazer se não fosse um servidor de produção); e, obviamente, a solução real é não tentar alterar as configurações do sistema se você não tiver certeza do que está fazendo.

    • 1
  2. Rick James
    2022-06-07T20:26:21+08:002022-06-07T20:26:21+08:00

    Não faça alterações nos bancos de dados mysqlou information_schema.

    Em seus bancos de dados, quais sintomas você tem? Havia mais alguma coisa de interesse nos arquivos de log? Como você fez a conversão - foi ALTER...CONVERT TO...ou algum outro método? Onde há colunas não utf8 que foram convertidas acidentalmente?

    Modificar nãocharacter_set_system é como você altera o charset.

    (Parece que você fez mais do que alterar essa configuração?)

    • 0

relate perguntas

  • Existem ferramentas de benchmarking do MySQL? [fechado]

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve