FreeBSD 64 Bit und Mijago questlib.lua Problem

08/31/2013 02:08 ebert.tonna#1
Es gab schon viele Themen und diese habe mir alle durchgelesen und auch die notwendigen Änderungen vorgekommen aber es klappt nicht.

mein Query in der Quest:

mysql_query("update account.account set coins = coins+"..(100).." where id = "..pc.get_account_id())


meine Änderung in der questlib.lua beim mysql_query = function(query)

os.execute('mysql '..pre..' -e'..string.format('%q', query)..' > '..fi)

Ich habe habe FreeBSD 8.3 64 Bit und mysql 5.5.33

Immer wieder der Fehler das ich einen Mysql Error (1064) habe, was mache ich denn falsch, auf älteren FreeBSD Versionen und MYSQl 5.0 lief das alles ohne Probleme.
08/31/2013 02:27 .Shōgun#2
Comment this line in /etc/my.cnf

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLE S

and:

service mysql-server restart
08/31/2013 02:48 ebert.tonna#3
keine Änderung geht so auch nicht
[Only registered and activated users can see links. Click Here To Register...]

Habe ich vielleicht was vergessen zu installieren oder ist mein query einfach nur falsch mit der mysql version. gibt ja immerhin unterschiede.
08/31/2013 09:06 CersusAkaBrot#4
glaube weiß das problem adde dich
09/01/2013 20:21 ebert.tonna#5
Push Problem besteh immer noch, ich glaube langsam es liegt am AMD 64
09/01/2013 20:23 xGr33n#6
Mach mal bitte einen Screen vom Error und ladt deine Questlib.lua hoch
09/01/2013 22:55 ebert.tonna#7
Problem behoben:

Das ist der Eintrag von Mijago in der Questlib:

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)
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








und das ist der neue Eintrag mit dem alten ersetzt und es klappt nun ohne Probleme:

mysql_query = function(query)
if not MYSQL_CONNECTION then
local rt = io.open('CONFIG','r'):read('*all')
MYSQL_CONNECTION = 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 "..MYSQL_CONNECTION.." -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] = b
out[t[1][a]] = out[t[1][a]] or {}
out[t[1][a]][i-1] = b
end) end
return out
end

und den Query in:

mysql_query("update account.account set coins = coins+100 where id = '"..pc.get_account_id().."'")

Vielen Dank an LCFMaus(BEN) für die Lösung
[Only registered and activated users can see links. Click Here To Register...]

geändert.