当我在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
我想知道
这个通知意味着什么?
如何避免此通知?
如果不避免,此类通知对申请会产生什么影响?
此致
萨里尔
答案 0 :(得分:77)
Rails(ActiveRecord更精确)是在表中添加id
列,并将此列作为主键。对于PostgreSQL,此列将具有类型serial
。 serial
column本质上是一个四字节整数,与一个自动提供自动递增值的序列相结合。
第一个通知:
注意: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
的相应部分。
答案 1 :(得分:8)
除了mu所说的:
如果您不想看到这些通知,可以通过将client_min_messages设置为警告(或错误)来关闭它们。
这可以在会话级别上使用set client_min_messages = warning
或在服务器的配置文件中为所有连接完成:
答案 2 :(得分:2)
NOTICES与序列的创建以及Postgresql在id列上创建自动增量的方式有关。
回答其他问题:
如何避免通知
在database.yml文件中只需包含 min_messages:警告#magic酱
如果忽略NOTICES,对申请会有什么影响。
基本上它会增加日志记录,尤其是在开发模式下运行时。
有关详细信息,请参阅http://www.ruby-forum.com/topic/468070