Ich versuche gerade, eine neue Tabelle in meine Datenbank zu migrieren. Diese Tabelle ist die Benutzertabelle. Hier ist der Code, den ich habe:Knex.js Migrationen mit eindeutiger Einschränkungsfunktion
exports.up = function(knex, Promise) {
return knex.schema.createTableIfNotExists('users', function(table) {
table.increments('id').primary();
table.string('first_name').notNullable();
table.string('last_name').notNullable();
table.string('email').unique().notNullable();
table.string('password').notNullable();
table.timestamps(false, true);
}).then(() => {
console.log('Users Table is Created!');
})
};
exports.down = function(knex, Promies) {
return knex.schema.dropTable('users')
.then(() => {
console.log('Users Table has been Dropped!');
})
};
Dies gibt die zwei Fehler:
Knex:warning - migrations failed with error: alter tableusersadd uniqueusers_email_unique(email) - Key column 'email' doesn't exist in table
Error: Key column 'email' doesn't exist in table
Es scheint, dass das, was unique()
versucht, ein alter table zu tun ist, die Vorform auf eine Tabelle, die ich erstellen möchte. Daher der Fehler, dass die E-Mail-Spalte nicht existiert. Mache ich hier etwas falsch oder kann die unique()
Funktion in einer Spalte beim Erstellen einer Tabelle nicht ausgeführt werden? Ich habe Beispiele für die Verwendung der Funktion unique() in einer createTable in den Dokumenten gesehen. Ich weiß also nicht, warum das mit diesem Fehler reagieren würde.
Meine Datenbank wird erstellt und ich kann es sehen. Es scheint nur, dass die Bedingung unique()
nicht auf die E-Mail-Spalte angewendet wird, die auch nicht erstellt wird.