Προς το περιεχόμενο

MySql - max_allowed_packet


andreaseto

Προτεινόμενες αναρτήσεις

Γεια σας,

 

δε ξέρω αν είναι η κατάλληλη ενότητα αλλά χρειάζομαι τη βοήθεια όσων ξέρουν. Πως μπορώ να αλλάξω τη μεταβλητή max_allowed_packet της MySql στο Leopard; Έχω ψάξει στο google αλλά δεν έχω καταφέρει να βγάλω άκρη. Μπορεί να μου πει κάποιος τη διαδικασία;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

αυτο δεν εχει να κανει με leopard συγκεκριμένα.Τέσπα, πρεπει να ρυθμίσεις το αρχειο my.cnf

Για να το βρεις κανε απο Terminal

locate my.cnf

(Το δικό μου ειναι το /private/etc/my.cnf)

Ανοιξε το my.cnf με ενα text editor και αλλαξε τη γραμμή

max_allowed_packet

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καταρχήν ευχαριστώ για την απάντηση. Εδώ είναι το πρόβλημα όμως. Aυτό που λες το έχω κάνει! Τα περιεχόμενα του αρχείου είναι τα εξής (copy - paste):

 

[mysqld]

#How many threads we should keep in a cache for reuse.

thread_cache_size=20

max_allowed_packet = 200M

 

Δε ξέρω αν λείπει κάτι άλλο και αν τότε είχα σβήσει τίποτε άλλο. Πάει καιρός που το είχα κάνει αλλά πλέον είναι αναγκαίο να μεγαλώσει (άσχετο αλλά υπάρχει και ένα αρχείο my.cnf.old που δε θυμάμαι μήπως το είχα δημιουργήσει εγώ, πάντως είναι κενό). Το θέμα είναι ότι όταν ξεκινάω τη mysql χειροκίνητα** από την κονσόλα αυτό δεν εφαρμόζεται. Ιδού όταν ανοίγω την κονσόλα τι φαίνεται (copy-paste):

 

Last login: Sun Oct 12 02:45:20 on console

Macintosh-2:~ Andreas$ sudo /usr/local/mysql/support-files/mysql.server start

Password:

Warning: World-writable config file '/etc/my.cnf' is ignored

Warning: World-writable config file '/etc/my.cnf' is ignored

Starting MySQL

. SUCCESS!

Macintosh-2:~ Andreas$

 

Καμιά ιδέα;

 

** To ότι ρώτησα στο αρχικό μου post για Leopard δεν ήταν τυχαίο. Όταν άλλαξα από Tiger σε Leopard η MySql σταμάτησε να εκκινεί αυτόματα όποτε ξεκινούσε ο υπολογιστής και έτσι κάθε φορά την ξεκινάω χειροκίνητα από την κονσόλα. Ρώτησα για σιγουριά μήπως υπάρχει κάτι που διαφεύγει.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

απο το αρχειο my.cnf λειπουν πολλά γιαυτο και αγνοειται απο τον mysql deamon

ενδεικτικά το κομμάτι του [mysqld] στο αρχειο my.cnf έχει ως εξής:

[mysqld]

port = 3306

socket = /var/mysql/mysql.sock

skip-locking

key_buffer_size=16

max_allowed_packet = 1M

table_cache = 4

sort_buffer_size=64

read_buffer_size=256

read_rnd_buffer_size=256

net_buffer_length=2

thread_stack=64

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δε ξέρω γιατί αλλά δε με αφήνει να το σώσω. Πάω από το δεξί κλικ > get info να αλλάξω τις άδειες αλλά δε με αφήνει. Γιατί? Yποτίθεται ότι είμαι ο admin συν ότι παλαιότερα το είχα αλλάξει...

 

ΥΓ. Έχω εγκαταστήσει το MainMenu και μπορώ από κεί να ενεργοποιώ την προβολή κρυφών αρχείων στον Finder.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

μα δε πρέπει να αλλάξεις δικαιώματα ή ιδιοκτήτη. Πρέπει να κάνεις sudo.Αν ξέρεις να δουλεύεις το vi κανε απο Terminal

sudo vi /private/etc/my.cnf

αλλιώς βρες text editor που να υποστηρίζει sudo mode.(πχ, ξέρω οτι τα Coda/BBEdit/TextMate το υποστιρίζουν...ενδεχομένως και το TextWrangler που ειναι και free...δε ξέρω..ψάξτο)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Είχα ξεχάσει το sudo, σωστά. Έκανα λοιπόν την αλλαγή στο αρχείο και πράγματι δε μου πέταξε ότι το αρχείο αγνοήθηκε. Επακριβώς τα περιεχόμενα πλέον είναι:

 

