user = user or ql.mysql["user"]
pass = pass or ql.mysql["pass"]
ip = ip or ql.mysql["ip"]
if user ~= '' and user ~= nil then pre = pre..' -u'..user end
if pass ~= '' and pass ~= nil then pre = pre..' -p'..pass end
if db ~= '' and db ~= nil then pre = pre..' -D'..db end
if ip ~= '' and ip ~= nil then pre = pre..' -h'..ip end
da auch angepasst?
Ansonsten versuch mal ne andere version der mysql_query funktion zu benutzen, gibt da eine die liest das pw, den user usw, aus der config aus, da entsteht so ein fehler ganz sicher nicht.
Die eigentliche mysql_query Funktion die benutzt wird ist ja die :
Code:
mysql_query = function(query)
math.randomseed(os.time())
local fi,t,out = 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{}
os.execute('mysql --login-path=local -e'..string.format('%q',query)..' > '..fi)
for av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) end; os.remove(fi);
for i = 2, table.getn(t) do
table.foreach(t[i],function(a,b)
out[i-1] = out[i-1] or {}
out[i-1][a] = tonumber(b) or b or 'NULL'
out[t[1][a]] = out[t[1][a]] or {}
out[t[1][a]][i-1] = tonumber(b) or b or 'NULL'
end)
end
out.__lines = t[1]
return out
end
Denke mal das bei der die daten ausgelesen werden, aber in den configs habe ich keine Daten eingetragen, sieht bei mir so aus:
Code:
PLAYER_SQL: localhost user pw player
COMMON_SQL: localhost user pw common
LOG_SQL: localhost user pw log
Sollte ich hier localhost, user, und pw mal ersetzen?
Ja du kannst mal versuchen das pw in den configs zu ändern nur fragt sich halt in was für eines. Und vergiss dann nicht das pw in der mysql datenbank anzupassen.
mysql_query = function(query)
if not pre then
local rt = io.open('CONFIG','r'):read('*all')
pre,_= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4')
end
math.randomseed(os.time())
local fi,t,out = 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{}
--os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi) -- fur MySQL51
os.execute('mysql '..pre..' -e'..string.format('%q',query)..' > '..fi) -- fur MySQL55
for av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) end; os.remove(fi);
for i = 2, table.getn(t) do table.foreach(t[i],function(a,b)
out[i-1] = out[i-1] or {}
out[i-1][a] = tonumber(b) or b or 'NULL'
out[t[1][a]] = out[t[1][a]] or {}
out[t[1][a]][i-1] = tonumber(b) or b or 'NULL'
end) end
return out
end
denn bei dir fehlt irgendwie das hier
PHP Code:
if not pre then
local rt = io.open('CONFIG','r'):read('*all')
pre,_= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4')
end
und hier wird wenn ich nicht völlig falsch liege, definiert, dass die config geöffnet und gelesen wird, ich denke da wird dann auch das pw ausgelesen.
Lösche die Tabellen nochmal auf deinem FTP im mysql Ordner, danach importiere sie nochmal über die Datenbank und gehe dann auf Design Table und ändere die Tabellen von InnoDB zu MyISAM. Die Tabellen können sehr schnell korrupt werden, wenn man InnoDB benutzt, dies könntest du auch sehen, wenn du die Tabellen via "Check oder Repair Table" ausführen würdest. Danach sollte dein Fehler normalerweise behoben sein.
Lösche die Tabellen nochmal auf deinem FTP im mysql Ordner, danach importiere sie nochmal über die Datenbank und gehe dann auf Design Table und ändere die Tabellen von InnoDB zu MyISAM. Die Tabellen können sehr schnell korrupt werden, wenn man InnoDB benutzt, dies könntest du auch sehen, wenn du die Tabellen via "Check oder Repair Table" ausführen würdest. Danach sollte dein Fehler normalerweise behoben sein.
Die Tabellen sind ok und der Fehler der Ingame gezeigt wird, entsteht nur dadurch, dass die quest mit der mysql_query nicht in die Datenbank kommt und somit "tableItems==nil" ausgegeben wird.