[Digikam-users] Mysql/MariaDb database expert needs...
Henrique Santos Fernandes
sf.rique at gmail.com
Wed Nov 18 13:56:00 GMT 2015
Em qua, 18 de nov de 2015 às 11:46, Gilles Caulier <caulier.gilles at gmail.com>
escreveu:
> 2015-11-18 14:33 GMT+01:00 Henrique Santos Fernandes <sf.rique at gmail.com>:
>
>> I dont understando that much but i have 2 questions.
>>
>> Why dont create the index normaly instead of using this if exist
>> procedure?
>>
>
> I don't know. I don't write the SQL code for MySQL. This have been done by
> an old contributor, few years ago...
>
> If you look into this procedure code, it's sound complicated. I don't know
> why ?
>
> CREATE PROCEDURE create_index_if_not_exists(table_name_vc varchar(50),
> index_name_vc varchar(50), field_list_vc varchar(1024))
> BEGIN
>
> set @Index_cnt = (
> SELECT COUNT(1) cnt
> FROM INFORMATION_SCHEMA.STATISTICS
> WHERE CONVERT(DATABASE() USING latin1) =
> CONVERT(TABLE_SCHEMA USING latin1)
> AND CONVERT(table_name USING latin1) =
> CONVERT(table_name_vc USING latin1)
> AND CONVERT(index_name USING latin1) =
> CONVERT(index_name_vc USING latin1)
> );
>
> IF IFNULL(@Index_cnt, 0) = 0 THEN
> set @index_sql = CONCAT(
> CONVERT( 'ALTER TABLE ' USING latin1),
> CONVERT( table_name_vc USING latin1),
> CONVERT( ' ADD INDEX ' USING latin1),
> CONVERT( index_name_vc USING latin1),
> CONVERT( '(' USING latin1),
> CONVERT( field_list_vc USING latin1),
> CONVERT( ');' USING latin1)
> );
> PREPARE stmt FROM @index_sql;
> EXECUTE stmt;
> DEALLOCATE PREPARE stmt;
> END IF;
> END;
>
> Calls of this procedure is done like this (for thumbnails DB for ex) :
>
> CALL
> create_index_if_not_exists('UniqueHashes','id_uniqueHashes','thumbId');
> CALL create_index_if_not_exists('FilePaths','id_filePaths','thumbId');
> CALL
> create_index_if_not_exists('CustomIdentifiers','id_customIdentifiers','thumbId');
>
> Why this complexity with this procedure. No idea...
>
>
>> If the procedure is really needed, you need to create it with digikam
>> user?
>>
>
> it's already the case with current code.
>
>
>> You should be able to create the procedure when seting up the databases,
>> grant privilges and stuff. right?
>>
>>
> So user digikam dont need to create the procedure right? the root/admin
>> could do this..
>>
>>
> That i can see on Internet, procedure and function need Mysql grant
> priviledges to be executed, not created... But i'm not an expert...
>
Can you try the explained ins thsi link and see if you have permissiosn?
http://stackoverflow.com/questions/10089308/mysql-stored-procedure-permissions
I guess it would be somethng like this:
GRANT EXECUTE ON PROCEDURE digikamthumbsdb.create_index_if_not_exists
TO 'digikam'@'localhost';
Read the comments, because the user said it needed to add something in this
query!
You may add to all procedures as well..
http://dba.stackexchange.com/questions/20221/mysql-user-permission-on-stored-procedure
Hope this help!
>
> Gilles Caulier
> _______________________________________________
> Digikam-users mailing list
> Digikam-users at kde.org
> https://mail.kde.org/mailman/listinfo/digikam-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/digikam-users/attachments/20151118/3013d0b7/attachment.html>
More information about the Digikam-users
mailing list