客户出现bug需要修复,但是因为他们的一些个性化需求等原因,数据表结构跟现在的标准版的数据表结构不一样,为了免于跑现场调试代码,决定将现在的ksxing数据库表结构复制到新建数据库,做相应的表结构改动,与客户版本一致,这样就可以调试代码了。步骤如下:
-
创建和复制
如果我想把ksxing数据库的表结构复制到一个新的数据库cetc
-
进入mysql shell,新建一个新的数据库cetc
字符集默认可能是latin,我们创建时需指定utf8字符集
mysql> CREATE DATABASE cetc CHARACTER SET utf8 COLLATE utf8_unicode_ci;
shell里输入
show create database cetc
就能看到字符集mysql> show create database cetc; CREATE DATABASE `cetc` /*!40100 DEFAULT CHARACTER SET latin1 */
-
退出shell,输入下面的命令,即可实现
mysqldump -u user -ppass -d olddb | mysql -u user -ppass -Dnewdb
user即用户,-p+password, D+newdb
在这里命令就应该是:
mysqldump -u root -ppass -d ksxing | mysql -u root -ppass -Dcetc
密码pass做相应替换
-
-
修改配置文件,将数据库文件名改成cetc
运行app之后出现这样的问题:
msg:Fatal: connect db fail: (1044, "Access denied for user 'root'@'10.163.8.90' to database 'cetc'")
应该是数据权限的问题
在数据库的shell里赋给此用户全部权限,命令如下:
GRANT ALL PRIVILEGES ON cetc.* TO 'root'@'10.163.8.90' WITH GRANT OPTION;
这样链接数据库就成功了
参考地址:http://stackoverflow.com/questions/5016505/mysql-grant-all-privileges-on-database
-
数据表结构和内容复制
- 数据表结构在不同数据库之间复制
mysql> create table ksxing.shuffle_paper_test_ids like mfa.shuffle_paper_test_ids;
- 不同数据库之间将一个表的数据全部复制到另一个数据库的一个表
mysql> insert into ksxing_test.company_rights select * from ksxing.company_rights;
- 数据表结构在不同数据库之间复制