programing

SQL 행이 삭제되지 않습니다.에러 발생 없음

copysource 2022. 9. 29. 23:49
반응형

SQL 행이 삭제되지 않습니다.에러 발생 없음

DB에 삭제할 수 없는 행이 있습니다.이 SQL을 python으로 실행했는데 다음 오류가 발생했습니다.

MariaDB [cryptotrader2]> INSERT INTO `trades` VALUES("gemini",2465337307,17317.010000,0.008923,1513178949);
    ERROR 1062 (23000): Duplicate entry 'gemini-2147483647' for key 'PRIMARY'

이상하네, 내가 그 엔트리에 영향을 주지 않으니깐.exchange='ini'라는 행이 하나밖에 없고 exchange='ini'라는 엔트리를 삭제하거나 다른 엔트리를 추가할 수 없습니다.아니면 적어도 내 파이썬 프로그램에서 나온 게 아니거나.아래와 같이 수동으로 입력했습니다.다른 교환명의 엔트리에 문제가 있는 것은 아니고, 제미니일 뿐입니다.

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 84
Server version: 10.0.30-MariaDB-0+deb8u1 (Debian)

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [cryptotrader2]> select * from trades where exchange='gemini'
    ->
    -> ;
+----------+------------+----------+------------+------------+
| exchange | trade_id   | price    | volume     | timestamp  |
+----------+------------+----------+------------+------------+
| gemini   | 2147483647 | 17395.80 | 0.06573300 | 1513178007 |
+----------+------------+----------+------------+------------+
1 row in set (0.00 sec)

MariaDB [cryptotrader2]> delete from trades where exchange='gemini';
Query OK, 1 row affected (0.01 sec)

MariaDB [cryptotrader2]> select * from trades where exchange='gemini';
+----------+------------+----------+------------+------------+
| exchange | trade_id   | price    | volume     | timestamp  |
+----------+------------+----------+------------+------------+
| gemini   | 2147483647 | 17385.33 | 0.07917300 | 1513178234 |
+----------+------------+----------+------------+------------+
1 row in set (0.00 sec)

MariaDB [cryptotrader2]> insert into trades values ('gemini',1234564560,17000,1,1513178235);
Query OK, 1 row affected (0.00 sec)

MariaDB [cryptotrader2]> select * from trades where exchange='gemini';          +----------+------------+----------+------------+------------+
| exchange | trade_id   | price    | volume     | timestamp  |
+----------+------------+----------+------------+------------+
| gemini   | 1234564560 | 17000.00 | 1.00000000 | 1513178235 |
| gemini   | 2147483647 | 17385.33 | 0.07917300 | 1513178234 |
+----------+------------+----------+------------+------------+
2 rows in set (0.01 sec)

MariaDB [cryptotrader2]> delete from trades where exchange='gemini';            Query OK, 2 rows affected (0.00 sec)

MariaDB [cryptotrader2]> select * from trades where exchange='gemini';
+----------+------------+----------+------------+------------+
| exchange | trade_id   | price    | volume     | timestamp  |
+----------+------------+----------+------------+------------+
| gemini   | 2147483647 | 17390.16 | 0.87946700 | 1513178350 |
+----------+------------+----------+------------+------------+
1 row in set (0.00 sec)

확실히 삭제되고 있습니다만, 제미니 엔트리를 작성하기 위해서 격분하고 있는 것이 있습니다.가격, 볼륨 및 타임스탬프의 변화를 확인하십시오.

이 에러의 원인은 INT의 최대 부호치가 2147483647이라고 말할 수 있습니다.더 큰 값(2465337307)을 삽입하려고 하면 최대값으로 잘려나갑니다.이 경우 gemini, 2147483647에 대한 엔트리가 이미 있습니다.삽입을 시도하다

    INSERT INTO `trades` VALUES("gemini",2147483646,17317.010000,0.008923,1513178949); 

python 프로그램을 사용합니다.

언급URL : https://stackoverflow.com/questions/47798178/sql-row-wont-delete-throws-no-error

반응형