Ir para conteúdo

[Encerrado] [Encerrado] {Sqlite} ERRO: attempt to call field 'executeQuery' (a nil value).


UntFrc

Posts Recomendados

Todo script que tento colocar no meu servidor que precisa se conectar com a database pra pegar ou alterar informação não da certo. Em todos os casos fica aparecendo esse erro: attempt to call field 'executeQuery' (a nil value).
Como posso consertar isso?

Obs: Já tentei trocar a linha para só "db.query" e também nao vai.

Link para o comentário
Compartilhar em outros sites

  • Administrador

Mano, faz o seguinte... Coloca isso aqui em /data/lib/012-table.lua:

function table.val_to_str ( v )
  if "string" == type( v ) then
    v = string.gsub( v, "\n", "\\n" )
    if string.match( string.gsub(v,"[^'\"]",""), '^"+$' ) then
      return "'" .. v .. "'"
    end
    return '"' .. string.gsub(v,'"', '\\"' ) .. '"'
  else
    return "table" == type( v ) and table.tostring( v ) or
      tostring( v )
  end
end

function table.key_to_str ( k )
  if "string" == type( k ) and string.match( k, "^[_%a][_%a%d]*$" ) then
    return k
  else
    return "[" .. table.val_to_str( k ) .. "]"
  end
end

function table.tostring( tbl )
  local result, done = {}, {}
  for k, v in ipairs( tbl ) do
    table.insert( result, table.val_to_str( v ) )
    done[ k ] = true
  end
  for k, v in pairs( tbl ) do
    if not done[ k ] then
      table.insert( result,
        table.key_to_str( k ) .. "=" .. table.val_to_str( v ) )
    end
  end
  return "{" .. table.concat( result, "," ) .. "}"
end


Crie um script qualquer com isso aí:

print(table.tostring(db))


e posta aqui o resultado que aparecer no seu console.

Link para o comentário
Compartilhar em outros sites

12 minutos atrás, PoRaI disse:

Mano, faz o seguinte... Coloca isso aqui em /data/lib/012-table.lua:


function table.val_to_str ( v )
  if "string" == type( v ) then
    v = string.gsub( v, "\n", "\\n" )
    if string.match( string.gsub(v,"[^'\"]",""), '^"+$' ) then
      return "'" .. v .. "'"
    end
    return '"' .. string.gsub(v,'"', '\\"' ) .. '"'
  else
    return "table" == type( v ) and table.tostring( v ) or
      tostring( v )
  end
end

function table.key_to_str ( k )
  if "string" == type( k ) and string.match( k, "^[_%a][_%a%d]*$" ) then
    return k
  else
    return "[" .. table.val_to_str( k ) .. "]"
  end
end

function table.tostring( tbl )
  local result, done = {}, {}
  for k, v in ipairs( tbl ) do
    table.insert( result, table.val_to_str( v ) )
    done[ k ] = true
  end
  for k, v in pairs( tbl ) do
    if not done[ k ] then
      table.insert( result,
        table.key_to_str( k ) .. "=" .. table.val_to_str( v ) )
    end
  end
  return "{" .. table.concat( result, "," ) .. "}"
end


Crie um script qualquer com isso aí:


print(table.tostring(db))


e posta aqui o resultado que aparecer no seu console.

 

 

{updateQueryLimitOperator=function: 10EF70B0,lastInsertId=function: 10EF6ED0,updateLimiter=function: 10EF70B0,escapeBlob=function: 10EF6E10,getResult=function: 10EF8250,storeQuery=function: 10EF7090,escapeString=function: 10EF70F0}

attempt to call a number value

Editado por Dandjes
Link para o comentário
Compartilhar em outros sites

Se tiver a source do teu servidor , abre o arquivo luascript.cpp e procura por isso 


 

const luaL_Reg LuaInterface::luaDatabaseTable[] =

 

E manda oque tem dentro

Link para o comentário
Compartilhar em outros sites

Agora, Crypter disse:

Se tiver a source do teu servidor , abre o arquivo luascript.cpp e procura por isso 

 


 

const luaL_Reg LuaInterface::luaDatabaseTable[] =

 

 

E manda oque tem dentro


ai é que ta... não tem as sources :S

Link para o comentário
Compartilhar em outros sites

