Error importing from vanilla: invalid byte sequence in UTF-8

A menos que o arquivo seja enorme, é bem simples convertê-lo para UTF-8 usando o Bloco de Notas do Windows, se você ainda o tiver.

Acredito que o Vanilla Porter fornece um arquivo no formato .txt.gz. Você precisará extrair o arquivo desse formato compactado. Depois de salvá-lo como um arquivo .txt, você pode convertê-lo.

  1. Abra o arquivo .txt no Bloco de Notas.
  2. Vá em Arquivo > Salvar como e selecione UTF-8 como a opção de codificação.
  3. Clique em Salvar.

Se você não tiver mais o Bloco de Notas, ou se o arquivo for muito grande para o Bloco de Notas, como o @pfaffman mencionou, você pode pesquisar no Google por “converter txt para UTF-8” para encontrar algumas instruções que funcionarão com as máquinas e o software que você tem disponíveis.

4 curtidas

Okay, isso funcionou. Mas agora estou recebendo este erro:

script/import_scripts/vanilla.rb:98:in `import_users': undefined method `[]' for nil:NilClass (NoMethodError)

admin_role_id = @roles.select { |r| r[:name] == "Administrator" }.first[:role_id]
                                                                       ^^^^^^^^^^

O primeiro usuário é Administrador no banco de dados.

Este é exatamente o erro que eu estava recebendo antes de notar que precisava escolher Vanilla 2 no menu suspenso Tipo de Fórum de Origem. Ao deixar Vanilla 1 selecionado, meu arquivo de exportação tinha tabelas de dados vazias. Se você selecionou Vanilla 2, temo não ter muito mais a oferecer com minha experiência limitada em uma migração Vanilla. Talvez outra pessoa tenha algumas ideias.

Qual versão do Vanilla seu fórum atual está executando?

5 curtidas

Vanilla Higher Logic é a versão atual. Fiz o upgrade para esta versão recentemente. Tenho um backup do meu fórum vanilla v2.6. Tentei importar do banco de dados antigo, mas o problema persiste.

Você pode confirmar a entrada UserRole para Admin?

@ddeveloper, acho que a resposta é 16, mas não tenho certeza do que você está perguntando!
Adicionei alguns dados de exemplo do meu arquivo de exportação abaixo, caso seja útil para você ver as estruturas da tabela.

Dados de exportação

É isso que o arquivo de Exportação lista para a tabela UserRole, apenas para o usuário System e para mim (usuário 2):

Tabela: UserRole
UserID:int,RoleID:int
"1","16"
"2","2"
"2","8"
"2","16"
"2","32"
"2","33"

É isso que meu arquivo de Exportação lista para a tabela Role:
Tabela: Role

RoleID:int,Name:varchar(100),Description:varchar(500),Sort:int,Deletable:tinyint,CanSession:tinyint,PersonalInfo:tinyint
"2","Guest","Convidados só podem ver o conteúdo. Qualquer pessoa navegando no site que não esteja logada é considerada um \"Convidado\".","2","0","0","0"
"3","Unconfirmed","Os usuários devem confirmar seus e-mails antes de se tornarem membros plenos. Eles são atribuídos a esta função.","3","0","1","0"
"4","Applicant","Usuários que solicitaram adesão, mas ainda não foram aceitos. Eles têm as mesmas permissões que os convidados.","4","0","1","0"
"8","Member","Membros podem participar de discussões.","5","1","1","0"
"16","Administrator","Administradores têm permissão para fazer qualquer coisa.","7","1","1","0"
"32","Moderator","Moderadores têm permissão para editar a maior parte do conteúdo.","6","1","1","0"
"33","Ambassador","Ex-Embaixador na comunidade original","1","1","1","0"

É isso que ele lista para a tabela User - apenas a entrada System e eu. (Algumas informações foram omitidas, mas ainda devem dar uma ideia da estrutura da tabela.)

