34 votes

NOTICES pour la séquence après avoir exécuté la migration dans rails sur postgresql Application

Lorsque j'ai exécuté ma migration dans une application Rails sur postgresql, j'ai obtenu les NOTICES suivants

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"

Mon fichier de migration contient 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

Je voudrais savoir

Que signifie cet avis ?

Comment éviter ces NOTICES ?

Quel sera l'impact de ces NOTICES sur l'application si elles ne sont pas évitées ?

Regards,

Salil

77voto

mu is too short Points 205090

Rails (ActiveRecord pour être plus précis) ajoute une fonction id à votre table et faire de cette colonne la clé primaire. Pour PostgreSQL, cette colonne sera de type serial . A serial colonne est essentiellement un entier de quatre octets combiné à une séquence pour fournir automatiquement des valeurs auto-incrémentées.

Le premier avis :

NOTICE : CREATE TABLE va créer une séquence implicite "notification_settings_id_seq" pour la colonne série "notification_settings.id".

vous indique simplement que PostgreSQL crée une séquence dans les coulisses pour que le fichier serial fonction de colonne.

Le deuxième avis :

NOTICE : CREATE TABLE / PRIMARY KEY va créer un index implicite "notification_settings_pkey" pour la table "notification_settings".

vous indique simplement que PostgreSQL crée un index pour aider à implémenter la clé primaire, même si vous ne le lui avez pas demandé explicitement.

Vous pouvez ignorer ces avis, ils sont juste informatifs. Si vous voulez les supprimer, vous pouvez ajouter min_messages: WARNING à la section appropriée de votre database.yml .

8voto

a_horse_with_no_name Points 100769

En plus de ce que Mu a dit :

Si vous ne voulez pas voir ces avis, vous pouvez les désactiver en donnant à client_min_messages la valeur warning (ou error).

Cela peut être fait au niveau de la session, en utilisant set client_min_messages = warning ou dans le fichier de configuration du serveur pour toutes les connexions :

http://www.postgresql.org/docs/current/static/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHEN

2voto

Grant Sayer Points 1134

Les NOTICES sont liés à la création de la séquence et à la façon dont Postgresql crée l'auto-incrément sur la colonne id.

Pour répondre aux autres questions :

Comment éviter les NOTICES

Dans le fichier database.yml, il suffit d'inclure min_messages : warning #magic sauce

Quel sera l'impact sur l'application si les NOTICES sont ignorés.

En gros, cela va augmenter la journalisation, surtout si vous travaillez en mode développement.

Voir http://www.ruby-forum.com/topic/468070 pour plus de détails

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X