Cria uma talkactions com esse codigo e me diga se da erro:

 

Spoiler

function getIdTest(cid)
    return db.getResult("SELECT id FROM players WHERE name= '" .. getPlayerName(cid) .. "' LIMIT 1;"):getDataInt("id")
end
 
function onSay(cid, words, param)
    doPlayerPopupFYI(cid, "Seu id no jogo: " .. getIdTest(cid))
    return true
end

 

 

Link para o comentário
Compartilhar em outros sites

  • Administrador

@Crypter

Não vai dar erro, o servidor dele falta a função executeQuery pelo log que ele mandou.

 

Bom, recomendo trocar o executeQuery por storeQuery ou getResult, apesar de ser gambiarra, bom... já que você não tem a source.

Link para o comentário
Compartilhar em outros sites

4 minutos atrás, Crypter disse:

Cria uma talkactions com esse codigo e me diga se da erro:

 

  Ocultar conteúdo


function getIdTest(cid)
    return db.getResult("SELECT id FROM players WHERE name= '" .. getPlayerName(cid) .. "' LIMIT 1;"):getDataInt("id")
end
 
function onSay(cid, words, param)
    doPlayerPopupFYI(cid, "Seu id no jogo: " .. getIdTest(cid))
    return true
end

 

 


Funcionou normal. 

51 minutos atrás, PoRaI disse:

@Crypter

Não vai dar erro, o servidor dele falta a função executeQuery pelo log que ele mandou.

 

Bom, recomendo trocar o executeQuery por storeQuery ou getResult, apesar de ser gambiarra, bom... já que você não tem a source.


Nenhuma dessas duas outras opções funcionaram no script de change vocation, porém no comando de deathlist funcionou. Pelo que eu percebi nada funciona quando a questão é o script alterar algo na database. =/

Erro:

[Error - Action Interface] 
[22/09/2017 21:47:55] data/actions/scripts/changevoc.lua:onUse
[22/09/2017 21:47:55] Description: 
[22/09/2017 21:47:55] data/actions/scripts/changevoc.lua:58: attempt to concatenate a boolean value
[22/09/2017 21:47:56] stack traceback:
[22/09/2017 21:47:56]     data/actions/scripts/changevoc.lua:58: in function <data/actions/scripts/changevoc.lua:1>

Link para o comentário
Compartilhar em outros sites

  • Administrador
1 hora atrás, Dandjes disse:


Funcionou normal. 


Nenhuma dessas duas outras opções funcionaram no script de change vocation, porém no comando de deathlist funcionou. Pelo que eu percebi nada funciona quando a questão é o script alterar algo na database. =/

Erro:


[Error - Action Interface] 
[22/09/2017 21:47:55] data/actions/scripts/changevoc.lua:onUse
[22/09/2017 21:47:55] Description: 
[22/09/2017 21:47:55] data/actions/scripts/changevoc.lua:58: attempt to concatenate a boolean value
[22/09/2017 21:47:56] stack traceback:
[22/09/2017 21:47:56]     data/actions/scripts/changevoc.lua:58: in function <data/actions/scripts/changevoc.lua:1>

 


Aí é o script que tá com erro. É aquele mesmo do outro tópico? Afinal, pq você não usa aquele que eu mandei?


Edit:
Ele tá dando erro porque você tenta usar a função: getPlayerGUID(cid) depois que removeu a criatura, então a função vai retornar um valor boleano falso.
Troca os: " .. getPlayerGUID(cid) .. " por " .. pid .. "

Link para o comentário
Compartilhar em outros sites

3 minutos atrás, PoRaI disse:


Aí é o script que tá com erro. É aquele mesmo do outro tópico? Afinal, pq você não usa aquele que eu mandei?

Edit:
Ele tá dando erro porque você tenta usar a função: getPlayerGUID(cid) depois que removeu a criatura, então a função vai retornar um valor boleano falso.
Troca os: " .. getPlayerGUID(cid) .. " por " .. pid .. "


Eu estava usando aquele antigo que eu tinha. Tem razão, aquele que voce fez funciona perfeitamente. Mudei para db.getresult e agora foi, finalmente... 

Link para o comentário
Compartilhar em outros sites

  • 2 months later...
Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...