mysql client setting no-auto-rehash conflicting with mysqldump - config

Our database has many tables with many columns. It takes a long time for the commandline mysql client to connect unless I pass it -A. I'd rather not have to put that in every time, so I tried adding the my.cnf option no-auto-rehash.
That works great until I have to use mysqldump:
mysqldump: unknown option '--no-auto-rehash'
Apparently mysqldump uses the options in my.cnf's [client] section, even if there is a separate [mysqldump] section. Is there any way to use no-auto-rehash and still have a functional mysqldump? Is there a [no-really-just-the-mysql-client] section?
Thanks.
The same question was asked on the mysql forums with no response:
http://forums.mysql.com/read.php?35,583759,583760

Put no-auto-rehash option in the [mysql] section, instead of [client]
[mysql]
no-auto-rehash
In this case mysqldump is functional.

I do this all the time:
[client]
compress
user=uuuuuuu
password=ppppppppp
[mysql]
prompt=\h\_\d>\_
no-auto-rehash
[mysqldump]
quick
max_allowed_packet=1G

Related

Renaming a Yakuake session from commandline

Yakuake provides a hotkey and a GUI way to rename commandline tabs/sessions.
I'd like to do the same via the command line, so I can script it and use it in an alias. (My goal is that if I use an alias which does an SSH to some server, then the tab is renamed according to this servers name...)
I tried the suggestions shown here Renaming a Konsole session from commandline after ssh so far no luck.
Since KDE4, one should use qdbus to control KDE apps (instead of deprecated and deleted DCOP).
For example, to change a title of the first session one may use:
qdbus org.kde.yakuake /Sessions/1 org.kde.konsole.Session.setTitle 1 "New title"
To explore available interfaces, methods and properties one may use qdbusviewer.
As a homework try to get a list of active sessions (before you going to change smth).
Like #fgysin pointed out, his command also works for me. BUT it needs the ` character and not " for the subcommand :
qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.activeSessionId
It gives :
qdbus org.kde.yakuake /yakuake/tabs org.kde.yakuake.setTabTitle `qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.activeSessionId` "NEW TAB TITLE";

How to split sql in MAC OSX?

Is there any app for mac to split sql files or even script?
I have a large files which i have to upload it to hosting that doesn't support files over 8 MB.
*I don't have SSH access
You can use this : http://www.ozerov.de/bigdump/
Or
Use this command to split the sql file
split -l 5000 ./path/to/mysqldump.sql ./mysqldump/dbpart-
The split command takes a file and breaks it into multiple files. The -l 5000 part tells it to split the file every five thousand lines. The next bit is the path to your file, and the next part is the path you want to save the output to. Files will be saved as whatever filename you specify (e.g. “dbpart-”) with an alphabetical letter combination appended.
Now you should be able to import your files one at a time through phpMyAdmin without issue.
More info http://www.webmaster-source.com/2011/09/26/how-to-import-a-very-large-sql-dump-with-phpmyadmin/
This tool should do the trick: MySQLDumpSplitter
It's free and open source.
Unlike the accepted answer to this question, this app will always keep extended inserts intact so the precise form of your query doesn't matter; the resulting files will always have valid SQL syntax.
Full disclosure: I am a share holder of the company that hosts this program.
The UploadDir feature in phpMyAdmin could help you, if you have FTP access and can modify your phpMyAdmin's configuration (or are allowed to install your own instance of phpMyAdmin).
http://docs.phpmyadmin.net/en/latest/config.html?highlight=uploaddir#cfg_UploadDir
You can split into working SQL statements with:
csplit -s -f db-part db.sql "/^# Dump of table/" "{99}"
Which makes up to 99 files named 'db-part[n]' from db.sql
You can use "CREATE TABLE" or "INSERT INTO" instead of "# Dump of ..."
Also: Avoid installing any programs or uploading your data into any online service. You don't know what will be done with your information!

DB upload in mysql - loses UTF characters

I'm frequently updating my db on the server, and I run the following line from the command line:
mysqldump -u root --password=mypass mydb|mysql -h mysite.cc -u remotusr --password=remotpsw remotdb
The problem is that it loses the UTF characters along the way.
How can I keep the utf chars in cmd, or what is a better practice doing this?
( Upgrading to an answer )
As documented under mysqldump — A Database Backup Program:
--default-character-set=charset_name
Use charset_name as the default character set. See Section 10.5, “Character Set Configuration”. If no character set is specified, mysqldump uses utf8, and earlier versions use latin1.
[ deletia ]
--set-charset
Add SET NAMES default_character_set to the output. This option is enabled by default. To suppress the SET NAMES statement, use --skip-set-charset.
Therefore, unless you have settings in an option file which are overriding these defaults (you can specify --no-defaults to ensure they are not), the output from mysqldump should be more than capable of being redirected to another mysql session without loss of Unicode characters.
Instead, the conversion to a smaller character set appears to be occurring on retrieving & displaying your data from the new database. Since you are using PHP's Original MySQL API for this purpose, despite the warning in the introduction to its manual chapter (below), you should use mysql_set_charset() to set the connection character set.
This extension is not recommended for writing new code. Instead, either the mysqli or PDO_MySQL extension should be used. See also the MySQL API Overview for further help while choosing a MySQL API.

How can I get mysqldump to preserve the case of table names?

I'm attempting to migrate a database from a windows to a linux host.
Thanks!
Ashley
You are not finding the the table names under linux mysql, coz its default is case-sensitive.
And for windows its case-insensitive.
I can't guess if ignoring case sensitivity works for you. But you can do by adding a line in my.conf. i.e. making mysql in linux to be case insensitive.
mysqlserver:~# vi /etc/mysql/my.cnf
...
[mysqld]
lower_case_table_names = 1
Check out the following links and see if that helps:
http://bugs.mysql.com/bug.php?id=33898
http://dev.mysql.com/doc/refman/5.1/en/identifier-case-sensitivity.html
Bug 33898 suggests setting lower_case_table_names=2.

Specify a Port Number in Emacs sql-mysql

I've been using Emacs's sql interactive mode to talk to the MySQL db server and gotten to enjoy it. A developer has set up another db on a new non-default port number but I don't know how to access it using sql-mysql.
How do I specify a port number when I'm trying to connect to a database?
It would be even better if Emacs can prompt me for a port number and just use the default if I don't specify. Any chances of that?
After digging through the sql.el file, I found a variable that allows me to specify a port when I try to create a connection.
This option was added GNU Emacs 24.1.
sql-mysql-login-params
List of login parameters needed to connect to MySQL.
I added this to my Emacs init file:
(setq sql-mysql-login-params (append sql-mysql-login-params '(port)))
The default port is 0. If you'd like to set that to the default MySQL port you can customize sql-port
(setq sql-port 3306) ;; default MySQL port
There is a sql-*-login-params variable for all the popular RDMS systems in GNU Emacs 24.1. sql-port is used for both MySQL and PostreSQL
(setq sql-mysql-options (list "-P <port number>"))
I found the option using:
M-x customize-group
SQL
That included a setting labeled:
Mysql Options:
If you set the option and save it, there will be a new line added to your .emacs:
(custom-set-variables
'(sql-mysql-options (quote ("-P ???"))))
(Obviously, you ought to use the actual port number.)
I use XEmacs, so your mileage may vary.