在 MySQL 中,如何在不使用备份的情况下复制表结构?
jcho360> show create table actor\G
*************************** 1. row ***************************
Table: actor
Create Table: CREATE TABLE `actor` (
`actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`first_name` varchar(45) NOT NULL,
`last_name` varchar(45) NOT NULL,
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`actor_id`),
KEY `idx_actor_last_name` (`last_name`)
) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
jcho360> create table actor_copy select * from actor;
Query OK, 200 rows affected (0.07 sec)
Records: 200 Duplicates: 0 Warnings: 0
jcho360> show create table actor_copy\G
*************************** 1. row ***************************
Table: actor_copy
Create Table: CREATE TABLE `actor_copy` (
`actor_id` smallint(5) unsigned NOT NULL DEFAULT '0',
`first_name` varchar(45) CHARACTER SET utf8 NOT NULL,
`last_name` varchar(45) CHARACTER SET utf8 NOT NULL,
`last_update` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
当我做类似的事情时,我会丢失结构,例如 PK、FK、index、ETC。
Der*_*ney 10
你应该能够做到:
CREATE TABLE `actor_copy` LIKE `actor`;
Run Code Online (Sandbox Code Playgroud)
获取结构,完成索引。但是外键仍然需要手动创建。
以上只会给你结构。然后,如果您愿意,您可以继续复制数据:
INSERT INTO `actor_copy` SELECT * FROM `actor`;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24475 次 |
最近记录: |