Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Kopiowanie z jednej bazy do drugiej
Forum PHP.pl > Forum > Przedszkole
kamil_lk
Witam.

Usiłuję skopiować sobie dane z tabeli w jednej bazie do tabeli z identyczną strukturą do drugiej bazy.
Moje zapytanie
  1. SELECT * INTO `baza2.logs` FROM `baza1.logs`


Niestety nic mi się nie kopiuje.
Obydwie bazy są na tym samym serwerze (aktualnie próbuję to zrobić lokalnie).

Ma ktoś jakiś pomysł?
c4ash
A sprobuj tego:
Kod
INSERT INTO baza2.logs SELECT * FROM baza1.logs
kamil_lk
a da się zrobić tak, że od razu kasuje mi z baza1 te dane co przeniosło do baza2?
c4ash
DROP TABLE ?
kamil_lk
Tak, wiem. Ale czy mogę to zrobić w jednym zapytaniu, czy muszę oddzielnie?
c4ash
A prawde mowiac tego to nie testowalem nigdy. Jesli masz sposobnosc (tzn masz jakies wolne tabele) to sprobuj dodac na koncu AND DROP TABLE baza1.logs
abjk
To może trochę pomóc:
  1. CREATE TABLE new_tbl SELECT * FROM orig_tbl;
kamil_lk
Później popróbuję pousuwać. Jak na razie mam poniższy problem.

Mając model, w którym nawiązuję połączenie do bazy PDO w konstruktorze robię sobie uchwyt do bazy1
  1. $this->pdo = parent::getHandler();


I tutaj leży kolejny problem, ponieważ nie wykonuje mi się zapytanie w funkcji getLogs()
  1. public function getLogs($value){
  2.  
  3. $count = $this->pdo->query("SELECT COUNT(*) FROM `logs`");
  4. $count = $count->fetch();
  5. if($count[0]>$value){
  6. $limit = $count[0] - $value;
  7. $result = $pdo->prepare("INSERT INTO baza2.logs SELECT * FROM baza1.logs ORDER BY `created_at` ASC LIMIT :limit"); //to się nie wykonuje
  8. $result->bindValue(':limit', $limit, PDO::PARAM_INT);
  9. $result->execute();
  10. }
  11. }


Czy przy pomocy PDO jest możliwość wykonania takiego zapytania, czy może ja gdzieś robię błąd?
Turson
Spróbuj
  1. public function getLogs($value){
  2.  
  3. $count = $this->pdo->query("SELECT COUNT(*) FROM `logs`");
  4. $count = $count->fetch();
  5. if($count[0]>$value){
  6. $limit = $count[0] - $value;
  7. $result = $pdo->exec("INSERT INTO baza2.logs SELECT * FROM baza1.logs ORDER BY `created_at` ASC LIMIT ".$limit);
  8. }
  9. }
kamil_lk
Okazało się, że moja metoda działa, ale tylko lokalnie.
Po podpięciu bazy na serwerze już nie. Zapewne są jakieś ograniczenia na to, czy może się mylę?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.