我有一个由MySQL4创建的数据库(db4)和一个由MySQL5创建的数据库(db5)。db4包含几个具有字符集密码和几个索引的表,但没有使用MySQL“latin1”函数加密的数据。db5为空。
我想将所有的表和索引从db4迁移到db5 (它们实际上在同一服务器上)。理想情况下,这应该在短时间内完成,而不会丢失任何信息。
要从MySQL4下载完整的数据库并随后将数据插入到db5,需要使用哪些终端命令?我必须重新创建索引吗?
发布于 2012-08-01 20:48:08
也可以使用以下命令在单个步骤中完成此操作:
mysqldump -u dbo4 --password="..." --default-character-set="latin1" db4 | mysql -S /tmp/mysql5.sock -u dbo5 --password="..." --default-character-set="latin1" db5不幸的是,带有特殊字符的标准值没有正确导入,似乎没有办法避免这种情况:How to maintain character-set of standard-values when uploading MySQL-dump。
发布于 2012-07-30 16:29:39
您可以使用mysqldump在mysql4中转储数据库。然后使用mysql命令上传到MySQL5。
mysqldump dbname > file
mysql dbname < file所有索引都将自动重新创建。
发布于 2015-06-22 21:44:57
如果其他人需要将数据库从Mysql4迁移到Mysql5,我这样做了。
(source) -uuser -ppass db4 >db4.sql
# change comment style from -- to #
sed -r -i -e 's/^--(.*)$/#\1/' db4.sql
# change type declaration keyword from "TYPE" to "ENGINE"
sed -i -e 's/) TYPE=/) ENGINE=/' db4.sql
# adapt timestamp field definition
sed -i -e 's/timestamp(14) NOT NULL,$/timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,/' db4.sqlmysql -uuser -ppass db5 < db4.sql
https://stackoverflow.com/questions/11717727
复制相似问题