使用PhpMyAdmin导出同一个表的结构:
`DROP TABLE IF EXISTS `test_apprentis`;
CREATE TABLE IF NOT EXISTS `test_apprentis` (
`a_id` smallint(10) NOT NULL,
`a_promo_id` smallint(11) NOT NULL,
`a_cursus` smallint(10) DEFAULT NULL
) ENGINE=MyISAM AUTO_INCREMENT=3665 DEFAULT CHARSET=utf8;`
Export with mysqldump:
DROP TABLE IF EXISTS `test_apprentis`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `test_apprentis` (
`a_id` smallint(10) NOT NULL AUTO_INCREMENT,
`a_promo_id` smallint(11) NOT NULL,
`a_cursus` smallint(10) DEFAULT NULL,
PRIMARY KEY (`a_id`)
) ENGINE=MyISAM AUTO_INCREMENT=3665 DEFAULT CHARSET=utf8;
使用PhpMyAdmin,没有AUTO_INCREMENT而不是PRIMARY KEY 为什么?
答案 0 :(得分:5)
这不是一个愚蠢的问题,phpMyAdmin过去常常在CREATE TABLE语句的末尾包含KEY,并在其列名声明旁边包含它们的特性。在版本4.2.0.0(2014-05-08)之后的2014 changes log之后,导出文件结构已更改:
因此,我们必须查看导出文件的末尾以查找所有索引信息
答案 1 :(得分:0)
我把自己困在了新手! 我看了一下屏幕上显示的窗口内容,没有垂直升降杆! 在创建表格后,phpMyAdmin导出通过ALTER TABLE查询添加自动递增的列信息和PRIMARY KEY。
DROP TABLE IF EXISTS `test_apprentis`;
CREATE TABLE IF NOT EXISTS `test_apprentis` (
`a_id` smallint(10) NOT NULL,
`a_promo_id` smallint(11) NOT NULL,
`a_cursus` smallint(10) DEFAULT NULL
) ENGINE=MyISAM AUTO_INCREMENT=3665 DEFAULT CHARSET=utf8;
ALTER TABLE `test_apprentis`
ADD PRIMARY KEY (`a_id`);
ALTER TABLE `test_apprentis`
MODIFY `a_id` smallint(10) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=3665;
请接受我对这个愚蠢问题的道歉。
答案 2 :(得分:0)
如果要将此行为还原为以前的工作方式,请编辑文件
成功运行/库/插件/出口/ ExportSql.class.php
在文件中,需要跳过以下行开头的代码块
if (preg_match('@CONSTRAINT|KEY@', $create_query)) {
最简单的方法是将该行更改为
if (false && preg_match('@CONSTRAINT|KEY@', $create_query)) {
答案 3 :(得分:0)
使用导出和导入时需要注意的另一件事是导入时的事务数限制。没有警告说已超过该数量且未执行超出部分。这意味着某些表可能存在,但在导入整个数据库时没有更新其索引和/或AUTO_INCREMENTS。 根据表的数量及其结构,可能需要三倍的事务数量,因此检查和调整php.ini文件中的相关参数是值得的。
答案 4 :(得分:0)
对于那些需要解决方案的人,请在 --single-transaction
期间使用标志 mysqldump
,这样它会将 PRIMARY KEY
放在 CREATE TABLE
下,如下所示:
mysqldump --databases mydatabase --single-transaction -u user -p > ./exported_file_name.sql