2015-07-29 13 views
6

मैं एक निश्चित कॉलम के बाद माइग्रेशन के माध्यम से कॉलम जोड़ना चाहता हूं (सामान्य MySQL सूचकांक अद्वितीय इंडेक्स नहीं)। माइग्रेशन के माध्यम से sequelize.js के माध्यम से यह संभव है। यदि हाँ माइग्रेशन के माध्यम से इसके लिए कोई विकल्प नहीं है और नहीं।माइग्रेशन निर्दिष्ट कॉलम और इंडेक्स कॉलम के बाद कॉलम जोड़ें

क्या हम माइग्रेशन को अनुक्रमित करने में कस्टम क्वेरी निष्पादित कर सकते हैं।

नीचे मेरी मौजूदा माइग्रेशन फ़ाइल है।

'use strict'; 

module.exports = { 
    up: function (queryInterface, Sequelize) { 
    return queryInterface.addColumn('UserDetails', 'user_id', { 
     type: Sequelize.INTEGER, 
    }); 
    }, 

    down: function (queryInterface, Sequelize) { 
    return queryInterface.removeColumn('UserDetails', 'user_id'); 
    } 
}; 

उत्तर

1

जहाँ तक मुझे पता के रूप में वहाँ addColumn समारोह के माध्यम से इसे करने का कोई रास्ता नहीं है।

लेकिन तुम कच्चे SQL क्वेरी के माध्यम से यह कर सकते हैं:

ALTER TABLE UserDetails CHANGE COLUMN user_id user_id VARCHAR(50) AFTER some_column; 

आप इस तरह माइग्रेशन में कस्टम एसक्यूएल क्वेरी चला सकते हैं:

module.exports = { 
    up: function(queryInterface, Sequelize) { 
    return queryInterface.sequelize.query("ALTER TABLE UserDetails CHANGE COLUMN user_id user_id VARCHAR(50) AFTER some_column;") 
    }, 
    down: function(queryInterface, Sequelize) { 
    return true; 
    } 
}; 

के बाद से आप पहले से ही कस्टम एसक्यूएल उपयोग कर रहे हैं आप जोड़ सकते कच्चे एसक्यूएल के माध्यम से नया स्तंभ और स्तंभ आप choosed के बाद यह डाल:

ALTER TABLE UserDetails ADD COLUMN user_id VARCHAR(50) AFTER some_column; 
13

आपपारित कर सकते हैं कुछ निर्दिष्ट कॉलम के बाद कॉलम जोड़ने के विकल्पों मेंया before

'use strict'; 

module.exports = { 
up: function (queryInterface, Sequelize) { 
return queryInterface.addColumn('UserDetails', 'user_id', { 
    type: Sequelize.INTEGER, 
    after: "some_column" 
}); 
}, 

down: function (queryInterface, Sequelize) { 
return queryInterface.removeColumn('UserDetails', 'user_id'); 
} 
}; 
+0

पूरी तरह से काम करता है, धन्यवाद। –

+2

इसे सही उत्तर के रूप में स्वीकार किया जाना चाहिए। –

+1

Sequelize का कौन सा संस्करण यह काम कर रहा था? मैं सीएलआई संस्करण 3.9.1 पर हूं और ऐसा लगता है कि यह काम नहीं कर रहा है। –

संबंधित मुद्दे