0
私は、このテーブル定義を持っている:MySQL ERROR 1062(23000):キー 'watched'の重複エントリ '2'?
mysql> DESCRIBE watched;
+---------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------+------+-----+---------+----------------+
| id | int(6) | NO | PRI | NULL | auto_increment |
| stream | int(3) | NO | | 0 | |
| month | date | NO | | NULL | |
| watched | int(6) | NO | UNI | 1 | |
+---------+--------+------+-----+---------+----------------+
そして、これは内部のデータです:私はこのクエリを実行すると
mysql> SELECT * FROM watched;
+----+--------+------------+---------+
| id | stream | month | watched |
+----+--------+------------+---------+
| 1 | 11 | 2017-10-01 | 2 |
| 2 | 11 | 2017-10-01 | 1 |
+----+--------+------------+---------+
2 rows in set (0.00 sec)
は:
INSERT INTO watched (stream, month) VALUES (11, DATE_FORMAT(NOW(), "%Y-%m-01")) ON DUPLICATE KEY UPDATE watched=watched+1;
を私はこのエラーを取得する:
ERROR 1062 (23000): Duplicate entry '2' for key 'watched'
IDはPRIMARYとAUTO_INCREMENTに設定され、監視はUNIQUEに設定されているので、SQL文で監視値を増減することができます。監視=監視+ 1
しかし、UNIQUE監視フィールドの設定方法はわかりません増減値を1で...
EDIT:
これは、テーブルの構造である:
mysql> SHOW CREATE TABLE watched;
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| watched | CREATE TABLE `watched` (
`id` int(6) NOT NULL AUTO_INCREMENT,
`stream` int(3) NOT NULL DEFAULT '0',
`month` date NOT NULL,
`watched` int(6) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
UNIQUE KEY `watched` (`watched`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 |
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.03 sec)
'watched.watched'のように' UNIQUE'制約がないはずです。 –
'SHOW CREATE TABLEからの出力を投稿しました; –
私は誤った箇所を見て回るように質問を更新しました。ありがとうございました – John