Błąd podczas importu bazy danych

0

Witajcie, podczas importu bazy danych spotkało mnie niemiłe zdarzenie.. wyrzucenie błędu o treści:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '<!DOCTYPE html PUBLIC "-W3CDTD XHTML 1.0 Transitional//EN"
"http://www.w' at line 327

Wiecie co może być powodem wyplucia takiego komunikatu ?

0

Importowany plik posiada deklaracją DOCTYPE charakterystyczną dla dokumentów HTML (stron internetowych). Upewnij się, że plik który próbujesz zaimportować jest poprawny.
Sprawdź również czy przypadkiem wartość w linijce 327 nie 'escapuje' Ci napisu i zamiast jako string traktowany jest jako polecenie.

0

Linia w bazie danych o numerze 327 ma postać:

325 --
326 -- Struktura tabeli dla ps_accessory
327 --

Baza importuje się ale nie w całości.. :/

ps_accessory znajduje się w tych pojedynczych, ukośnych cudzysłowach, których nie wyświetla w poście..

0

Zdaje się, że 327 to numer linii po wycięciu komentarzy.
Wyszukaj w importowanym pliku tekstu na którym wywala się import:
PUBLIC "-W3CDTD XHTML 1.0 Transitional//EN"

Prawdopodobnie kombinacja cudzysłowów i apostrofów wywala zapytanie.

Importujesz przez zwykłe wykonanie pliku wcześniej zdumpowanej bazy (mysqldump)?

0

Wygląda to trochę dziwnie, ponieważ istnieje jedna taka fraza w linii: 53667
Czyli prawie na samym końcu i tam mamy kod html aż do końca pliku:
pierwsza linia:

<!DOCTYPE html PUBLIC "-*W3C*DTD XHTML 1.0 Transitional//EN" ...

ostatnie linie:

</script> </body> </html> �θ�

Wyrzuciłem cały kod html z końca bazy i wygląda jakby było ok.. ale czy to nie będzie miała wpływu na poprawny import ?

0

W tym miejscu wywala się import.

Wklej kompletny fragment pliku, który importujesz z początkowym fragmentem tej linii, tak, żeby kończyło się mniej więcej na:

<!DOCTYPE html PUBLIC "-W3CDTD XHTML 1.0 Transitional//EN"
    "http://www.

Przed tym pewnie masz jeszcze jakieś polecenia SQLa, apostrofy, cudzysłowy, nawiasy? Jaką metodą importujesz i jaką eksportowałeś? mysqldump? SELECT ... INTO OUTFILE i importujesz poprzez LOAD INFILE ... INTO??

Edit: Jeśli wywaliłeś kod HTML z końca bazy to po prostu komórka w której ten HTML miał być będzie pusta. Nie wiem co to za baza, ale to może być bardzo ważny fragment (np. kod wyświetlanej strony).

0

Eksportuję za pomocą phpMyAdmin i tak samo wykonują import -> pozostałe ustawienia domyślne.
Plik sql jest zbyt duży więc wybieram jeszcze opcję pakowania .. .

Przed usuniętym kodem, który powodował błąd mam:
INSERT INTO ps_connections (id_connections, id_guest, id_page, ip_address, date_add, http_referer) VALUES ....
....
....
....
(32364, 28662, 39, 1597131034, '2012-02-28 0837', '');
<--- i tutaj był ten kod aż do samego końca

Po usunięciu tego kodu i podzieleniu SqlDumpSplitter'em pliku sql import został wykonany prawidłowo... muszę zweryfikować czy niczego nie brakuje .. ale skoro po tym błędnym kodzie nie występowały żadne polecania sql to powinno być ok ale pewności nigdy nie ma.. .

Jakie jest Twoje zdanie ?
Dziękuję za pomoc.

Edit..
Jednak brakuje części tabel... widocznie eksport uwala się w tym miejscu .. .
Spróbuję eksportować jeszcze raz bazę ale bez tej tabeli ps_connections -> która raczej nie będzie przydatna, ponieważ zawiera historię "odwiedzin" -> jest wielka i zasyfiona :)

0

Jeśli chodzi Ci o znalezienie obejścia problemu, to jeśli ps_connections jest zbędna - rzeczywiście możesz jej po prostu nie eksportować.
Jeśli jednak możesz mieć takie problemy częściej, to chyba lepiej znaleźć konkretną przyczynę i rozwiązanie, a nie obejście :)

Trochę dziwne, żeby PhpMyAdmin sobie nie radził z poprawnym eksportem... tak czy inaczej - możesz wrzucić ten fragment pliku z insertem wiersza, który się wywala (wraz z kodem HTML, który usunąłeś). Tam musi być jakiś niepoprawny mix znaków, który powoduje zakończenie napisu i powoduje syntax error w SQLu.

Edit: Wróćć... dopiero teraz do mnie dotarło co tam napisałeś.

(32364, 28662, 39, 1597131034, '2012-02-28 0837', ''); - tak wyglądała końcówka inserta?
A pod nia normalnie miałeś HTMLa, czyli:

(32364, 28662, 39, 1597131034, '2012-02-28 08:31:37', '');
<!DOCTYPE html PUBLIC "-W3CDTD XHTML 1.0 Transitional//EN"
    "http://www.

W takiej sytuacji jest to jakiś dziwny błąd podczas eksportu danych. Masz wymieszane polecenia SQL z HTMLem. Możesz spróbować innym narzędziem - 'adminer' czy coś w tym stylu albo zwykłym, dobrym mysqldump'em.

0

OK. dziękuję serdecznie za pomoc.. zabieram się do okrajania :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1