我的Rails数据库在哪里?

时间:2014-03-14 12:27:17

标签: ruby-on-rails ruby postgresql

我付钱给某人用Ruby on Rails创建一个程序,它会抓取数据并将其放入Postgres数据库。在程序的目录中是标准的Rails文件夹,应用程序," bin"," config"和其他目录。

我试图查看表格中的列列表。我认为最好或唯一的方法是登录实际的数据库并打印出来。我试图使用" psql"登录命令,但它说:

psql: FATAL: database "dan" does not exist

我不确定数据库的位置,或者我如何找到它。

这是config / database.yml包含的内容:

development:
  adapter: postgresql
  database: danwork
  pool: 5
  timeout: 5000
  encoding: unicode
  username: dan
  password: supersecretpassword

test:
  adapter: sqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000

production:
  adapter: postgresql
  database: sports
  pool: 5
  timeout: 5000
  encoding: unicode
  username: namename
  password: sports_db
  1. 我的数据库在哪里?
  2. 如何使用某些linux命令(例如find . -iname '...'
  3. )自行查找数据库
  4. 如何登录并打印出名为" games"?
  5. 的表格的所有列

4 个答案:

答案 0 :(得分:1)

  1. 您的数据库在独立于Rails的服务器上运行(它将由您的编码器设置)。看起来您的数据库位于您的本地主机上。
  2. 这将取决于您的服务器操作系统。
  3. 如果您希望在数据库中显示列名,那么您将能够在Rails控制台中do this

    $ rails c
    $ Game.column_names
    

答案 1 :(得分:1)

您需要rails dbconsolerails db

来自Rails Guide

  

rails dbconsole确定您正在使用哪个数据库并将其放入您将使用它的任何命令行界面(并计算出命令行参数也可以给它!)。它支持MySQL,PostgreSQL,SQLite和SQLite3。

     

您还可以使用别名“db”来调用dbconsole:rails db

要查看games表的内容:

~/Documents/workspace/<project-dir>$ rails db
psql (9.6.3)
Type "help" for help.

development=# select * from games;
 id | date | description |         city         | state 
----+------+-------------+----------------------+-------
  1 |      |             | Boston               | MA
  2 |      |             | Seattle              | WA
(2 rows)

development=# \q
~/Documents/workspace/<project-dir>$

如果确实想要使用psql -U <username> <dbname>,您可以按this answer中所述找到这些参数并在此处解释:

~/Documents/workspace/<project-dir>$ rails c
Loading development environment (Rails 4.1.4)
2.3.1 :001 > Rails.configuration.database_configuration[Rails.env]
 => {"adapter"=>"postgresql", "encoding"=>"unicode", "pool"=>5, "database"=>"development"} 
2.3.1 :002 > exit
~/Documents/workspace/<project-dir>$ psql development
psql (9.6.3)
Type "help" for help.

development=# \q
~/Documents/workspace/<project-dir>$

如您所见,如果没有返回用户名,则您不会需要-U标记。

答案 2 :(得分:0)

使用普通的PostgreSQL访问您的数据库

su username
psql
\db database_name;

答案 3 :(得分:0)

要与psql连接,您必须指定数据库名称。

如果您使用密码验证,只需psql -U username dbname

如果您使用peer身份验证,sudo -u username psql dbname

在您的情况下,您似乎使用密码验证并连接到本地主机,因此我建议:

psql -U dan danwork

并在提示时输入密码。 (如果需要,您可以使用~/.pgpass文件保存密码;请参阅pgpass文档)