У меня есть две базы данных, dev и production. Оба они имеют одинаковые таблицы и структуру столбцов.MySQL: Скопируйте определенные столбцы из одной базы данных в другую, сохраняя первичный ключ одинаковым.
Мне нужно переместить некоторые производственные данные в dev, сохранив одинаковые идентификаторы первичного ключа, но с предложением WHERE.
UPDATE
dev.tableA,
prod.tableA
SET
dev.tableA.title = prod.tableA.title,
dev.tableA.url_title = prod.tableA.url_title,
dev.tableA.status = prod.tableA.status,
dev.tableA.edit_date = prod.tableA.edit_date
WHERE
dev.tableA.entry_id = prod.tableA.entry_id
AND prod.tableA.channel_id = 7
Когда я запускаю вышеуказанный запрос, я получаю сообщение, связанное с строкой 0 строк.
Я также пробовал эту инструкцию, но снова с 0 строк.
UPDATE
dev.tableA dt
INNER JOIN
prod.tableA tt
ON
tt.entry_id = dt.entry_id
SET
dt.title = tt.title,
dt.url_title = tt.url_title,
dt.status = tt.status,
dt.edit_date = tt.edit_date
WHERE
tt.channel_id = 7;
Значит, есть данные с теми же 'entry_id' в базе данных dev, поскольку вы используете обновление и не вставляете? –
Это правильно. Но мне также нужно вставить несколько новых строк, которые были созданы в процессе производства, но я полагал, что это будет отдельный оператор INSERT, если не будет возможности обрабатывать оба одновременно. – KoalaKid
Скорее всего, вы можете сделать это с помощью 'INSERT IGNORE'. В качестве альтернативы, почему бы не запустить DELETE с этим WHERE в базе данных dev, за которым следует прямой INSERT? – LSerni