Tabela: User
UserID:int,Name:varchar(50),Password:varbinary(100),HashMethod:varchar(10),Photo:varchar(255),Title:varchar(100),Location:varchar(100),About:text,Email:varchar(200),ShowEmail:tinyint,CountVisits:int,CountInvitations:int,CountNotifications:int,InviteUserID:int,DiscoveryText:text,Preferences:text,Permissions:text,Attributes:text,DateSetInvitations:datetime,DateOfBirth:datetime,DateFirstVisit:datetime,DateLastActive:datetime,LastIPAddress:varchar(15),DateInserted:datetime,InsertIPAddress:varchar(15),DateUpdated:datetime,UpdateIPAddress:varchar(15),HourOffset:int,Score:float,Admin:tinyint,Confirmed:tinyint,Verified:tinyint,Banned:tinyint,Deleted:tinyint,Points:int,CountUnreadConversations:int,CountDiscussions:int,CountUnreadDiscussions:int,CountComments:int,CountDrafts:int,CountBookmarks:int
"1","System","XXX","Random","https://XXX.com/applications/dashboard/design/images/usericon.png",\N,\N,\N,"system@stub.vanillacommunity.example","0","0","0","4",\N,\N,\N,"",\N,\N,\N,\N,\N,\N,"2022-11-18 03:39:35",\N,\N,\N,"0",\N,"2","1","0","0","0","0",\N,"1",\N,\N,\N,\N
"2","southpaw","XXX","Vanilla","userpics/QOZBY6BY3J3T/O8C563H2DWZV.jpg",\N,\N,\N,"XXX@gmail.com","0","258","0","24",\N,\N,"{\"DashboardNav.DashboardLandingPage\":\"Settings\"\, \"DashboardNav.SectionLandingPages\":{\"Settings\":\"/dashboard/settings/layout\"\, \"Moderation\":\"/dashboard/user\"}\,, \"DashboardNav.Collapsed\":[]\, \"Popup.WallComment\":\"1\"\, \"Popup.ActivityComment\":\"1\"\, \"Email.AnswerAccepted\":\"1\"\, \"Popup.AnswerAccepted\":\"1\"\, \"Email.QuestionAnswered\":\"1\"\, \"Popup.QuestionAnswered\":\"1\"\, \"Email.ConversationMessage\":\"1\"\, \"Popup.ConversationMessage\":\"1\"\, \"Email.BookmarkComment\":\"1\"\, \"Email.Mention\":\"1\"\, \"Email.ParticipateComment\":\"1\"\, \"Popup.DiscussionComment\":\"1\"\, \"Popup.BookmarkComment\":\"1\"\, \"Popup.Mention\":\"1\"\, \"Popup.ParticipateComment\":\"1\"}", "{\"0\":\"Garden.Email.View\"\, \"1\":\"Garden.Settings.Manage\"\, \"2\":\"Garden.Settings.View\"\, \"3\":\"Garden.SignIn.Allow\"\, \"4\":\"Garden.Users.Add\"\, \"5\":\"Garden.Users.Edit\"\, \"6\":\"Garden.Users.Delete\"\, \"7\":\"Garden.Users.Approve\"\, \"8\":\"Garden.Activity.Delete\"\, \"9\":\"Garden.Activity.View\"\, \"10\":\"Garden.Profiles.View\"\, \"11\":\"Garden.Profiles.Edit\"\, \"12\":\"Garden.Curation.Manage\"\, \"13\":\"Garden.Moderation.Manage\"\, \"14\":\"Garden.PersonalInfo.View\"\, \"15\":\"Garden.AdvancedNotifications.Allow\"\, \"16\":\"Garden.Community.Manage\"\, \"17\":\"Garden.Uploads.Add\"\, \"18\":\"Vanilla.Tagging.Add\"\, \"19\":\"Conversations.Conversations.Add\"\, \"20\":\"Plugins.Attachments.Upload.Allow\"\, \"21\":\"Reactions.Positive.Add\"\, \"22\":\"Reactions.Negative.Add\"\, \"23\":\"Reactions.Flag.Add\"\, \"24\":\"Vanilla.Discussions.View\"\, \"25\":\"Vanilla.Discussions.Add\"\, \"26\":\"Vanilla.Discussions.Edit\"\, \"27\":\"Vanilla.Discussions.Announce\"\, \"28\":\"Vanilla.Discussions.Sink\"\, \"29\":\"Vanilla.Discussions.Close\"\, \"30\":\"Vanilla.Discussions.Delete\"\, \"31\":\"Vanilla.Comments.Add\"\, \"32\":\"Vanilla.Comments.Edit\"\, \"33\":\"Vanilla.Comments.Delete\"\, \"Vanilla.Discussions.View\":[1\,2\,3\,4\,5\,6\,7\,8\,9]\, \"Vanilla.Discussions.Add\":[1\,2\,4\,5\,6\,7\,8\,9]\, \"Vanilla.Discussions.Edit\":[1\,2\,4\,5\,6\,7\,8\,9]\, \"Vanilla.Discussions.Announce\":[1\,2\,4\,5\,6\,7\,8\,9]\, \"Vanilla.Discussions.Sink\":[1\,2\,4\,5\,6\,7\,8\,9]\, \"Vanilla.Discussions.Close\":[1\,2\,4\,5\,6\,7\,8\,9]\, \"Vanilla.Discussions.Delete\":[1\,2\,4\,5\,6\,7\,8\,9]\, \"Vanilla.Comments.Add\":[1\,2\,4\,5\,6\,7\,8\,9]\, \"Vanilla.Comments.Edit\":[1\,2\,4\,5\,6\,7\,8\,9]\, \"Vanilla.Comments.Delete\":[1\,2\,4\,5\,6\,7\,8\,9]}", "{\"TimeZone\":\"America/New_York\"\, \"LastLoginAttempt\":1687373198\, \"LoginRate\":1\, \"CheckedComments\":[]\, \"floodcontrol.profilecontroller.2.currentpostcount\":1\, \"\": \"2022-12-04 02:28:17\"\, \"CheckedDiscussions\":[]}",\N,"1975-09-16 00:00:00","2022-11-18 03:39:35","2023-07-17 01:06:51","A¾’²","2022-11-18 03:39:35","A¾’²","2023-07-11 03:36:17","A¾’²","-4",\N,"1","1","1","0","0","182","3","14",\N,"83","0",\N
3 curtidas

A única diferença que encontrei foi “Capitalização”. O script vanilla.rb não aceita letras minúsculas nos nomes das funções.
Por algum motivo, meu arquivo de exportação tinha letras minúsculas nos nomes das funções.
Agora este erro está corrigido, mas há muitos outros erros com os quais preciso lidar antes de poder migrar completamente :smiley:

Agora preciso corrigir a formatação da data:

script/import_scripts/vanilla.rb:281:in `strptime': data inválida (Date::Error)

    DateTime.strptime(date, "%Y-%m-%d %H:%M:%S")

2 curtidas