[Phpmyadmin-devel] notices in libraries/RecentTables.class.php

Aris Feryanto aris_feryanto at yahoo.com
Thu Jun 23 14:18:16 CEST 2011


----- Original Message -----

> From: Marc Delisle <marc at infomarc.info>
> 
> Le 2011-06-23 05:46, Rouslan Placella a écrit :
>> On Thu, 2011-06-23 at 01:53 -0700, Aris Feryanto wrote:
>>> ----- Original Message -----
>>> 
>>>> From: Marc Delisle <marc at infomarc.info>
>>>> 
>>>> Aris Feryanto a écrit :
>>>>>   Hi Marc,
>>>>> 
>>>>>   ----- Original Message -----
>>>>>>   From: Marc Delisle <marc at infomarc.info>
>>>>>> 
>>>>>>   From current master, when browsing a table:
>>>>>> 
>>>>>>   Warning in ./libraries/RecentTable.class.php#190 
> array_unshift()
>>>>>>   expects parameter 1 to be array, null given
>>>>>> 
>>>>>>   Backtrace
>>>>>> 
>>>>>>   ./libraries/RecentTable.class.php#190: array_unshift( 
> NULL, string
>>>>>>   sakila.actor, ) ./libraries/header.inc.php#22:
>>>>>>   PMA_RecentTable->add( string sakila, string actor, ) 
>>>>>>   ./libraries/header.inc.php#171: PMA_addRecentTable( string 
> sakila, 
>>>>>>   string actor, ) ./libraries/tbl_links.inc.php#40:
>>>>>>   require_once(./libraries/header.inc.php) ./sql.php#881:
>>>>>>   require(./libraries/tbl_links.inc.php)
>>>>>> 
>>>>> 
>>>>>   Odd. It shouldn't be NULL because it is always initialized 
> when
>>>>>   PMA_RecentTable class is being constructed. And I can't 
> reproduce
>>>>>   this warning. Is this warning found in demo server?
>>>> 
>>>> No but possibly, warnings and notices are turned off on the demo 
> server.
>>>> 
>>>> On your development machine you should use this line in 
> config.inc.php:
>>>> $cfg['Error_Handler']['display'] = true;
>>>> 
>>> 
>>> Hi Marc,
>>> 
>>> I keep looking for the warning while developing the show/hide column 
> feature, but I still cannot see it until now. Please let me know about your 
> steps to reproduce it.
>>> 
>>> 
>>> --
>>> Aris Feryanto
>> 
>> I saw some similar notices some time ago and afterwards the recent
>> tables feature stopped working completely. Today I dumped the pma_recent
>> table and found this:
>> 
>> ##### SNIP #####
>> --
>> -- Table structure for table `pma_recent`
>> --
>> CREATE TABLE IF NOT EXISTS `pma_recent` (
>>    `username` varchar(64) COLLATE utf8_bin NOT NULL,
>>    `tables` blob NOT NULL,
>>    PRIMARY KEY (`username`)
>> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
>> --
>> -- Dumping data for table `pma_recent`
>> --
>> INSERT INTO `pma_recent` (`username`, `tables`) VALUES
>> ('root', 0x6e756c6c);
>> ##### SNIP #####
>> 
>> Of course, if you UNHEX 0x6e756c6c, you get 'null'. No idea how 
> that
>> value got there, but after deleting that row, the feature started to
>> work as expected again.
>> 
>> BTW, I'm not sure why you are storing all the table names in one row.
>> For me it would make more sense to remove the PK constraint from the
>> `username` column and replace it with a non-unique index. After that you
>> can store each user/table combination on a new row, which would make
>> fetching easier and would probably avoid problems like the one I ended
>> up with. Feel free to ignore this or take it on board.
>> 
>> Rouslan
> 
> I also have 'root' and 'null' in my pma_recent table.
> 

Hmm. I think the 'null' is caused by recent changes in "recent tables" code when fixing bug: recent table not work correctly when changing between different server.
To solve this, please clear the pma_recent table, like Rouslan did.

And for "all table names in one row", I think it will be easier to maintain if we have it per user. Anyway, thanks for the suggestion, Rouslan.


--
Aris Feryanto




More information about the Developers mailing list