Rails是否为每个应用程序创建单独的数据库

时间:2013-03-05 09:45:48

标签: ruby-on-rails sqlite

我是Rails的初学者,在我的Windows 7机器上尝试了一些例子。

我收到以下错误:SQLite3::SQLException: table "entries" already exists

“entries”是一个已在另一个Rails应用程序中创建的表,我正在尝试尝试再次创建“条目”的类似示例。

Rails是否为每个应用程序在sqlite中创建了一个单独的数据库? (我也是Sqlite的新手)。

2 个答案:

答案 0 :(得分:0)

默认情况下,当使用sqlite时,Rails使用名为development.sqlite3test.sqlite3production.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文件,但这会删除以前的数据库,并为此应用程序创建新数据库。但不建议这样做。