Domanda

Sto cercando di eseguire una migrazione su un database esistente per cambiare il nome di colonna su un tavolo. Quando eseguo la migrazione, ottengo un errore che indica che i campi Blob / di testo non possono avere un valore predefinito. La colonna in questione è una colonna di testo, con un attributo non nullo, ma nessun valore predefinito.

La migrazione che Rails tentativi è:

ALTER TABLE xxxxx CAMBIO abcd testo ABCD DEFAULT '' NOT NULL

Ora, io non ho chiesto la migrazione per cambiare il tipo di colonna, ho chiesto solo per rinominare la colonna, quindi perché è la migrazione cercando di fare qualcosa per il tipo di colonna?

Ho Googled il problema, e non sono venuto su con una spiegazione o soluzione.

Qualsiasi aiuto apprezzato.

Vikram

È stato utile?

Soluzione

Ci sembra essere un biglietto irrisolto di lunga data su questo tema, come descritto qui:

rotaie Bug Report

comportamento predefinito

Rails è quello di rendere le colonne che sono NULL, in quanto questo impedisce falsi positivi sui controlli di presenza, ecc, quando si traduce stringhe vuote di nuovo in Ruby. Qualche possibilità si può ovviare a questo ridefinendo la tua colonna di testo per lavorare con valori NULL nella console MySQL?

Modifica

È possibile farlo nel vostro file di migrazione, non è il modo in Rails, ma è molto più bello di inviando una mail a tutti di cambiare le loro copie locali:

MyModel.connection.execute "ALTER TABLE xxxxx CHANGE abcd ABCD text DEFAULT NULL"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top