[Serusers] Error loading "trusted" table (permissions.so)
caio
elcaio at gmail.com
Mon Jan 19 13:11:56 CET 2009
<...cut...>
>>> Do the two machines query the same database server?
>>
>> No, they don't. They are stand-alone with its respective (local) mysql
>> db.
>
> Could you give a try to another DB server? For example query the linux
> mysql server from the Solaris machine, if it is accessible.
>
I've tried (remotely) with the gentoo linux db (MySQL 5.0.60) but
happens the same as at solaris MySQL db (v5.0.51)....Returns value type
as DOUBLE.
>>
>>>
>>> There might be a problem with the field types, please check that they
>>> are strings, and not blobs. Please send me a "describe trusted" mysql
>>> output.
>>
>> mysql> desc trusted;
>> +--------------+-------------+------+-----+---------+-------+
>> | Field | Type | Null | Key | Default | Extra |
>> +--------------+-------------+------+-----+---------+-------+
>> | src_ip | varchar(39) | NO | PRI | NULL | |
>> | proto | varchar(4) | NO | PRI | NULL | |
>> | from_pattern | varchar(64) | NO | PRI | NULL | |
>> +--------------+-------------+------+-----+---------+-------+
>> 3 rows in set (0.00 sec)
>>
>> Casually, i add a few DBG() calls on 'trusted.c' and now at log see
>> these messages:
>>
>> 0(0) DEBUG: register_fifo_cmd: new command (trusted_reload) registered
>> 0(0) DEBUG: register_fifo_cmd: new command (trusted_dump) registered
>> 0(0) unixsock_register_cmd: New command (trusted_reload) registered
>> 0(0) unixsock_register_cmd: New command (trusted_dump) registered
>> 0(0) RES_ROWS (row): 135511480
>> 0(0) Number of rows in trusted table: 1
>> 0(0) row: 135511480
>> 0(0) val: 135511648
>> 0(0) val + 1: 135511664
>> 0(0) val + 2: 135511680
>> 0(0) ROW_VALUES (val): 135511648SQL
>> 0(0) ROW_N(row + i): 3
>> 0(0) VAL_TYPE(val), is DB_STRING?: 2
>> 0(0) VAL_TYPE(val + 1), is DB_STRING?: 2
>> 0(0) VAL_TYPE(val + 2), is DB_STRING?: 1
>> 0(0) DB_INT: 0
>> 0(0) DB_DOUBLE: 1
>> 0(0) DB_STRING: 2
>> 0(0) DB_STR: 3
>> 0(0) VAL_NULL(val): 0
>> 0(0) VAL_NULL(val + 1): 0
>> 0(0) VAL_NULL(val + 2): 0
>> 0(0) VAL_STRING(val): 10.124.35.253
>> 0(0) VAL_STRING(val + 1): any
>> 0(0) VAL_DOUBLE(val + 2): 0
>> 0(0) ERROR: permissions: trusted_reload(): Database problem
>> 0(0) release_connection(): Removing connection from the pool
>> 0(0) init_trusted(): Reload of trusted table failed
>> 0(0) Error while initializing allow_trusted function
>> 0(0) init_mod(): Error while initializing module permissions
>>
>> Seem that VAL_TYPE of "val + 2" isn't STRING, read it as DOUBLE
>> (DB_DOUBLE = 1).
>> Do not know why.
>> And because of this the 'if' conditions never are satisfy on trusted.c
>> (line #396):
>>
>> if ((ROW_N(row + i) == 3) &&
>> (VAL_TYPE(val) == DB_STRING) && !VAL_NULL(val) &&
>> (VAL_TYPE(val + 1) == DB_STRING) && !VAL_NULL(val
>> + 1) &&
>> (VAL_TYPE(val + 2) == DB_STRING) && !VAL_NULL(val
>> + 2)) {
>
>
> Thank you very much for the debug lines! I think SER simply uses the
> field types returned by the mysql server, so there might be a problem
> with the server or library. You can check what the field types are along
> with their names returned by the server in modules/mysql/res.c, search
> for the mysql_fetch_fields function.
>
> Miklos
<...cut...>
>
I'll look for that file. thanks Miklos.
Caio
More information about the sr-users
mailing list