У меня есть аутентификация MySQL для сервера SVN. Файл конфигурации выглядит так:
<Location /svn/project>
...
AuthDBDUserPWQuery "SELECT Password FROM SVNUsers WHERE Nickname = %s"
...
</Location>
Работает отлично. Но возникла необходимость извлекать пользователей из второй таблицы. Сначала я пробовал использовать UNION (конечно же!). Как это:
AuthDBDUserPWQuery "SELECT Password FROM SVNUsers WHERE Nickname = %s UNION SELECT Password FROM Users WHERE Nickname = %s"
Но это не работает, потому что у меня есть два оператора% s, а второй не заменяется ником. Затем я попытался объявить переменную SQL, записать в нее% s и использовать. Как это:
AuthDBDUserPWQuery "SET @userName = %s; SELECT Password FROM SVNUsers WHERE Nickname = @userName"
Но AuthDBDUserPWQuery не понимает переменные. Как это решить?
Спасибо!
Решением было использовать функции MySQL:
AuthDBDUserPWQuery "SELECT SVNAuthenticationFunction(%s) as Password"