Nic*_*ick 2 mysql import truncate phpmyadmin
我的实时(托管)数据库和开发(本地)数据库中都有一个表。我想将一堆记录放入实时表中。
我一直在做的事情如下:
就目前而言,这一切都运行良好。
问题是这样的:如果活动表中的记录已被删除,步骤 1 不会将其从开发表中删除(即使您选择“用文件替换表”选项)。然后在第 3 步在实时表中重新创建该记录。
我的问题:在步骤 1 导入之前,我应该截断开发表(当然是在备份之后)吗?我的导入会将开发表上的自动增量设置为与实时表上相同的点吗?还是我要把事情搞得很糟糕?
谢谢。
编辑:这是表格。(无法更好地格式化;抱歉。)
列 - 类型 - NULL - 默认
cnumsmallint(6) 否
unumsmallint(6) 否 1
cat_subjectsmallint(2) 否
0cat_majorsmallint(2) 否
0cat_minorsmallint(2) 否
0cat_flavour char(1) 是 NULL
unmod varchar(255)否
指数:
键名类型唯一填充列基数排序规则空注释
PRIMARY BTREE 是 否 cnum 2214 A 否
截断 MySQL 中的表将重置自动编号/身份列。除非你的脚本明确地将自动编号从 live 插入到 dev 中,否则你将遇到一个大问题。
如果您可以发布一些表结构和代码,我将能够通过一些代码为您提供更好的答案。
更新:
只是为了澄清一些有关自动编号和 MySQL 的信息。让我们创建一个表,如下所示:
CREATE TABLE `testcust` (
`TestCustID` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(32) DEFAULT NULL,
PRIMARY KEY (`TestCustID`)
) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)
如果我使用以下查询插入数据:
INSERT INTO `test`.`TestCust`
(`TestCustID`,
`Name`
)
VALUES
(
NULL,
'Pieter'
);
Run Code Online (Sandbox Code Playgroud)
并在此表上运行 select * 我会看到类似的内容。
TestCustID Name
'1', 'Pieter'
Run Code Online (Sandbox Code Playgroud)
由于我没有指定 TestCustID,MySQl 将生成一个。如果我运行以下插入查询:
INSERT INTO `test`.`TestCust`
(`TestCustID`,
`Name`
)
VALUES
(
15,
'Pieter'
);
Run Code Online (Sandbox Code Playgroud)
然后在我会看到的表上运行 select *
TestCustID Name
'1' 'Pieter'
'15' 'Pieter'
Run Code Online (Sandbox Code Playgroud)
因此,如果您截断了表,它会将 TestCustID 重置为 1(从头开始)。如果您在插入语句中显式指定生产/实时系统中的自动编号,则如果您不在插入语句中指定自动编号,您将保持同步你会失去同步。
希望能澄清一点。
| 归档时间: |
|
| 查看次数: |
11981 次 |
| 最近记录: |