Siga-nos em...
Follow us on Twitter Follow us on Facebook Watch us on YouTube
Registro

Alpha Servers
Página 3 de 7 PrimeiroPrimeiro 12345 ... ÚltimoÚltimo
Resultados 21 a 30 de 63
  1. #21

    Avatar de pedrosk99
    Data de Ingresso
    Sep 2015
    Localização
    Brasil
    Posts
    37
    Agradecido
    5
    Agradeceu
    5
    Peso da Avaliação
    0

    Padrão

    Citação Postado originalmente por Renato Ver Post
    AAAAH, o bom e velho conflito de collations...

    O erro está aí, descrito em inglês pra quem quiser ver. Pesquise o significado.
    Poderia me ajudar com esse erro , mesmo pesquisando não consegui resolver.

    Server: Msg 446, Level 16, State 9, Procedure WZ_DISCONNECT_MEMB, Line 25
    Cannot resolve collation conflict for equal to operation.

  2. #22



    Avatar de Renato
    Data de Ingresso
    Nov 2010
    Localização
    Imperyus
    Posts
    1.099
    Agradecido
    2519
    Agradeceu
    492
    Peso da Avaliação
    30

    Padrão

    Verifica e poste aqui o tipo de collation das seguintes colunas e tabelas:

    COLUNA / TABELA

    memb___id / MEMB_INFO
    memb___id / MEMB_STAT
    AccountID / Character
    Name / Character
    Id / AccountCharacter

    []'s
    Última edição por Renato; 08-11-2015 às 09:22 AM.
    Código PHP:
    <?php
        
    if(Weather::getState() == 'Rainy weather') {
            
    $this->removingLittleHorseFromRain();
        }

  3. O Seguinte Usuário Agradeceu Renato Por este Post Útil:


  4. #23

    Avatar de pedrosk99
    Data de Ingresso
    Sep 2015
    Localização
    Brasil
    Posts
    37
    Agradecido
    5
    Agradeceu
    5
    Peso da Avaliação
    0

    Padrão

    Citação Postado originalmente por Renato Ver Post
    Verifica e poste aqui o tipo de collation das seguintes colunas e tabelas:

    COLUNA / TABELA

    memb___id / MEMB_INFO
    memb___id / MEMB_STAT
    AccountID / Character
    Name / Character
    Id / AccountCharacter

    []'s
    esse e a collate das tabelas e colunas:

    hinese_PRC_CI_AS

  5. #24

    Avatar de pedrosk99
    Data de Ingresso
    Sep 2015
    Localização
    Brasil
    Posts
    37
    Agradecido
    5
    Agradeceu
    5
    Peso da Avaliação
    0

    Padrão

    Consegui retirar o erro de collation , mais quando coloquei trocar de char , sumiu todos chars da conta, poderia me ajudar ?

  6. #25


    Avatar de viOleNt
    Data de Ingresso
    Oct 2010
    Localização
    Atibaia - SP
    Idade
    34
    Posts
    251
    Agradecido
    273
    Agradeceu
    108
    Peso da Avaliação
    16

    Padrão

    só dando um feedback para quem vai tentar usar, realmente em inumeros testes os chars "somem" eles não são deletados nem nada, mais buga de não aparece os chars na lista de chars ingame.
    Ainda estou vendo se consigo "arrumar", em todo caso tomem cuidado.

  7. #26



    Avatar de Renato
    Data de Ingresso
    Nov 2010
    Localização
    Imperyus
    Posts
    1.099
    Agradecido
    2519
    Agradeceu
    492
    Peso da Avaliação
    30

    Padrão

    @viOleNt verifique se fez a instalação da forma correta. Eu testei várias vezes localmente e no servidor de um colega. Em nenhum dos testes ocorreu o erro citado por você. É novidade pra mim kk

    O que pode ter ocasionado o erro é collation das tables e colunas. Cheque elas.

    Em todo caso: backup sempre.
    Última edição por Renato; 11-02-2016 às 09:06 AM.
    Código PHP:
    <?php
        
    if(Weather::getState() == 'Rainy weather') {
            
    $this->removingLittleHorseFromRain();
        }

  8. #27

    Avatar de pedrosk99
    Data de Ingresso
    Sep 2015
    Localização
    Brasil
    Posts
    37
    Agradecido
    5
    Agradeceu
    5
    Peso da Avaliação
    0

    Padrão

    sim , eu fisso backup quando testei , aconteceu de os chars sumir mesmo, quando loguei estava normal , mais quando coloquei pra trocar de char , sumiu todos ^^

  9. #28


    Avatar de viOleNt
    Data de Ingresso
    Oct 2010
    Localização
    Atibaia - SP
    Idade
    34
    Posts
    251
    Agradecido
    273
    Agradeceu
    108
    Peso da Avaliação
    16

    Padrão

    Citação Postado originalmente por Renato Ver Post
    @viOleNt verifique se fez a instalação da forma correta. Eu testei várias vezes localmente e no servidor de um colega. Em nenhum dos testes ocorreu o erro citado por você. É novidade pra mim kk

    O que pode ter ocasionado o erro é collation das tables e colunas. Cheque elas.

    Em todo caso: backup sempre.
    Renato, para ter postado aqui, é porque eu fiz um vps só para testar isso ai, e com 101% de certeza, comigo e com uns 3 outros mlks tiveram o mesmo "bug". Um amiguinho está para "fixar", ai te digo o que "bugou" comigo.

    ;*

  10. #29

    Avatar de Willerson
    Data de Ingresso
    Aug 2009
    Localização
    Em Algum Lugar
    Posts
    560
    Agradecido
    1630
    Agradeceu
    90
    Peso da Avaliação
    30

    Padrão

    Quem tiver com problemas dos chars sumirem, segundo meus testes, é o NOCOUNT do sql que está dando problema, para arrumar é simples, roda a trigger com o código abaixo que vai arrumar.

    Código:
    /*
    | @author - Renato Valer
    | @version - 2.1.1
    | @last update - 2015/08/29 - 12h23min
    | @warning: Não me responsabilizo por uso incorreto e possíveis deadlocks. Use por sua conta e risco.
    */
    
    USE MuOnline
    GO
    
    IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AccountCharacter_Online' AND type = 'TR')
        DROP TRIGGER [AccountCharacter_Online]
    GO
    
    CREATE TRIGGER [AccountCharacter_Online] ON [dbo].[AccountCharacter] 
    AFTER UPDATE AS
        SET NOCOUNT ON
    
    /*
    |    Hipóteses
    |    
    |
    |        1 - Se GameIDC foi atualizado, algum char foi foi logado. Surgem hipóteses:
    |
    |            1.1 - GameIDC e Old_GameIDC são diferentes:
    |    
    |                1.1.1 - Old_GameIDC é NULL, logo é o primeiro char logado (e possivelmente o primeiro criado) na conta, 
    |                    pois não existe GameIDC anterior.
    |                1.1.2 - Já existe um GameIDC anterior, logo significa que o cara acessou outro char. Surgem 2 hipóteses:
    |
    |                    1.1.2.1 - O cara simplesmente trocou de char sem deslogar a conta:
    |                        1.1.2.1.1 - O cara logou um char, deletou ele e entrou em outro.
    |                    1.1.2.2 - O cara relogou a conta e entrou em outro char.
    |                        1.1.2.2.1 - O cara logou um char, deletou ele, saiu da conta, voltou e entrou em outro.
    |                        
    |            1.2 GameIDC e Old_GameIDC são iguais:
    |                        
    |                1.2.1 - O cara relogou o char.
    |                1.2.2 - O cara relogou a conta e entrou no mesmo char.
    |
    |        2. Se GameIDC não foi atualizado, não precisa fazer nada, porque significa:
    |        
    |            2.1 - Que um char foi criado, mas não foi logado.
    |            2.2 - Que um char foi deletado sem nem mesmo ter sido logado.
    |                
    |        
    */
    
    -- Hipótese 1
    IF UPDATE(GameIDC) BEGIN
    
        DECLARE @Login VARCHAR(10),
        @GameIDC VARCHAR(10),
        @Old_GameIDC VARCHAR(10),
        @GameIDC_ConnectTM DATETIME,
        @GameIDC_ConnectTM_Int INT,
        @Old_GameIDC_ConnectTM DATETIME,
        @Old_GameIDC_ConnectTM_Int INT,
        @GameIDC_DisConnectTM DATETIME,
        @GameIDC_DisConnectTM_Int INT,
        @Old_GameIDC_DisConnectTM DATETIME,
        @Old_GameIDC_DisConnectTM_Int INT,
        @Account_DisconnectTM DATETIME,
        @Account_DisconnectTM_Int INT,
        @Now DATETIME,
        @Now_Int INT,
        @TimeON BIGINT;
    
        SET @Login = (SELECT Id FROM INSERTED);
        SET @GameIDC = (SELECT GameIDC FROM AccountCharacter WHERE Id = @Login);
        SET @Old_GameIDC = (SELECT GameIDC FROM DELETED);
        SET @Now = GETDATE();
        SET @Now_Int = DATEDIFF(s, '19700101', @Now);
        SET @Account_DisconnectTM = (SELECT DisconnectTM FROM MEMB_STAT WHERE memb___id = @Login);
        SET @Account_DisconnectTM_Int = DATEDIFF(s, '19700101', @Account_DisconnectTM);
    
        -- Hipótese 1.1
        IF(@GameIDC <> @Old_GameIDC) BEGIN
    
            -- Hipótese 1.1.1
            IF(@Old_GameIDC IS NULL) BEGIN
                
                UPDATE Character SET ConnectTM = @Now WHERE AccountID = @Login AND Name = @GameIDC;
                
            END
            -- Hipótese 1.1.2
            ELSE BEGIN
            
                SET @Old_GameIDC_DisconnectTM = @Now
                SET @Old_GameIDC_DisconnectTM_Int = @Now_Int;
                
                -- Hipótese 1.1.2.1
                IF(@Account_DisconnectTM_Int <> @Old_GameIDC_DisconnectTM_Int) BEGIN
                
                    -- Verificação da Hipótese 1.1.2.1.1
                    IF EXISTS(SELECT Name FROM Character WHERE AccountID = @Login AND Name = @Old_GameIDC) BEGIN
    
                        SET @Old_GameIDC_ConnectTM = (SELECT ConnectTM FROM Character WHERE AccountID = @Login AND Name = @Old_GameIDC);
                        SET @Old_GameIDC_ConnectTM_Int = DATEDIFF(s, '19700101', @Old_GameIDC_ConnectTM);
                
                        SET @TimeON = @Old_GameIDC_DisconnectTM_Int - @Old_GameIDC_ConnectTM_Int;
                    
                        UPDATE Character SET TimeON = TimeON + @TimeON, DisConnectTM = @Now WHERE AccountID = @Login AND Name = @Old_GameIDC;
                                        
                    END
                    
                END
                -- Hipótese 1.1.2.2 e "fim" da Hipótese 1.1.2.1
                -- A query é a mesma e um "else" é desnecessário.        
                /*
                |    Não é necessário atualizar tempo on, porque se o cara relogou a conta
                |    a WZ_DISCONNECT_MEMB já fez o serviço. Só precisamos atualizar o momento
                |    de connect do novo char.
                */
                UPDATE Character SET ConnectTM = @Now WHERE AccountID = @Login AND Name = @GameIDC;    
                            
            END
            
        END
        --Hipótese 1.2.
        ELSE BEGIN
            -- Apenas precaução...
            IF(@GameIDC IS NOT NULL) BEGIN
                
                /*
                |    Desnecessário checar se o char existe, porque se essa parte 
                |    do script está sendo executada, é porque o char foi logado
                |    agora, logo é presumível que existe.
                */
                
                SET @GameIDC_ConnectTM = (SELECT ConnectTM FROM Character WHERE AccountID = @Login AND Name = @GameIDC);
                SET @GameIDC_ConnectTM_Int = DATEDIFF(s, '19700101', @GameIDC_ConnectTM);
                SET @GameIDC_DisconnectTM_Int = @Now_Int;
    
                -- Hipótese 1.2.1
                IF(@Account_DisconnectTM_Int < @GameIDC_ConnectTM_Int) BEGIN
                    
                    SET @TimeON = @GameIDC_DisconnectTM_Int - @GameIDC_ConnectTM_Int;
                    UPDATE Character SET TimeON = TimeON + @TimeON, DisConnectTM = @Now, ConnectTM = @Now WHERE AccountID = @Login AND Name = @GameIDC;
                    
                END
                -- Hipótese 1.2.2
                ELSE BEGIN
                    /*
                        Não é necessário atualizar tempo on, porque se o cara relogou a conta
                        a WZ_DISCONNECT_MEMB já fez o serviço.
                    */
                    UPDATE Character SET ConnectTM = @Now WHERE AccountID = @Login AND Name = @GameIDC;
                    
                END    
                
            END
            
        END
        SET NOCOUNT OFF
    END
    As alterações necessárias estão destacadas em vermelho, qualquer duvida, só responder aqui que ajudo.

    P.S: essa alteração faz o SQL suprimir aquelas mensagens de quantas linhas foram atualizadas ( XXX rows updated ), ou seja, não tem nenhum efeito adverso.

    []'s
    Forum Owner & Admin - Imperyus Games Brasil

  11. Os Seguintes 4 Usuários Agradeceram você Willerson Por este Post Útil:


  12. #30



    Avatar de Erick-Master
    Data de Ingresso
    Jul 2010
    Localização
    Lorencia :D
    Posts
    330
    Agradecido
    401
    Agradeceu
    144
    Peso da Avaliação
    21

    Cool

    Só complementando a solução do Willerson:

    As triggers do SQL costumam exercer a função de executar outras queries após o efeito do insert/update/delete na tabela/coluna em questão.
    Consequentemente, se você está executando outras queries na trigger, que é o caso, automaticamente você muda o ESTADO do resultado do SQL no client.
    Com isso, o DataServer não consegue fazer a verificação correta se o UPDATE teve êxito, pois o retorno da query será mais de um resultado e não o esperado pelo mesmo.

    A syntax "NOCOUNT", como já dito pelo Willerson, tem o objetivo de ocultar qualquer resultado de "contagem" aos registros afetados pela query.
    Sendo assim, todos os UPDATES feitos dentro da trigger não serão contabilizados e não terão retorno, ou seja, serão executados em "silêncio" como deveria ser.

    Alguns servidores podem não ter tido o problema, pois a versão do DataServer em questão deve travar os estados de SQL de outra forma.

    PS: Renato é gay. ;*

    []'s

  13. Os Seguintes 2 Usuários Agradeceram você Erick-Master Por este Post Útil:


 

 
Página 3 de 7 PrimeiroPrimeiro 12345 ... ÚltimoÚltimo

Informações de Tópico

Usuários Navegando neste Tópico

Há 1 usuários navegando neste tópico. (0 registrados e 1 visitantes)

Tópicos Similares

  1. |Dúvida| As vezes não dá para Criar mais Char na Conta
    Por Luciano no fórum Dúvidas
    Respostas: 1
    Último Post: 06-11-2015, 11:52 PM
  2. |Jobs/Query| conta online sem tempo real
    Por hadeslan no fórum Jobs e Querys
    Respostas: 3
    Último Post: 06-09-2015, 01:43 PM
  3. |Dúvida| Como Adicionar Ranking Tempo Char Online
    Por KaKaRoToX no fórum Dúvidas|Pedidos
    Respostas: 0
    Último Post: 17-01-2015, 10:05 PM
  4. |Dúvida| Conta não cadastrada depois de um tempo online.
    Por caahs2feeh no fórum Dúvidas
    Respostas: 5
    Último Post: 09-09-2012, 08:45 PM
  5. Respostas: 8
    Último Post: 11-06-2011, 08:46 PM

Marcadores

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •