2014-01-18 3 views
0
$dbh->selectrow_hashref("SHOW CREATE FUNCTION my_func"); 

возвращаетКак получить определение функции MySQL с помощью Perl DBI?

0 HASH(0x202fe70) 
    'Create Function' => undef 
    'Database Collation' => 'latin1_swedish_ci' 
    'Function' => 'my_func' 
    'character_set_client' => 'cp850' 
    'collation_connection' => 'cp850_general_ci' 
    'sql_mode' => '' 

(определение функции отсутствует)

Тот же самый код отлично работает с SHOW CREATE VIEW и SHOW CREATE FUNCTION работает в командной строке MySQL с теми же учетными данными.

Я задавался вопросом, слишком ли велик тип данных для атрибута, поэтому я попытался установить LongReadLen на очень большое число на подключении, но это не имело значения.

+0

'use Data :: Dumper; print Dumper $ dbh-> selectrow_hashref (" SHOW CREATE FUNCTION my_func ");' –

+0

это все равно не работает. Он дает: $ VAR1 = { 'character_set_client' => 'cp850', 'Database Collation' => 'latin1_swedish_ci', 'collation_connection' => 'cp850_general_ci', 'sql_mode' => '', 'Create Function' => undef, 'Function' => 'my_func' }; – flymike

+1

Убедитесь, что вы используете одного и того же пользователя mysql в сценарии и командной строке с помощью 'select user();' –

ответ

0

Я забыл, что пользователь @ локальный не то же самое, как пользователь @ REMOTE_HOST (MySQL кусает меня это каждый раз, когда :-(

Что странно, что пользователь @ remote_host имеет требуемые привилегии, в то время как пользователь @ локальный делает не (я в общедоступной среде хостинга и не имею доступа к привилегиям в базе данных mysql)