2010-08-02 63 views
0

我有這個表MySQL的AUTO_INCREMENT

CREATE TABLE `zipcodes2` (
    `ID` int(11) NOT NULL auto_increment, 
    `zipcode` int(6) NOT NULL default '0', 
    `State` char(3) NOT NULL default '', 
    `zip_name` varchar(255) NOT NULL default '', 
    `CityAliasName` varchar(255) NOT NULL default '', 
    `latitude` float(26,7) NOT NULL default '0.0000000', 
    `longitude` float(36,7) NOT NULL default '0.0000000', 
    `AreaCode` smallint(3) NOT NULL default '0', 
    `County` varchar(255) NOT NULL default '', 
    `TimeZone` smallint(3) NOT NULL default '0', 
    `DayLightSavings` char(2) NOT NULL default '', 
    PRIMARY KEY (`zipcode`,`CityAliasName`,`ID`), 
    KEY `CityAliasName` (`CityAliasName`), 
    KEY `State` (`State`), 
    KEY `index_by_zipcode` (`zipcode`), 
    KEY `index_by_state` (`State`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

我試圖插入到另一個表此表。問題是auto_increment字段不增加。我究竟做錯了什麼?

insert into zipcodes2 (ID,zipcode,state,zip_name,CityAliasName,latitude,longitude, AreaCode, County, TimeZone, DayLightSavings) 
select distinct null,ZipCode as zipcode,State as state,City as zip_name, CityAliasName, Latitude as latitude, Longitude as longitude, AreaCode 
, County, TimeZone, DayLightSavings 
from zip_codes_all 
where state NOT in ('PR', 'AE', 'PW', 'MP', 'GU', 'FM', 'AS','AP', 'AA','FM','GA','GU','FM') 
limit 0,10; 

回答

0

的問題是,

PRIMARY KEY(zipcodeCityAliasNameID

它應該是,

PRIMARY KEY(ID

一旦我改變了這一點,AND從插入中刪除了ID字段,我得到了我期待的結果。

0

嘗試刪除從查詢 'ID':

insert into zipcodes2 (zipcode,state,zip_name,CityAliasName,latitude,longitude, AreaCode, County, TimeZone, DayLightSavings) 
select distinct ZipCode as zipcode,State as state,City as zip_name, CityAliasName, Latitude as latitude, Longitude as longitude, AreaCode, County, TimeZone, DayLightSavings 
from zip_codes_all 
where state NOT in ('PR', 'AE', 'PW', 'MP', 'GU', 'FM', 'AS','AP', 'AA','FM','GA','GU','FM') 
limit 0,10; 
0

是的,主鍵定義是一個關鍵。 在MySQL文檔說:

對於MyISAM,你可以 在一個多列索引二級 列指定AUTO_INCREMENT BDB表。在 這種情況下, AUTO_INCREMENT列的生成值計算爲 MAX(auto_increment_column)+ 1 WHERE prefix = given-prefix。當您想要將數據放入訂購的 組時,這非常有用 。

在修復主鍵之前,可能您的ID有非唯一的值。

0

你應該補充一點:

PRIMARY KEY ON ID COLUMN AND AUTOINCREMENT