andreaseto Δημοσ. 10 Οκτωβρίου 2008 Share Δημοσ. 10 Οκτωβρίου 2008 Γεια σας, δε ξέρω αν είναι η κατάλληλη ενότητα αλλά χρειάζομαι τη βοήθεια όσων ξέρουν. Πως μπορώ να αλλάξω τη μεταβλητή max_allowed_packet της MySql στο Leopard; Έχω ψάξει στο google αλλά δεν έχω καταφέρει να βγάλω άκρη. Μπορεί να μου πει κάποιος τη διαδικασία; Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Επισκέπτης Δημοσ. 11 Οκτωβρίου 2008 Share Δημοσ. 11 Οκτωβρίου 2008 αυτο δεν εχει να κανει με leopard συγκεκριμένα.Τέσπα, πρεπει να ρυθμίσεις το αρχειο my.cnf Για να το βρεις κανε απο Terminal locate my.cnf (Το δικό μου ειναι το /private/etc/my.cnf) Ανοιξε το my.cnf με ενα text editor και αλλαξε τη γραμμή max_allowed_packet Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
andreaseto Δημοσ. 12 Οκτωβρίου 2008 Μέλος Share Δημοσ. 12 Οκτωβρίου 2008 Καταρχήν ευχαριστώ για την απάντηση. Εδώ είναι το πρόβλημα όμως. 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 σταμάτησε να εκκινεί αυτόματα όποτε ξεκινούσε ο υπολογιστής και έτσι κάθε φορά την ξεκινάω χειροκίνητα από την κονσόλα. Ρώτησα για σιγουριά μήπως υπάρχει κάτι που διαφεύγει. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Επισκέπτης Δημοσ. 13 Οκτωβρίου 2008 Share Δημοσ. 13 Οκτωβρίου 2008 απο το αρχειο 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 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
andreaseto Δημοσ. 13 Οκτωβρίου 2008 Μέλος Share Δημοσ. 13 Οκτωβρίου 2008 Δε ξέρω γιατί αλλά δε με αφήνει να το σώσω. Πάω από το δεξί κλικ > get info να αλλάξω τις άδειες αλλά δε με αφήνει. Γιατί? Yποτίθεται ότι είμαι ο admin συν ότι παλαιότερα το είχα αλλάξει... ΥΓ. Έχω εγκαταστήσει το MainMenu και μπορώ από κεί να ενεργοποιώ την προβολή κρυφών αρχείων στον Finder. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Επισκέπτης Δημοσ. 14 Οκτωβρίου 2008 Share Δημοσ. 14 Οκτωβρίου 2008 μα δε πρέπει να αλλάξεις δικαιώματα ή ιδιοκτήτη. Πρέπει να κάνεις sudo.Αν ξέρεις να δουλεύεις το vi κανε απο Terminal sudo vi /private/etc/my.cnf αλλιώς βρες text editor που να υποστηρίζει sudo mode.(πχ, ξέρω οτι τα Coda/BBEdit/TextMate το υποστιρίζουν...ενδεχομένως και το TextWrangler που ειναι και free...δε ξέρω..ψάξτο) Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
andreaseto Δημοσ. 14 Οκτωβρίου 2008 Μέλος Share Δημοσ. 14 Οκτωβρίου 2008 Είχα ξεχάσει το 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 αλλά και πάλι... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Επισκέπτης Δημοσ. 14 Οκτωβρίου 2008 Share Δημοσ. 14 Οκτωβρίου 2008 δοκίμασε είτε να τρέξεις σαv query αμέσως μετά τη σύνδεση SET global sql_mode='STRICT_TRANS_TABLES'; ή ενσωμάτωσε στο jdbc connection string το 'jdbcCompliantTruncation=false' π.χ. "jdbc:mysql://localhost/MYDB?jdbcCompliantTruncation=false" κάποτε ειχα αντιμετωπίσει ενα παρομοιο προβλημα αλλα δε θυμάμαι τωρα πως ακριβώς το ελυσα...αν βρω τον κωδικα θα σου πω ακριβως... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
andreaseto Δημοσ. 14 Οκτωβρίου 2008 Μέλος Share Δημοσ. 14 Οκτωβρίου 2008 Το jdbc connection string δε δούλεψε. Την 1η λύση που μου πρότεινες που θα τη βάλω, στον κώδικα μέσα? Και πως ακριβώς? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Επισκέπτης Δημοσ. 14 Οκτωβρίου 2008 Share Δημοσ. 14 Οκτωβρίου 2008 π.χ. μετά το connection στη ΒΔ(στο σημείο του κώδικα που κάνεις establish τη σύνδεσή σου) κάνεις mydbcon.stmt.execute("SET global sql_mode=\'STRICT_TRANS_TABLES\'"); οπου mydbcon ειναι το στιγμιότυπο σύνδεσής σου, stmt είναι το sql statement κατι τέτοιο δηλαδή...it should work... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
andreaseto Δημοσ. 15 Οκτωβρίου 2008 Μέλος Share Δημοσ. 15 Οκτωβρίου 2008 π.χ.μετά το 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 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; } } } Όπως και να έχει ευχαριστώ που ασχολείσαι με το πρόβλημα μου! Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.