Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: maxymalna liczba rekordów dodawanych do tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
kk1975
Witam
Mam tabelę z takimi polami:
Kod
-"kod_produktu" - char50 not null primary key.
-"grupa_towarowa" - char100.
-"producent" - char50.
-"nazwa_produktu" - char150.
-"idkat" - int usigned.
-"cena_netto" - float6,2.
-"cena_brutto" - float6,2.
-"opis" - varchar255.
-"gwarancja" - char50.
-"stan_mag' - char50.


muszę dodać ponad 6tyś rekordów, a do bazy dodaje mi się tylko 1895 rekordów.
Gdzie jest problem?
Bardzo proszę o pomoc
TomASS
A jak dodajesz te rekordy? load data? Inserty? Jakiś skryp php? Tak na razie to trudno jest ocenić dlaczego dodaje Ci tylko tyle.

Ale z pewnością ani 1895 ani nawet 6 tyś rekordów nie zbliżają się do granicy max liczby rekordów w MySQL
DeyV
- błednie ustawiony klucz głowny?
- zbyt krótki czas wykonywania skryptu (execution_time) ?
- błędnie podawane dane w którymś z wierszy?
kk1975
Dane dodaje ze skryptu php, który pobiera je z bazy accesowej, wszystko dzieje się w pętli. dane dodaję za pomocą insert.
W jaki sposób ustawić czas wykonywania skryptu?
spenalzo
set_time_limit
Ja bym obstawiał, że po 30 sekundach ci sie skrypt przerywa.

A jeżeli to nic nie da, to możesz zrobić to w inny sposób - pamietaj, że w MySQLu możesz dodawać wartości tak:
  1. INSERT
  2. INTO tabela
  3. (pole1,pole2) VALUES (1,2) , (2,3), (3,4), (4,5)

Doda to 4 rekordy.

W ten sposób dodaje do swojej bazy (przez dysk sieciowy w sieci lokalnej, co troche spowalnia jak sieć zapchana tongue.gif) ponad 10 000 rekordów w czasie 5 sekund.
kk1975
Do skryptu dodałem funkcję, która wyświetla jakie rekordy zostają dodane do bazy.
Zgadza się skrypt przerywa się po 30sekundach, ale te 1895 rekordów dodaje w pierwszych 2 sekundach, następnie jakby się zapętlił i rekord 1896 jest powtarzany do czasu, kiedy skrypt się nie skończy i wtedy wyświetla błąd:
Kod
Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files\xampp\htdocs\psinfo\dodaj_produkt_baz.php on line 38


oto kawałek kodu z lini 38 z "dodaj_produkt_baz.php"
  1. <?php
  2.  
  3. $kod_produktu = $wynik->fields["Kod produktu"]->value;
  4. ?>

ale to jest tylko umieszczenie w zmiennej rekordów pobranych z bazy accesowej.
A funkcja umieszczająca dane w Mysql wygląda tak:
  1. <?php
  2. function rejestruj($kod_produktu,$producent,$nazwa_produktu,$idkat,$cena_netto,$cena_brutto,
  3. $opis,$gwarancja,$stan_mag)
  4. {
  5.  // jeżeli wszystko w porządku, umieszczenie w bazie danych
  6.  
  7. $wynik = mysql_query("insert into produkty values ('$kod_produktu', '$producent', '$nazwa_produktu', '$idkat', 
  8. '$cena_netto', '$cena_brutto', '$opis', '$gwarancja', '$stan_mag')");
  9.  
  10. if (!$wynik)
  11. return 'Rejestracja w bazie danych niemożliwa — proszę spróbować później.';
  12.  
  13. return true;
  14. }
  15. ?>

Z tym, że przypisywanie danych do zmiennych i funkcja zapisu danych do Mysql-a odbywa się w pętli
kszychu
a spróbuj do tych 1895 (1896) rekordów dodać kolejny "ręcznie"?
kk1975
Dziękuję bardzo za podpowiedzi, naprowadziły mnie na dobrą drogę i rozgryzłem temat, błąd był w skrypcie php
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.