Я работаю над сценарием Perl, который использует mysqldiff
для сравнения двух баз данных, а затем применяет изменения к первой базе данных. Команда, которую я использую:
mysqldiff --host=$dbHost --user=$dbUser -A $dbName1 $dbName2
Я получаю разницу, но после этого всегда происходит следующая ошибка:
ERROR 1044 (42000): Access denied for user ''@'localhost' to database <NAME OF THE DATABASE>
Как я могу решить эту проблему?
Правильно ли я понимаю, что вы получаете по крайней мере следующее сообщение?:
nПрименить вышеуказанные изменения к $ db0 [y/N]?
если да, похоже, что auth_args из MySQL :: Diff не работает. Вы можете попробовать использовать альтернативные заявления:
GetOptions (\% opts, "help |?", "Debug | d: i", "apply | A", "batch-apply | B", "keep-old-tables | k", "keep-old-columns" | c "," no-old -d efs | n "," only-both | o "," table-re | t = s "," host | h = s "," port | P = s ", "socket | s = s", "user | u = s", "password | p: s", "host1 = s", "port1 = s", "socket1 = s", "user1 = s", "password1: s "," host2 = s "," port2 = s "," socket2 = s "," user2 = s "," password2: s "," толерантный | я "," одиночная транзакция | S "," список столы | l ")
(см. исходный код)
Если это не работает, попробуйте запустить его в режиме отладки с помощью
-d, - -d ebug