0

毎月自動的にテーブルを開き、先月のテーブルの行を渡します。クエリを実行すると、「重複エントリ」というメッセージが表示されます。再作成するテーブルがまったく新しい場合に、なぜこれが起こるのかを理解しようとしています、テーブル内のすべての新しい行が最後の 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 を確認できます。
ありがとう!。

4

1 に答える 1

0

AUTO INCREMENTテーブルの作成後に次のようにリセットしてみてください。

ALTER TABLE gyoman072013 AUTO_INCREMENT = 1;
于 2013-07-01T05:02:41.537 に答える