Symbole zastępcze (np. $1
, $2
, ...) są dla wartości. Nazwa bazy danych (lub nazwa tabeli, nazwa kolumny, ...) to identyfikator. Jest to podobne do różnicy między nazwą zmiennej a wartością, którą zmienna posiada w Ruby.
Jeśli potrzebujesz dynamicznie wstawić identyfikator w jakimś SQL, musisz użyć interpolacji ciągów i specjalnego przeznaczenia quote_ident
metoda, aby upewnić się, że cytujesz ją prawidłowo. A więc coś bardziej takiego:
db_name = conn.quote_ident(db_name)
res = conn.exec("CREATE DATABASE #{db_name}")