Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我的Rails数据库在哪里?_Ruby On Rails_Ruby_Postgresql - Fatal编程技术网

Ruby on rails 我的Rails数据库在哪里?

Ruby on rails 我的Rails数据库在哪里?,ruby-on-rails,ruby,postgresql,Ruby On Rails,Ruby,Postgresql,我花钱请人用RubyonRails创建了一个程序,它可以从中提取数据并将其放入Postgres数据库。程序目录中有标准Rails文件夹、应用程序、bin、config和其他目录 我试图查看表中的列列表。我认为最好的,或者说唯一的方法是登录到实际的数据库,然后打印出来。我试图使用psql命令登录,但它说: psql: FATAL: database "dan" does not exist 我不知道数据库在哪里,也不知道如何找到它 这是config/database.yml包含的内容: deve

我花钱请人用RubyonRails创建了一个程序,它可以从中提取数据并将其放入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
我的数据库在哪里? 如何使用一些linux命令(如find)自己查找数据库-在南'…'? 如何登录并打印名为games的表的所有列? 您的数据库运行在独立于Rails的服务器上,它将由您的编码人员设置。看起来您的数据库位于本地主机上。 它将取决于您的服务器操作系统。 如果希望在数据库中显示列名,则可以在Rails控制台中:

$ rails c
$ Game.column_names

使用普通PostgreSQL访问数据库

su username
psql
\db database_name;
要连接psql,必须指定数据库名称

如果您使用的是passwordauth,只需psql-U username dbname即可

如果您使用的是对等身份验证,那么sudo-u username psql dbname

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

psql -U dan danwork
并在提示时输入密码。如果需要,您可以使用~/.pgpass文件保存密码;要使用rails数据库控制台或rails数据库,请参阅pgpass文档

从:

rails dbconsole会计算出您正在使用的数据库,并将您放入您将使用的命令行界面中,还可以计算出要提供给它的命令行参数!。它支持MySQL、PostgreSQL、SQLite和SQLite3

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

要查看游戏表的内容,请执行以下操作:

如果您真的想使用psql-U,您可以找到这些参数,如中所述,并在此处进行解释:

~/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标志。

没有开发数据库?在任何情况下,prod数据库都称为sports,表示它在配置文件中的位置为database:sports。我正在根目录、db和config目录中尝试命令psql sports,它表示FATAL:database sports不存在。。。你是对的,这里有一个开发数据库,很抱歉我之前错过了。现在更新我的帖子您是否运行rake db:create和rake db:migrate来实际创建数据库?默认情况下,您将处于开发环境中,其中DB称为danwork。输入命令的位置不相关;psql对Rails环境一无所知。如果我理解正确的话,此人刚刚创建了应用程序,但还没有运行,只是代码?在这种情况下,您需要创建数据库rake db:create db:migrate,然后可以连接并检查columns@arnvald-他希望会有一些实际的数据,所以使用create创建一个新的数据库不会有帮助。这是一种多么迂回的方法啊。如果您使用的是passwordauth,只需psql-U username dbname即可。如果您使用的是对等身份验证,那么sudo-u username psql dbname。
~/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>$