2015-12-23 4 views
0

Я работаю над простой программой, где мне нужно открыть базу данных Sqlite3, написав код Ruby, но я получаю следующую ошибку при ее выполнении: 'initialize': не удалось открыть файл базы данных (Sqlite £: CantOpenException) из first.rb: 4: в 'новый' из first.rb: 4: в ''Не удалось открыть базу данных SQLite3 с помощью Ruby-программы

Этот код находится здесь:

require "sqlite3" 

# Open a database 
db = SQLite3::Database.open "C:\Users\aroraku\Desktop\SQL\adaptive.db" 


# Find a few rows 
db.execute(" 
Select count(uuid) as RegistredPeopleNo, strftime('%Y-%m',created_at) AS Month 
from users 
group by strftime('%Y-%m',created_at) 
order by Month;") do |row| 
    p row 
end 

Может кто-то пожалуйста, помогите мне с этой проблемой. Заранее спасибо

ответ

1

Я бы предположил, что ваша проблема в том, чтовнутри строки с двойными кавычками используется для запуска escape-последовательности. Например:

> puts "C:\Users\aroraku\Desktop\SQL\adaptive.db" 
C:UsersrorakuDesktopSQLdaptive.db 

Были также несколько звуковых сигналов от моего терминала, который я не могу copy'n'paste, что хорошо.

Вы должны удвоить обратную косую черту:

"C:\\Users\\aroraku\\Desktop\\SQL\\adaptive.db" 

или использовать прямые слеши вместо:

"C:/Users/aroraku/Desktop/SQL/adaptive.db" 

Окна исторически позволили вперед или назад слэши в именах путей, я не если это все еще верно, поэтому версия слэша может не работать.

Одиночные кавычки (как указано на Andrew Marshall) также вариант:

'C:\Users\aroraku\Desktop\SQL\adaptive.db' 

но вы можете столкнуться с проблемами, с некоторыми нечетными именами как обратный слэш все еще имеет смысл в некоторых узких случаях (например, '\\' и '\'') внутри строк с одной кавычкой.

+1

Или используйте одинарные кавычки. –

+0

@AndrewMarshall Правда, но вам все равно придется беспокоиться о некоторых невероятно редких случаях, и люди Ruby кажутся аллергия на одинарные кавычки. Я использую одинарные кавычки, если я не нуждаюсь только в том, что предлагают только двойные кавычки, но это кажется очень редким. –

Смежные вопросы