问题
The migration selects data from one table and inserts the data into another table. While inserting, the sequelize adds backslash escape in varchar 'v_occupation' value which is throwing error in insertion.
I have tried replacements and replace on v_occuption but all in vain
const queryToUpdateExistingTable =
`INSERT INTO social_profile ( fk_user_id , fk_marital_status_id ,fk_military_service_id , v_occupation , fk_education_id , v_bio ,v_pets ,v_places_lived )
VALUES (:fk_user_id , :fk_marital_status_id, :fk_military_service_id, :v_occupation , :fk_education_id , :v_bio, :v_pets , :v_places_lived)
return queryInterface.sequelize.query(queryToUpdateExistingTable,
{type: queryInterface.sequelize.QueryTypes.INSERT,
replacements: {fk_user_id: uProfileData.id ,
fk_marital_status_id:uProfileData.fk_marital_status_id,
fk_military_service_id: uProfileData.fk_military_service_id,
v_occupation: uProfileData.v_occupation,
fk_education_id: uProfileData.fk_education_id,
v_bio: uProfileData.v_bio,
v_pets: uProfileData.v_pets,
v_places_lived: uProfileData.v_places_lived
}});});
回答1:
Try adding the v_occupation directly into the query string instead of using replacements. You can insert it by using + to add the strings or use Template String to insert values using placeholders in strings enclosed by backticks.
const queryToUpdateExistingTable = `
INSERT INTO social_profile
(
fk_user_id,
fk_marital_status_id,
fk_military_service_id,
v_occupation,
fk_education_id,
v_bio,
v_pets,
v_places_lived
)
VALUES
(
:fk_user_id,
:fk_marital_status_id,
:fk_military_service_id,
${uProfileData.v_occupation},
:fk_education_id,
:v_bio,
:v_pets,
:v_places_lived
)`
return queryInterface.sequelize.query(queryToUpdateExistingTable, {
type: queryInterface.sequelize.QueryTypes.INSERT,
replacements: {
fk_user_id: uProfileData.id,
fk_marital_status_id: uProfileData.fk_marital_status_id,
fk_military_service_id: uProfileData.fk_military_service_id,
fk_education_id: uProfileData.fk_education_id,
v_bio: uProfileData.v_bio,
v_pets: uProfileData.v_pets,
v_places_lived: uProfileData.v_places_lived
}
})
来源:https://stackoverflow.com/questions/58707210/how-to-fix-in-migration-a-raw-query-sequelize-ad-backslash-escape-in-varchar