How do I instruct mysqldump to backup with column names in insert statements?
In my case I didn’t a normal back up with insert sql’s resulting in
LOCK TABLES `users` WRITE; /*!40000 ALTER TABLE `users` INSERT INTO `users` VALUES (1
structure.
Now I went ahead and removed a column from the schema in users. After this when I run the backup sql’s I get a column number mismatch error.
To fix this how do I go about instructing mysqldump to write column names too? Here is how I do it now
mysqldump --host=${dbserver} --user=${dbusername} --password=${dbpassword} \ --no-create-db --no-create-info --extended-insert --single-transaction \ --compress tablename
On a broader level, what’s the best practice to manage these schema changes?
The --opt option (and hence --quick ) is enabled by default, so to enable memory buffering, use --skip-quick . If you are using a recent version of mysqldump to generate a dump to be reloaded into a very old MySQL server, use the --skip-opt option instead of the --opt or --extended-insert option.
You can list a table's columns with the mysqlshow db_name tbl_name command.
By default, the mysqldump utility, which allows to back a MySQL database, will perform a lock on all tables until the backup is complete. In many cases, the amount of data in the database and the uptime requirements will not allow this lock in real life.
Use --complete-insert
in the mysqldump command params
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With