Je reçois l'erreur suivante en essayant d'ajouter une colonne NOT NULL à une table existante. Pourquoi cela se passe-t-il? J'ai essayé rake db: réinitialiser en pensant que les enregistrements existants sont le problème, mais même après la réinitialisation de la DB, le problème persiste. Pouvez-vous s'il vous plaît m'aider à comprendre cela.Comment résoudre "Impossible d'ajouter une colonne NOT NULL avec la valeur par défaut NULL" dans SQLite3?
File Migration
class AddDivisionIdToProfile < ActiveRecord::Migration
def self.up
add_column :profiles, :division_id, :integer, :null => false
end
def self.down
remove_column :profiles, :division_id
end
end
Message d'erreur
SQLite3 :: SQLException: Impossible d'ajouter une colonne NOT NULL avec NULL valeur par défaut: ALTER TABLE "profils" ADD " division_id "nombre entier NOT NULL
Votre hypothèse sur il être déjà des lignes dans la table semble correcte, et serait avec à peu près tous les autres rdbms. Cependant, j'ai noté dans ma réponse que SQLite est une exception à cela. Cette erreur apparaît même lorsque la table est vide, j'ai donc posté une solution plus courte. –
Ce n'est pas correct - sqlite n'a aucun moyen de changer les colonnes. Je ne sais pas ce qu'est 'change_column', mais ce n'est pas sqlite. – Benubird
@Bububird, 'change_column' est une méthode API dans [Ruby on Rails migrations] (http://guides.rubyonrails.org/active_record_migrations.html), qui est ce que le PO demandait. –