Подтвердить что ты не робот

УВЕДОМЛЕНИЯ для последовательности после запуска миграции в рельсах на postgresql Application

Когда я запускаю миграцию в приложении Rails на postgresql, я получил следующие уведомления

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

Я хотел бы знать

что означают эти УВЕДОМЛЕНИЯ?

Как избежать этого УВЕДОМЛЕНИЯ?

Каким будет влияние таких УВЕДОМЛЕНИЙ на Приложение, если их не избежать?

Привет,

Salil

4b9b3361

Ответ 1

Rails (точнее, ActiveRecord) добавляет столбец id в вашу таблицу и делает этот столбец первичным ключом. Для PostgreSQL этот столбец будет иметь тип serial. A serial column по существу представляет собой четырехбайтное целое число в сочетании с последовательностью для автоматического предоставления значений автоматического увеличения.

Первое уведомление:

УВЕДОМЛЕНИЕ: CREATE TABLE создаст неявную последовательность "notification_settings_id_seq" для последовательного столбца "notification_settings.id"

просто сообщает вам, что PostgreSQL создает последовательность за кулисами, чтобы сделать функцию столбца serial.

Второе уведомление:

УВЕДОМЛЕНИЕ: CREATE TABLE/PRIMARY KEY создаст неявный индекс "notification_settings_pkey" для таблицы "notification_settings"

просто сообщает вам, что PostgreSQL создает индекс, чтобы помочь реализовать первичный ключ, даже если вы явно не задали его.

Вы можете просто игнорировать эти уведомления, они просто информативны. Если вы хотите их подавить, вы можете добавить min_messages: WARNING в соответствующий раздел вашего database.yml.

Ответ 2

В дополнение к тому, что сказал mu:

Если вы не хотите видеть эти уведомления, вы можете отключить их, установив 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