我想使用PHP代码导出Mysql数据库,因为mysqldump在我的服务器上不可用。我能够获得大部分类似于phpmyadmin导出文件的导出文件。我陷入了如何添加类似于phpmyadmin export的自动增量列名称和值的问题。
--
-- AUTO_INCREMENT for table `event`
--
ALTER TABLE `event`
MODIFY `event_id` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=17;
一种方法是使用不同的查询来查找自动递增的列名称,字段类型及其值。还有其他方法吗?让我知道。谢谢
答案 0 :(得分:0)
INFORMATION_SCHEMA.COLUMNS表告诉您列是否在自动递增。
mysql> create table test.MyTable ( id int auto_increment primary key);
mysql> select * from information_schema.columns where table_schema='test'\G
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: MyTable
COLUMN_NAME: id
ORDINAL_POSITION: 1
COLUMN_DEFAULT: NULL
IS_NULLABLE: NO
DATA_TYPE: int
CHARACTER_MAXIMUM_LENGTH: NULL
CHARACTER_OCTET_LENGTH: NULL
NUMERIC_PRECISION: 10
NUMERIC_SCALE: 0
DATETIME_PRECISION: NULL
CHARACTER_SET_NAME: NULL
COLLATION_NAME: NULL
COLUMN_TYPE: int(11)
COLUMN_KEY: PRI
EXTRA: auto_increment <-- here
PRIVILEGES: select,insert,update,references
COLUMN_COMMENT:
GENERATION_EXPRESSION:
SRS_ID: NULL
表的auto_increment的值在INFORMATION_SCHEMA.TABLES中。
mysql> insert into test.MyTable () values ();
mysql> select * from information_schema.tables where table_schema='test'\G
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: MyTable
TABLE_TYPE: BASE TABLE
ENGINE: InnoDB
VERSION: 10
ROW_FORMAT: Dynamic
TABLE_ROWS: 1
AVG_ROW_LENGTH: 16384
DATA_LENGTH: 16384
MAX_DATA_LENGTH: 0
INDEX_LENGTH: 0
DATA_FREE: 0
AUTO_INCREMENT: 2 <-- here
CREATE_TIME: 2018-09-09 15:31:45
UPDATE_TIME: 2018-09-09 15:33:29
CHECK_TIME: NULL
TABLE_COLLATION: utf8_general_ci
CHECKSUM: NULL
CREATE_OPTIONS:
TABLE_COMMENT:
顺便说一句,我曾经尝试做您正在做的事情,用纯PHP代码复制mysqldump的行为。这比您想的要难。我的工作还没有完成,我不太可能继续工作,因为这些天我不使用PHP。您可以看一下:https://github.com/billkarwin/cats-and-dogs