2017-01-19 3 views
1

Ich benutze sqlite. Ich muss eine date Spalte not nullable erstellen. Ich versuche es, aber nicht funktioniert.Wie erstelle ich eine Datumsspalte, die nicht nullbar ist?

return knex.schema.table("my_table", (table) => { 
    table.date("important_day").notNullable().defaultTo(knex.fn.now()); 
}); 

Mit diesem Code erhielt ich diese Fehlermeldung:

Unhandled rejection Error: SQLITE_ERROR : Cannot add a column with non-constant default. Knex:warning - migrations failed with error: alter table minisermao add column diaminisermao date not null default CURRENT_TIMESTAMP - SQLITE_ERROR : Cannot add a column with non-constant default

Wie es zu beheben?

Antwort

0

die Tat für die Tabelle erstellen wir haben ein okes Ergebnis:

exports.up = function(knex, Promise) { 
    return knex.schema.createTable("foo", function(tb){ 
    tb.date("xpto").notNullable().defaultTo(knex.fn.now()); 
    }) 
}; 

exports.down = function(knex, Promise) { 
    return knex.schema.dropTable("foo"); 
}; 

jedoch für alte Tabellenoperationen es uns einen Fehler gibt.

wenn möglich, versuchen Sie Folgendes:

ein Migrate machen die aktuelle Tabelle zu löschen:

exports.up = function(knex, Promise) { 
    return knex.schema.dropTable("foo"); 
}; 

exports.down = function(knex, Promise) { 
    return knex.schema.createTable("foo", function(tb){ 
    tb.date("xpto").notNullable().defaultTo(knex.fn.now()); 
    }); 
}; 

dann eine zweite Migrate machen wieder die Tabelle zu erstellen.

Ich schlage vor, ein solcher Ansatz, weil, wenn das Projekt in Produktion installiert sind, wird es nicht einen gesunden Ansatz bereits ausgeführt Migrationen zu ändern.

hoffe es hilft.

UPDATE:

die gleiche alten table funktioniert einwandfrei auf postgresql.

Verwandte Themen