Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]max_allowed_packet
Forum PHP.pl > Forum > Przedszkole
Enikc
Cześć znazłem takie kod:

Sprawdzanie max_allowed_packet
  1. $db = new mysqli( 'localhost', 'user', 'pass', 'dbname' );
  2. // to get the max_allowed_packet
  3. $maxp = $db->query( 'SELECT @@global.max_allowed_packet' )->fetch_array();
  4. echo $maxp[ 0 ];


serwer na homie daje 8388608

Przyklad zastosowania
  1. $sql = "some really long sql query...";
  2. $db->query( 'SET @@global.max_allowed_packet = ' . strlen( $sql ) + 1024 );
  3. $db->query( $sql );


Moje pytanie, czy to zadziała? I ile bitów (tak mysle) moge ustawic zamiast 1024,


Moj insert:

  1. <?
  2. $sql_git = "INSERT INTO " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', ean = '" . $this->db->escape($data['ean']) . "', jan = '" . $this->db->escape($data['jan']) . "', isbn = '" . $this->db->escape($data['isbn']) . "', mpn = '" . $this->db->escape($data['mpn']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', update_quantity = '" . (int)$data['update_quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . (int)$data['date_available'] . "', release_year = '" . $this->db->escape($data['release_year']) . "', binding = '" . $this->db->escape($data['binding']) . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', update_price = '" . (int)$data['update_price'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . $this->db->escape($data['tax_class_id']) . "', sort_order = '" . (int)$data['sort_order'] . "', date_added = NOW()";
  3. $this->db->query( 'SET @@global.max_allowed_packet = ' . strlen( $sql_git ) + 1024 );
  4. $this->db->query( sql_git );
  5. ?>


Notice: Error: 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 '1024' at line 1
Error No: 1064



localhost
?
information_schema
?
SESSION_VARIABLES

VARIABLE_NAME VARIABLE_VALUE
SLAVE_MAX_ALLOWED_PACKET 1073741824
MAX_ALLOWED_PACKET 8388608



Moge to przekroczyć jeżeli jest ustawione na serwerze ?
Xelah
Wątpię, żebyś miał uprawnienia do ustawiania zmiennych globalnych, ale jeśli tak to będziesz miał musiał pokombinować, bo zmienna globalna będzie widoczna dopiero dla kolejnego połączenia. Czyli musisz zrobić coś jak:

  1. SET GLOBAL max_allowed_packet=1024;


a potem się rozłączyć i połączyć ponownie.
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.