Python, IaC, algo trading, programming, server administration, Linux, PHP, CakePHP, PostgreSQL, MySQL, Joomla ...
Thursday, October 20, 2011
drop role denied in postgres
# drop role paponte;
ERROR: role "paponte" cannot be dropped because some objects depend on it
DETAIL: 4 objects in database admision
Following (http://stackoverflow.com/questions/3023583/postgresql-how-to-quickly-drop-a-user-with-existing-privileges)
I did
# drop owned by paponte;
DROP OWNED
And then no problem with:
# drop role paponte;
DROP ROLE
Sunday, October 16, 2011
hot to determine if a variable is set but has null value
I found this post: http://stackoverflow.com/questions/418066/best-way-to-test-for-a-variables-existence-in-php-isset-is-clearly-broken
From the isset()
docs:
isset() will return FALSE if testing a variable that has been set to NULL.
Basically, isset()
doesn't check for whether the variable is set at all, but whether it's set to anything but NULL
.
Given that, what's the best way to actually check for the existence of a variable? I tried something like:
if(isset($v) || @is_null($v))
(the @
is necessary to avoid the warning when $v
is not set) but is_null()
has a similar problem to isset()
: it returns TRUE
on unset variables! It also appears that:
@($v === NULL)
works exactly like @is_null($v)
, so that's out, too.
How are we supposed to reliably check for the existence of a variable in PHP?
Edit: there is clearly a difference in PHP between variables that are not set, and variables that are set to NULL
:
php
$a = array('b' => NULL);
var_dump($a);
PHP shows that $a['b']
exists, and has a NULL
value. If you add:
var_dump(isset($a['b']));
var_dump(isset($a['c']));
you can see the ambiguity I'm talking about with the isset()
function. Here's the output of all three of these var_dump()s
:
array(1) {
["b"]=>
NULL
}
bool(false)
bool(false)
Further edit: two things.
One, a use case. An array being turned into the data of an SQL UPDATE
statement, where the array's keys are the table's columns, and the array's values are the values to be applied to each column. Any of the table's columns can hold a NULL
value, signified by passing a NULL
value in the array. You need a way to differentiate between an array key not existing, and an array's value being set to NULL
; that's the difference between not updating the column's value and updating the column's value to NULL
.
Second, Zoredache's answer, array_key_exists()
works correctly, for my above use case and for any global variables:
php
$a = NULL;
var_dump(array_key_exists('a', $GLOBALS));
var_dump(array_key_exists('b', $GLOBALS));
outputs:
bool(true)
bool(false)
Since that properly handles just about everywhere I can see there being any ambiguity between variables that don't exist and variables that are set to NULL
, I'm calling array_key_exists()
the official easiest way in PHP to truly check for the existence of a variable.
(Only other case I can think of is for class properties, for which there's property_exists()
, which, according to its docs, works similarly to array_key_exists()
in that it properly distinguishes between not being set and being set to NULL
.)
...
cancel script completely on ctrl-c
I found this question interesting: basically how to cancel completely a script and all child processes : You do this by creating a subro...
-
I've been using WinScp and a script to compress files at maximum compressiĆ³n, name the file as name_YYMMDD-HHMM.rar, and send them to a...
-
tomado de: http://el-directorio.org/ErroresComunesPhpmyadmin ARREGLAR ERROR 1045 (28000): Access denied for user 'root'@'localho...
-
Styling Excel cells with mso-number-format mso-number-format:"0" NO Decimals mso-number-format:...