毎月自動的にテーブルを開き、先月のテーブルの行を渡します。クエリを実行すると、「重複エントリ」というメッセージが表示されます。再作成するテーブルがまったく新しい場合に、なぜこれが起こるのかを理解しようとしています、テーブル内のすべての新しい行が最後の ID にインクリメンタル ID を取得することに気付きましたが、テーブルに書き込まれましたが、nextindex インデックスと 1 つのインデックスが前のテーブルであったという事実です。私が構築しているコードをテーブルと一緒に囲み、データ構造に対するクエリは、私が間違っているところにアドバイスを得たいと思っています。
問題を要約します:
1) 新しいテーブルを開きますが、ID は前のテーブルの ID に増分されます。新しいテーブルを作成するときに AUTO-INCREMENT 1 を記述しても意味がありません。
2) DATABASE に対するクエリでエラーが発生する
3) nextautoindex への接続があります。彼をリセットする必要がありますか?
コードの一部: Mysql
クエリ
insert into gyoman072013 (pnumber,id,MokedCcode,WCODE,ndate,TIMECALL,EventHandling,Endtimecare,User,TIMEARRIAVAL,FREEDATA,sendtime) select gyoman062013.pnumber,gyoman062013.id,gyoman062013.MokedCcode,gyoman062013.WCODE,gyoman062013.ndate,gyoman062013.TIMECALL,gyoman062013.EventHandling,gyoman062013.Endtimecare,gyoman062013.User,gyoman062013.TIMEARRIAVAL,gyoman062013.FREEDATA,gyoman062013.sendtime from gyoman062013 RIGHT JOIN eventcodes ON gyoman062013.WCODE=eventcodes.WCODE AND eventcodes.PRIORITY='1' where EventHandling!='2'
注: 私のクエリには問題はないと思います (おそらく) が、毎月再作成するテーブル構造が問題の原因です。
テーブル構造クエリ:
"CREATE TABLE IF NOT EXISTS gyoman".$datestamp." (
`pnumber` varchar(6) NOT NULL,
`id` int(255) NOT NULL AUTO_INCREMENT,
`MokedCcode` varchar(5) NOT NULL,
`GroupB` varchar(3) NOT NULL,
`WCODE` varchar(7) NOT NULL,
`ndate` date NOT NULL,
`TIMECALL` varchar(8) NOT NULL,
`EventHandling` int(1) NOT NULL,
`Endtimecare` varchar(8) NOT NULL,
`User` varchar(255) NOT NULL,
`TIMEARRIAVAL` varchar(8) NOT NULL,
`FREEDATA` varchar(255) NOT NULL,
`sendtime` time NOT NULL,
PRIMARY KEY (`id`),
KEY `MokedCcode` (`MokedCcode`),
KEY `WCODE` (`WCODE`),
KEY `GroupB` (`GroupB`),
KEY `ndate` (`ndate`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"
注: datestamp は現在の月です。@ my query を確認できます。
ありがとう!。