在 postgresql 应用程序的 rails 中运行迁移后的顺序注意事项
Posted
技术标签:
【中文标题】在 postgresql 应用程序的 rails 中运行迁移后的顺序注意事项【英文标题】:NOTICES for sequence after running migration in rails on postgresql Application 【发布时间】:2011-07-14 20:31:27 【问题描述】:当我在 postgresql 上的 Rails 应用程序中运行迁移时,我收到了以下通知
NOTICE: CREATE TABLE will create implicit sequence "notification_settings_id_seq" for serial column "notification_settings.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "notification_settings_pkey" for table "notification_settings"
我的迁移文件包含 088_create_notification_settings.rb
class CreateNotificationSettings < ActiveRecord::Migration
def self.up
create_table :notification_settings do |t|
t.integer :user_id
t.integer :notification_id
t.boolean :notification_on
t.boolean :outbound
end
end
def self.down
drop_table :notification_settings
end
end
我想知道
此通知的含义是什么?
如何避免此通知?
如果不避免此类通知会对应用程序产生什么影响?
问候,
萨利尔
【问题讨论】:
【参考方案1】:Rails(更准确地说是 ActiveRecord)正在将id
列添加到您的表中,并使该列成为主键。对于 PostgreSQL,此列的类型为 serial
。 serial
column 本质上是一个 4 字节整数与一个序列组合以自动提供自动递增值。
第一通知:
注意:CREATE TABLE 将为串行列“notification_settings.id”创建隐式序列“notification_settings_id_seq”
只是告诉你 PostgreSQL 在幕后创建了一个序列来生成 serial
列函数。
第二条通知:
注意:CREATE TABLE / PRIMARY KEY 将为表“notification_settings”创建隐式索引“notification_settings_pkey”
只是告诉你 PostgreSQL 正在创建一个索引来帮助实现主键,即使你没有明确要求它这样做。
您可以忽略这些通知,它们只是提供信息。如果您想抑制它们,可以将min_messages: WARNING
添加到您的database.yml
的相应部分。
【讨论】:
对于通过自制软件安装的 postgresql 9.2,您需要编辑 /usr/local/var/postgres/postgresql.conf 并设置client_min_messsages = warning
,database.yml 设置似乎不起作用。跨度>
@weston:你在database.yml
中尝试了什么? AFAIK 它应该仍然可以工作,但我没有设置 9.2 来检查。【参考方案2】:
除了穆所说的:
如果您不想看到这些通知,可以通过将 client_min_messages 设置为警告(或错误)来关闭它们。
这可以在会话级别使用set client_min_messages = warning
或在所有连接的服务器配置文件中完成:
http://www.postgresql.org/docs/current/static/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHEN
【讨论】:
我希望我能接受多个答案,但因为我不能,我只是给你投票。【参考方案3】:注意事项与序列的创建以及 Postgresql 在 id 列上创建自动增量的方式有关。
回答其他问题:
如何避免通知
在 database.yml 文件中简单地包含 min_messages:警告#magic sauce
如果忽略 NOTICES 会对申请产生什么影响。
基本上它会增加日志记录,尤其是在开发模式下运行时。
详情请见http://www.ruby-forum.com/topic/468070
【讨论】:
以上是关于在 postgresql 应用程序的 rails 中运行迁移后的顺序注意事项的主要内容,如果未能解决你的问题,请参考以下文章
在 postgresql 应用程序的 rails 中运行迁移后的顺序注意事项
在 Rails 应用程序中向 PostgreSQL 提供 SSL 证书
如何从 SQLite 迁移到 PostgreSQL (Rails)