4

userのテーブルには以前は文字列の主キーがありましたが、新しいフィールドuserid bigint(20)を追加してこの主キーを作成しました。その後追加

ALTER TABLE smsusers AUTO_INCREMENT = 2335;

ユーザー テーブルの合計レコード数は 2334 です。次のレコードは値 2335 を取り、レコードが追加されると自動的にインクリメントされます。

問題は、アプリケーションからデータを挿入しているときに、次のエラーが表示されることです

SQLException  java.sql.SQLException: Field 'userid' doesn't have a default value

この問題を解決する方法

編集:新しいデータを挿入しようとしている間

    INSERT INTO `dbname`.`smsusers` ( `password`, `fname`, `lname`,
 `mailid`, `dob`, `gender`) VALUES ('asdf', 'asdf', 'asdf',
 'asdf@asdf.com', '2013-10-10', 'm');

次のエラーが表示されます

#1062 - Duplicate entry '0' for key 1

編集:最初は、ユーザーIDを追加してこの主キーを作成したよりも、主キーはidでした

私のテーブル構造は

CREATE TABLE `smsusers` (
 `id` varchar(60) NOT NULL DEFAULT '',
 `password` varchar(50) NOT NULL,
 `fname` varchar(30) NOT NULL,
 `lname` varchar(30) DEFAULT NULL,
 `mailid` varchar(50) NOT NULL,
 `dob` date NOT NULL,
 `gender` varchar(10) NOT NULL,
 `city` varchar(70) DEFAULT NULL,
 `userid` int(20) NOT NULL DEFAULT '0',
 PRIMARY KEY (`userid`),
 KEY `id_pk_unique` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

smsusers にデータを挿入している間、増分値ではなくデフォルト値 0 のみが使用されます。

4

3 に答える 3

5

以下のクエリを実行します。それなら心配いりません。:)

   ALTER TABLE smsusers MODIFY COLUMN userid INT(20) AUTO_INCREMENT;

   ALTER TABLE smsusers AUTO_INCREMENT = 2335;
于 2013-11-04T10:33:31.277 に答える