PDA

View Full Version : libmysqlclient



suck000
21st July 2016, 18:29
Hello, when starting my cod2 server. I got this weird thing on console

/usr/lib/i386-linux-gnu/libmysqlclient.so.18: no version information available (required by libcod/bin/libcod2_1_3.so)


I tried
dpkg --add-architecture i386
apt-get update
apt-get install gcc-multilib
apt-get install libmysqlclient-dev:i386
apt-get install g++-multilib

Still getting it. Any solution ?

Ubtunu
Architecture: x86_64

voron00
21st July 2016, 18:47
Try recompiling your lib.

suck000
21st July 2016, 19:11
Tried to. Also i'm using the lastest compiled libcod.
killtube.org/downloads/libcod/

This was working fine on 1.0 since i changed to 1.3 i get that error.

voron00
21st July 2016, 19:13
Do not use precompiled lib. Build your own to have it properly linked with your mysql setup.

suck000
21st July 2016, 19:20
I don't know how.

voron00
21st July 2016, 19:28
cd $HOME
git clone https://github.com/voron00/libcod
cd libcod
./doit.sh base
./doit.sh cod2_1_3

Your lib will be in libcod/bin folder.

suck000
21st July 2016, 19:35
Did that already !
init()
{
//get your host, user, pass, db, port here
level.JH_mysql = mysql_reuse_connection();
if(!isDefined(level.JH_mysql))
level.JH_mysql = initMySQL("localhost", "root", "pwhere", "dbhere", 3306);
initAsyncMySQL("localhost", "root", "pwhere", "dbhere", 3306);
}

query(query)
{
if(!isDefined(level.JH_mysql))
return undefined;
result = mysql_query(level.JH_mysql, query);
resettimeout();
if(result)
{
printf("Error in " + query + "\n");
return undefined;
}
result = mysql_store_result(level.JH_mysql);
rows = getRows(result);
return rows;
}

queryNosave(query)
{
if(!isDefined(level.JH_mysql))
return undefined;
result = mysql_query(level.JH_mysql, query);
resettimeout();
if(result)
{
printf("Error in " + query + "\n");
return undefined;
}
return [];
}

getRows(result)
{
if(!isDefined(result))
return [];
rowcount = mysql_num_rows(result);
fields = [];
field = mysql_fetch_field(result);
while(isDefined(field))
{
fields[fields.size] = field;
field = mysql_fetch_field(result);
}
rows = [];
for(i = 0; i < rowcount; i++)
{
row = mysql_fetch_row(result);
rows[rows.size] = [];
for(j = 0; j < fields.size; j++)
rows[rows.size - 1][fields[j]] = row[j];
}
mysql_free_result(result);
return rows;
}

asyncQuery(query, function, args)
{
id = mysql_async_create_Query(query);
task = spawnstruct();
task.query = query;
task.invoker = self;
task.function = function;
task.args = args;
level.JH_mysqlAsync["" + id] = task;
}

asyncQueryNosave(query, function, args)
{
id = mysql_async_create_Query_Nosave(query);
task = spawnstruct();
task.query = query;
task.invoker = self;
task.function = function;
task.args = args;
level.JH_mysqlAsync["" + id] = task;
}

initAsyncMySQL(host, user, pass, db, port)
{
mysql_async_initializer(host, user, pass, db, port, 4);
level.JH_mysqlAsync = [];
thread loopAsyncMySQL();
}

loopAsyncMySQL()
{
while(true)
{
list = mysql_async_GetDone_List();
for(i = 0; i < list.size; i++)
{
result = mysql_async_getresult_and_free(list[i]);
if(!isdefined(result))
continue;
if(result == 0)
result = undefined;
task = "" + list[i];
if(isDefined(level.JH_mysqlAsync[task]))
{
if(isDefined(level.JH_mysqlAsync[task].function))
{
if(isDefined(level.JH_mysqlAsync[task].invoker))
{
rows = getRows(result);
level.JH_mysqlAsync[task].invoker thread [[level.JH_mysqlAsync[task].function]](rows, level.JH_mysqlAsync[task].args);
}
else if(isDefined(result))
mysql_free_result(result);
}
else if(isDefined(result))
mysql_free_result(result);
}
else if(isDefined(result))
mysql_free_result(result);
level.JH_mysqlAsync[task] = undefined;
}
wait .05;
}
}

initMySQL(host, user, pass, db, port)
{
mysql = mysql_init();
ret = mysql_real_connect(mysql, host, user, pass, db, port);
if(!ret)
{
printf("errno=" + mysql_errno(mysql) + " error= " + mysql_error(mysql) + "\n");
mysql_close(mysql);
return undefined;
}
return mysql;
}
stripString(string)
{
if(isDefined(level.JH_mysql))
return mysql_real_escape_string(level.JH_mysql, string);
return "";
}

Of course i replaced "pwhere" by my pass and "dbhere" by my cod2 database.
I got two sd.gsc, i wrote on maps\mp\gametypes\sd.gsc
thread maps\mp\gametypes\_mysql::init();
The other one is for pam mod.

Any help ???

suck000
21st July 2016, 21:01
Fixed it. Forgot to open 3306 port XD