我运行以重启PostgreSQL的命令会删除我的所有数据。我应该如何重新启动以保存我的数据?

时间:2015-09-17 02:28:00

标签: database postgresql ruby-on-rails-4

我最大的问题是,每次关闭笔记本电脑时,我都会丢失所有数据。我刚开始用postgres学习rails。

那么如何才能在终端上正确启动和停止postgres数据库。

我在Mac OS X上。

这是我用它来启动它:

postgres -D /usr/local/var/postgres/data 

这是为了阻止它:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8 but i think what it does it removes it so i lose all my data 

2 个答案:

答案 0 :(得分:1)

简答(如果您没有时间):

pg_ctl stop -m immediate

应该立即关闭,隐含自动恢复(没有数据丢失)。但并不总是建议这样做,请阅读下面的原因。

长答案:2件事情需要注意:   1.您应该查找here。 -m选项允许三种模式。根据这是一个重型生产箱还是本地系统,您需要在三个选项(快速/智能/即时)之间进行选择。如果您在此页面上搜索“立即”一词,则会给出所有三个含义。   2.尽管如此,请阅读Description部分,了解模式以更清楚地了解为什么没有一个解决方案可以解决所有问题。

答案 1 :(得分:1)

您正在删除PostgreSQL安装,然后创建一个新安装。

你的命令:

rm -rf /usr/local/var/postgres &&
initdb /usr/local/var/postgres -E utf8 &&
postgres -D /usr/local/var/postgres/data

做的:

  • 删除PostgreSQL数据目录,删除所有数据
  • 创建一个新的空白PostgreSQL实例
  • 启动PostgreSQL实例

显然,这不是你想要的。

您应该使用记录的启动和停止特定PostgreSQL安装的方法。由于你正在使用/usr/local/var/postgres我猜你正在使用Homebrew来安装PostgreSQL,所以请参阅this answer。基本上,安装launchd plist文件并使用launchd。

不要运行您不理解的命令,并阅读文档;你会遇到这类问题。