我是Rails的初学者,在我的Windows 7机器上尝试了一些例子。
我收到以下错误:SQLite3::SQLException: table "entries" already exists
“entries”是一个已在另一个Rails应用程序中创建的表,我正在尝试尝试再次创建“条目”的类似示例。
Rails是否为每个应用程序在sqlite中创建了一个单独的数据库? (我也是Sqlite的新手)。
答案 0 :(得分:0)
默认情况下,当使用sqlite时,Rails使用名为development.sqlite3
,test.sqlite3
,production.sqlite3
的数据库,这些数据库是Rails项目的db
目录中的文件。
如果您的新应用程序与旧应用程序位于同一文件夹中,那么您最终将使用相同的数据库;或者,如果您的config/database.yml
文件指向数据库的某个公共位置。
答案 1 :(得分:0)
对于每个应用程序,应用程序的config文件夹中都有一个database.yml
文件。您可以使用数据库设置定义应用程序特有的数据库名称。可能你的两个项目都有相同的database.yml
文件。因此,您当前的应用程序也在尝试创建已存在的表(由您之前的应用程序的database.yml
文件创建)。
解决方案是更改特定于您的应用程序的database.yml
。
之后你可以运行:
rake db:create
rake db:migrate
按上述顺序,一切都会好的。
您也可以只执行rake db:drop
,然后执行上述两个命令而不修改任何database.yml
文件,但这会删除以前的数据库,并为此应用程序创建新数据库。但不建议这样做。