Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток. Взываю к Вам, гуру MySQL.
Задача такая: есть два сервера, на них разные базы данных (имеется в виду названия), в них есть одинаковые по полям таблицы (таблицы называются одинаково). Необходимо перенести данные из база1.таблица1 в база2.таблица2. Все это должно срабатывать из php, который находится на первом сервере.
Как я пытаюсь сделать:
<?php
$hostname1 = "localhost";
$username1 = "root";
$password1 = "pass";
$link1 = mysql_connect($hostname1, $username1, $password1) or die ("mysql connect error1");
mysql_select_db("database1",$link1) or die (mysql_error());
$hostname2 = "localhost";
$username2 = "root";
$password2 = "pass";
$link2 = mysql_connect($hostname2, $username2, $password2) or die ("mysql connect error2");
mysql_select_db("database2",$link2) or die (mysql_error());
mysql_query("UPDATE record_value,$link2 FROM record_value,$link1") or die ("error");
mysql_close();
echo ("ok");
?>
(UPDATE приведен для примера, в идеале нужен INSERT.)
Соответственно ни чего не работает. Если в запросе писать одну базу - запрос работает (пример: mysql_query("SELECT * FROM record_value",$link1); ), а как указать в одном запросе несколько баз?
Заранее спасибо за терпение к новичку.
Отредактированно M@xim (23.04.2015 14:44:57)
Неактивен
select * from база1.таблица1;
потом в цикле mysql_fetch_array() и построчно insert into база2.таблица2 ...
Неактивен
Спасибо за совет, частично работает.
Числовые значения переносит нормально, а текст нет...
Отредактированно M@xim (23.04.2015 16:30:42)
Неактивен
Что значит "не нормально"?
Неактивен
Все работает. Еще раз спасибо
Неактивен
Можно было попробовать и одним запросом
INSERT INTO db2.tbl2 SELECT * FROM db1.tbl1
Неактивен
Парни, подскажите как в phpMyAdmin правильно записать этот запрос INSERT INTO db2.tbl2 SELECT * FROM db1.tbl1
INSERT INTO `yoga-xp_rdv.oc_customer` (`customer_id`, `store_id`, `firstname`, `lastname`, `email`, `telephone`, `fax`, `password`, `salt`, `cart`, `wishlist`, `newsletter`, `address_id`, `customer_group_id`, `ip`, `status`, `approved`, `token`, `date_added`)
SELECT `customer_id`+3, `store_id`, `firstname`, `lastname`, `email`, `telephone`, `fax`, '92e1010ba11194041901af424b0f95f022d89695', 'bc99a0a73', 'a:0:{}', '', 1, 1, 1, '81.91.45.75', 1, 1, '', '2015-06-26 14:19:02' FROM `yoga-xp_radugavostoka`.`oc_customer`;
commit;
Ответ MySQL: Документация
#1142 - SELECT command denied to user 'yoga-xp_rdv'@'localhost' for table 'oc_customer'
Неактивен
Запрос записан корректно, но у пользователя нет прав на таблицу 'oc_customer'. У вас права устроены так:
1. юзер yoga-xp_rdv имеет доступ к базе yoga-xp_rdv
2. полагаю, что юзер yoga-xp_radugavostoka имеет доступ к базе yoga-xp_radugavostoka
Нужно дать пользователю yoga-xp_rdv права на вторую базу.
Неактивен
rgbeast написал:
Запрос записан корректно, но у пользователя нет прав на таблицу 'oc_customer'. У вас права устроены так:
1. юзер yoga-xp_rdv имеет доступ к базе yoga-xp_rdv
2. полагаю, что юзер yoga-xp_radugavostoka имеет доступ к базе yoga-xp_radugavostoka
Нужно дать пользователю yoga-xp_rdv права на вторую базу.
Спасибо за быстрый ответ. Да это два пользователя. Подскажите пожалуйста где даются права?
Неактивен
Например, в панели хостинга.
Неактивен
rgbeast написал:
Например, в панели хостинга.
пока не нашел где, при выборе пользователя можно только его пароль изменить. Спрошу у ТП.
Неактивен
Ответ ТП на вопрос - как дать права пользователю.
- на shared хостинге это не разрешено.
Как локально дать права, например в denwer'e?
Неактивен
Попросите техподдержку дать права пользвателю к двум базам. Если это не разрешено, то придется искать другое решение или другой вариант хостинга.
Неактивен
rgbeast написал:
Попросите техподдержку дать права пользвателю к двум базам. Если это не разрешено, то придется искать другое решение или другой вариант хостинга.
Ответ ТП - на shared хостинге это не разрешено.
Придется локально все делать, потом переносить на хостинг.
Неактивен