我花了一些时间尝试调整选项/配置来解决这个问题。我肯定需要一些帮助。我正在使用 MySQL v5.7.19 并且应该使用存储引擎=InnoDB。我没有尝试将数据导入到下图所示的表中。严格创建表,然后更改表以创建分区。
这是显示创建表:
CREATE TABLE
assetInformation_TB (
aiEnId bigint UNSIGNED NOT NULL,
aiId bigint UNSIGNED NOT NULL,
aiParentId bigint UNSIGNED NULL,
aiInternalId varchar (32) NOT NULL,
aiExternalId varchar (32) NOT NULL,
aiDestEligDate date NULL,
aiIntransit boolean DEFAULT FALSE NOT NULL,
aiCurrentLocation varchar (32) NOT NULL,
aiRfidTag varchar (32) NOT NULL,
aiBarcode varchar (32) NOT NULL,
aiShortDesc varchar (64) NOT NULL,
aiLongDesc varchar (4096) NOT NULL,
aiExternalRef1 varchar (32) NULL,
aiExternalRef2 varchar (32) NULL,
aiExternalRef3 varchar (32) NULL,
aiExternalRef4 varchar (32) NULL,
aiStorageType varchar (3) NOT NULL,
aiStorageClass varchar (3) NOT NULL,
aiIsReconciled boolean DEFAULT FALSE NOT NULL,
aiAgId bigint UNSIGNED NOT NULL,
aiAhId bigint UNSIGNED NOT NULL,
aiAhLevelNbr integer UNSIGNED NOT NULL,
aiAmtId bigint UNSIGNED NOT NULL,
aiAtId bigint UNSIGNED NOT NULL,
aiRsId bigint UNSIGNED NULL,
aiStatus smallint UNSIGNED DEFAULT 0 NOT NULL,
aiCreatedOn timestamp DEFAULT 0 NOT NULL,
aiCreatedBy bigint UNSIGNED DEFAULT 0 NOT NULL,
aiModifiedOn timestamp DEFAULT current_timestamp
ON UPDATE current_timestamp NULL,
aiModifiedBy bigint UNSIGNED DEFAULT 0 NOT NULL,
PRIMARY KEY (aiEnId, aiId)
)
COMMENT 'Asset Information Table'
ENGINE = InnoDB ROW_FORMAT=DYNAMIC;
第一个分区,但还有其他 89 个分区:
ALTER TABLE assetInformation_TB
PARTITION BY RANGE (aiEnId + aiId) PARTITIONS 90 (
PARTITION DBP001_0 VALUES LESS THAN (18246999999999999999)
ENGINE=InnoDB
DATA DIRECTORY = 'f:\proga1d\ad03\DBP001_0\DBP'
INDEX DIRECTORY = 'f:\proga1d\ad03\DBP001_0\IDX'
,
) ;
最佳答案
22.6 Restrictions and Limitations on Partitioning
On Windows, the DATA DIRECTORY and INDEX DIRECTORY options are not supported for individual partitions or subpartitions of MyISAM tables. However, you can use DATA DIRECTORY for individual partitions or subpartitions of InnoDB tables.
mysql> ALTER TABLE `assetInformation_TB`
-> PARTITION BY RANGE (`aiEnId` + `aiId`)
-> PARTITIONS 1
-> (
-> PARTITION DBP001_0 VALUES LESS THAN (18246999999999999999)
-> ENGINE=InnoDB
-> DATA DIRECTORY = 'f:\proga1d\ad03\DBP001_0\DBP'
-> INDEX DIRECTORY = 'f:\proga1d\ad03\DBP001_0\IDX'
-> );
ERROR 1031 (HY000): Table storage engine for '#sql-3aa3_4' doesn''t have this option
mysql> ALTER TABLE `assetInformation_TB`
-> PARTITION BY RANGE (`aiEnId` + `aiId`)
-> PARTITIONS 1
-> (
-> PARTITION DBP001_0 VALUES LESS THAN (18246999999999999999)
-> ENGINE=InnoDB
-> DATA DIRECTORY = 'f:\proga1d\ad03\DBP001_0\DBP'
-> -- INDEX DIRECTORY = 'f:\proga1d\ad03\DBP001_0\IDX'
-> );
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
关于mysql - MSQL错误代码: 1031. '#sql-13C0_31'的表存储引擎没有此选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45289493/