[mysqld]

port = 3306

socket = /var/mysql/mysql.sock

skip-locking

key_buffer_size=16

#How many threads we should keep in a cache for reuse.

thread_cache_size=20

max_allowed_packet = 200M

table_cache = 4

sort_buffer_size=64

read_buffer_size=256

read_rnd_buffer_size=256

net_buffer_length=2

thread_stack=64

 

Κατάφερα λοιπόν να κάνω upload ένα αρχείο των 2.3 ΜΒ αυτή τη φορά που παλαιότερα δε γινόταν. Το θέμα είναι ότι πήγα να κάνω upload ένα αρχείο των 19 MB και πάλι δε τα κατάφερε. Αυτή τη φορά ήταν άλλο το μήνυμα ωστόσο αφού δε μου είπε για τη μεταβλητή max_allowed_packet αλλά το μήνυμα ήταν το εξής:

 

MySqlFileeDAO insert Exception:-> com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'fileContent' at row 1

 

Το fileContent ήταν mediumblob και το έκανα longblob αλλά και πάλι...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

δοκίμασε είτε να τρέξεις σαv query αμέσως μετά τη σύνδεση

SET global sql_mode='STRICT_TRANS_TABLES'; ή ενσωμάτωσε στο jdbc connection string το 'jdbcCompliantTruncation=false'

π.χ. "jdbc:mysql://localhost/MYDB?jdbcCompliantTruncation=false"

κάποτε ειχα αντιμετωπίσει ενα παρομοιο προβλημα αλλα δε θυμάμαι τωρα πως ακριβώς το ελυσα...αν βρω τον κωδικα θα σου πω ακριβως...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

π.χ.

μετά το connection στη ΒΔ(στο σημείο του κώδικα που κάνεις establish τη σύνδεσή σου)

κάνεις mydbcon.stmt.execute("SET global sql_mode=\'STRICT_TRANS_TABLES\'");

οπου mydbcon ειναι το στιγμιότυπο σύνδεσής σου, stmt είναι το sql statement

κατι τέτοιο δηλαδή...it should work...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

π.χ.

μετά το connection στη ΒΔ(στο σημείο του κώδικα που κάνεις establish τη σύνδεσή σου)

κάνεις mydbcon.stmt.execute("SET global sql_mode=\'STRICT_TRANS_TABLES\'");

οπου mydbcon ειναι το στιγμιότυπο σύνδεσής σου, stmt είναι το sql statement

κατι τέτοιο δηλαδή...it should work...

 

Μπα δε δούλεψε... :-(

Ακολουθεί όλος ο κώδικας της σχετικής συνάρτησης σε περίπτωση που κάτι δεν έκανα καλά.

 

 

public int insertFilee(Filee filee)

{

Connection con = null;

PreparedStatement stmt = null;

 

try

{

con = MySqlDAOFactory.createConnection();

Statement stmtSimple = con.createStatement();

stmtSimple.execute("SET global sql_mode=\'STRICT_TRANS_TABLES\'");

stmt = con.prepareStatement("CALL insert_file(?,?,?,?,?,?)");

 

ResultSet rs = null;

 

if (filee != null)

{

FileItem uploadedFile = filee.getFileContent();

stmt.setInt(1, filee.getDocument().getId());

stmt.setString(2, filee.getVersion());

 

if(filee.getNextVersionOf() != null)

stmt.setInt(3, filee.getNextVersionOf().getId());

else

stmt.setString(3, null);

InputStream uploadedStream = uploadedFile.getInputStream();

stmt.setBinaryStream(4,uploadedStream, (int)uploadedFile.getSize());

stmt.setString(5, filee.getDescOfChanges());

stmt.setInt(6, filee.getCreator().getId());

stmt.executeUpdate();

uploadedStream.close();

 

rs = stmt.executeQuery("SELECT LAST_INSERT_ID()");

 

if (rs.next())

{

int newId = rs.getInt(1);

con.close();

stmt.close();

 

return newId;

}

else

{

con.close();

stmt.close();

System.out.println("abort abort
:P
in MySqlFileeDAO!");// throw an exception from here

return -1;

}

}

else

{

con.close();

stmt.close();

 

return -1;

}

}

catch (Exception e) //SQLException, IOException

{

System.out.println("MySqlFileeDAO insert Exception:-> " + e);

 

try

{

con.close();

stmt.close();

return -1;

}

catch(Exception e2)

{

System.out.println("MySqlFileeDAO insert Catch Exception:-> " + e2);

return -1;

}

}

}

 

 

Όπως και να έχει ευχαριστώ που ασχολείσαι με το πρόβλημα μου! :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...