Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]max_allowed_packet, zwiększenie max_allowed_packet
Enikc
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 8.01.2015

Ostrzeżenie: (0%)
-----


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 ?

Ten post edytował Enikc 21.05.2015, 14:31:48
Go to the top of the page
+Quote Post
Xelah
post
Post #2





Grupa: Zarejestrowani
Postów: 139
Pomógł: 24
Dołączył: 12.05.2013
Skąd: Hamburg

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 16:05