私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 のみが使用されます。