Etherpad-lite: A tabela não está configurada com utf8mb4, após a atualização

Criado em 29 abr. 2020  ·  9Comentários  ·  Fonte: ether/etherpad-lite

Olá
Estou em uma situação de migração da minha instância Etherpad. Migrei meu banco de dados e depois disso atualizei o Etherpad. Eu tenho isso saindo nos registros agora:

[2020-04-29 10:43:29.440] [ERROR] console - table is not configured with charset utf8mb4 -- This may lead to crashes when certain characters are pasted in pads

Não sei se isso pode causar erros ...

Needs confirmation

Todos 9 comentários

Então sim, isso geralmente é devido a bancos de dados / tabelas / esquemas configurados incorretamente, mas é um código novo e quero ter certeza de que está funcionando corretamente porque não tenho 100% de certeza que está.

Na verdade, é um problema do UeberDB, mas tanto faz, aqui está bom. A lógica aqui: https://github.com/ether/ueberDB/blob/master/mysql_db.js#L81

Vou supor que seu banco de dados Etherpad se chama etherpad_lite_db . Se não estiver, substitua conforme o ajuste.

Faça os seguintes comandos:

mysql -uroot -p

use etherpad_lite_db

SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'etherpad_lite_db';

Copie e cole a saída (aqui está bom).

Próximo ... Copie / cole o comando final ..

SELECT CCSA.character_set_name FROM information_schema.`TABLES` T,information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA WHERE CCSA.collation_name = T.table_collation AND T.table_schema = 'etherpad_lite_db' AND T.table_name = 'store';

Copie e cole a saída.

Suas duas saídas devem ser

| DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME |
+----------------------------+------------------------+
| utf8mb4                    | utf8mb4_general_ci     |
+----------------------------+------------------------+

e

| character_set_name |
+--------------------+
| utf8mb4            |
+--------------------+

Se não estiverem, seu banco de dados não foi configurado corretamente e certos caracteres _potencialmente_ quebrarão alguns pads em sua instância. Se você vir latim lá, você não deu nada e precisará executar esses comandos (acho [não testado]) ...

ALTER DATABASE `etherpad_lite_db` CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

e

ALTER TABLE `store` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

Se eles não funcionarem, deixe-me saber.

Aqui está a saída para o primeiro comando:

| DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME |
+----------------------------+------------------------+
| utf8mb4                    | utf8mb4_general_ci     |
+----------------------------+------------------------+

Tal era o seu desejo

E isso é para o segundo ...

| character_set_name |
+--------------------+
| utf8               |
+--------------------+

Ups…
O que eu posso fazer agora ?

desculpe, fui um pouco rápido sem ver o final da mensagem, vou testar a modificação do banco de dados agora.

Excelente! Funcionou.
Não há mais mensagens nos registros

Vencer. É ótimo ver meu trabalho / esforços validados então obrigado cara! :)

Obrigado por esses comandos! Um dos meus servidores tinha "latin1" aqui.

No entanto, eu certamente nunca disse ao etherpad para usar o latin1, por que o etherpad não é capaz de configurar adequadamente seu próprio banco de dados? A expectativa é que todo administrador tenha que configurar manualmente o conjunto de caracteres de cada banco de dados?

Obrigado por esses comandos! Um dos meus servidores tinha "latin1" aqui.

No entanto, eu certamente nunca disse ao etherpad para usar o latin1, por que o etherpad não é capaz de configurar adequadamente seu próprio banco de dados? A expectativa é que todo administrador tenha que configurar manualmente o conjunto de caracteres de cada banco de dados?

  1. latin1 é o padrão no MySQL, ainda, em 2020. Isso não tem nada a ver com Etherpad!
  2. Etherpad é capaz de configurar o banco de dados propriamente dito, mas optamos por não fazê-lo porque não queremos forçar utf8mb4 et al nos administradores, pois os administradores podem preferir outro conjunto de caracteres. Não somos DBAs.
  3. Os administradores precisam criar o banco de dados, portanto, ao criar o banco de dados, você copia / cola o comando alter. Isso é apenas para MySQL, se você usar outro banco de dados, não é um problema. Não podemos lidar com todos os casos extremos de todas as implantações em todas as instâncias. Há um limite para o escopo do nosso trabalho (que é construir um editor colaborativo)
  4. Etherpad não é responsável aqui, UeberDB é. É apenas esse problema aqui porque Etherpad é o maior usuário do UeberDB. Estamos no processo de modernização do UeberDB e este aviso foi o primeiro passo. Não podemos forçar uma alteração por causa do ponto # 2

Acho que nossa abordagem aqui foi equilibrada e correta, mas posso entender se você se sentir um pouco frustrado por não ser clique e pronto! <3

Etherpad é capaz de configurar o banco de dados propriamente dito, mas optamos por não fazê-lo porque não queremos forçar utf8mb4 et al nos administradores, pois os administradores podem preferir outro conjunto de caracteres. Não somos DBAs.

Eu sou o administrador, mas não acho que posso decidir com qual conjunto de caracteres um aplicativo é executado - faz sentido deixar essa escolha para mim? Eu esperaria que a escolha errada apenas quebrasse o aplicativo. Eu não estou decidindo sobre o conjunto de caracteres da solicitação / respostas HTTP ou o conjunto de caracteres dos arquivos armazenados no sistema de arquivos.

Portanto, parece-me bastante estranho que caberia ao administrador decidir os detalhes internos de um aplicativo, como o conjunto de caracteres usado para o banco de dados. Você também não está deixando o esquema do banco de dados para mim. ;)

latin1 é o padrão no MySQL, ainda, em 2020. Isso não tem nada a ver com Etherpad!

Oh, eu vejo. Bem, isso é ... triste, eu acho? Parece que todos resolveram o problema do conjunto de caracteres atualmente mudando para utf8, exceto mysql ... :(

Portanto, por enquanto, a resposta parece ser "sim, espera-se que os próprios administradores configurem isso". Sei que essa é a situação no ecossistema mysql e não sua, eu só queria dar um feedback da perspectiva de um usuário. Ter um erro sobre isso nos logs é um ótimo começo, mas também não examino os logs em busca de erros regularmente, pois há muita coisa nos logs.

Talvez uma solução possível seria o etherpad alterar o banco de dados conforme apropriado por padrão, mas tem uma opção de configuração para desligar isso caso os DBAs desejem fazer uma escolha diferente? Isso evitaria a espingarda - foi por puro acaso que eu vi esse problema, normalmente eu nunca teria notado. Talvez eu seja ingênuo, mas espero que o número de administradores que desejam substituir essa escolha seja mínimo.

Anotado com agradecimento :)

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

zeer15398376 picture zeer15398376  ·  9Comentários

ziyaointl picture ziyaointl  ·  9Comentários

kernelfreak picture kernelfreak  ·  9Comentários

dessalines picture dessalines  ·  7Comentários

Pita picture Pita  ·  7Comentários