ERROR 1292 (22007): Truncated incorrect DOUBLE value 和ORA-01722: invalid number
其實這種錯誤和隱式轉換有關
主要是由於轉換的時候不能轉換為期望的格式的然後出的問題
比如 1p這個字元要轉換為 int(number)是不可能的
MYSQL 錯誤模擬如下:
myql> show variables like 'sql_mode%';
+---------------+--------------------------------------------+
| Variable_name | Value |
+---------------+--------------------------------------------+
| sql_mode | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+---------------+--------------------------------------------+
1 row in set (0.01 sec)
mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> create table jjjkk (id varchar(20),name varchar(20));
Query OK, 0 rows affected (0.03 sec)
mysql> insert into jjjkk values('1','gaopeng');
Query OK, 1 row affected (0.00 sec)
mysql> update jjjkk set name='gaop' where id=1;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update jjjkk set name='gaop' where id=1;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> insert into jjjkk values('1p','gaopeng');
Query OK, 1 row affected (0.01 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> update jjjkk set name='gaop' where id=1;
ERROR 1292 (22007): Truncated incorrect DOUBLE value: '1p'
MYSQL 中存在隱式轉換ORACLE中通常會在執行計劃中給出to_char之類的標示
但是MYSQL執行計劃沒有
如上列子雖然'1'可以轉換這個時候沒有報錯。但是新插入的'1p'是不能轉換的
這個在ORACLE中也存在這樣的問題。所以報錯
ERROR 1292 (22007): Truncated incorrect DOUBLE value: '1p'
當然我是嚴格的SQL_MODE,否則則是WARINGS
可以如下試試轉換:
SELECT CONVERT('1',SIGNED);
SELECT CONVERT('1p',SIGNED);
然後演示一下ORACLE的報錯:
SQL> create table testmmm( id varchar2(20),name varchar2(20));
Table created
SQL> insert into testmmm values('1','gaopeng');
1 row inserted
SQL> commit;
Commit complete
SQL> select * from testmmm where id=1;
ID NAME
-------------------- --------------------
1 gaopeng
SQL> insert into testmmm values('1p','gaopeng');
1 row inserted
SQL> commit;
Commit complete
SQL> select * from testmmm where id=1;
select * from testmmm where id=1
ORA-01722: invalid number
如果模擬
SQL> select to_number('1p') from dual;
select to_number('1p') from dual
ORA-01722: invalid number
同樣的情況
我們檢視一下執行計劃中的隱式轉換資訊:
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(TO_NUMBER("ID")=1)
僅此記錄MYSQL和ORACLE同樣的報錯
主要是由於轉換的時候不能轉換為期望的格式的然後出的問題
比如 1p這個字元要轉換為 int(number)是不可能的
MYSQL 錯誤模擬如下:
myql> show variables like 'sql_mode%';
+---------------+--------------------------------------------+
| Variable_name | Value |
+---------------+--------------------------------------------+
| sql_mode | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+---------------+--------------------------------------------+
1 row in set (0.01 sec)
mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> create table jjjkk (id varchar(20),name varchar(20));
Query OK, 0 rows affected (0.03 sec)
mysql> insert into jjjkk values('1','gaopeng');
Query OK, 1 row affected (0.00 sec)
mysql> update jjjkk set name='gaop' where id=1;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update jjjkk set name='gaop' where id=1;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> insert into jjjkk values('1p','gaopeng');
Query OK, 1 row affected (0.01 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> update jjjkk set name='gaop' where id=1;
ERROR 1292 (22007): Truncated incorrect DOUBLE value: '1p'
MYSQL 中存在隱式轉換ORACLE中通常會在執行計劃中給出to_char之類的標示
但是MYSQL執行計劃沒有
如上列子雖然'1'可以轉換這個時候沒有報錯。但是新插入的'1p'是不能轉換的
這個在ORACLE中也存在這樣的問題。所以報錯
ERROR 1292 (22007): Truncated incorrect DOUBLE value: '1p'
當然我是嚴格的SQL_MODE,否則則是WARINGS
可以如下試試轉換:
SELECT CONVERT('1',SIGNED);
SELECT CONVERT('1p',SIGNED);
然後演示一下ORACLE的報錯:
SQL> create table testmmm( id varchar2(20),name varchar2(20));
Table created
SQL> insert into testmmm values('1','gaopeng');
1 row inserted
SQL> commit;
Commit complete
SQL> select * from testmmm where id=1;
ID NAME
-------------------- --------------------
1 gaopeng
SQL> insert into testmmm values('1p','gaopeng');
1 row inserted
SQL> commit;
Commit complete
SQL> select * from testmmm where id=1;
select * from testmmm where id=1
ORA-01722: invalid number
如果模擬
SQL> select to_number('1p') from dual;
select to_number('1p') from dual
ORA-01722: invalid number
同樣的情況
我們檢視一下執行計劃中的隱式轉換資訊:
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(TO_NUMBER("ID")=1)
僅此記錄MYSQL和ORACLE同樣的報錯
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-2076512/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQLSTATE [22007]: Invalid datetime format: 1292 IncorrectSQLORM
- SQLLoader ORA-01722 invalid numberSQL
- python: invalid value encountered in divide以及invalid value encountered in double_scalars報錯PythonIDE
- java.sql.SQLException: Incorrect string valueJavaSQLException
- vue報錯:[Vue warn]: Invalid prop: type check failed for prop "value". Expected Number, got String....VueAIGo
- ISSAC GYM解決RuntimeError: nvrtc: error: invalid value for --gpu-architecture (-arch)的問題ErrorVRGPU
- mybatis竟然報"Invalid value for getInt()"MyBatis
- ERROR 2026 (HY000): SSL connection error: unknown error numberError
- 【BUG記錄】MySQL插入Emoji表情報錯"Incorrect string value"MySql
- Syntax error, unrecognized expression: li[value=]ErrorZedExpress
- err Invalid input of type: 'dict'. Convert to a byte, string or number first
- mysql 報錯:ERROR 1366 (HY000): Incorrect string value: ‘\xD5\xC5\xC8\xFD‘ for column ‘name‘ at row 1MySqlError
- 解決 Incorrect datetime value: '0000-00-00 00:00:00' 報錯
- 【nginx】invalid PID number ““ in “/usr/local/nginx/logs/nginx.pid“Nginx
- An invalid XML character (Unicode: 0x10) was found in the value of attributeXMLUnicode
- xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)ErrorDeveloper
- error creating overlay mount to invalid argument unbuntu系統Error
- error: invalid type argument of unary ‘*‘ (have ‘int‘) *__first = __tmp;Error
- MySQL: Incorrect string value: '\xF0\xA4\xBD\x82'分析MySql
- DataPump Export (EXPDP) Fails With Error LPX-216 Invalid CharacterExportAIError
- struct.error: 'h' format requires -32768 number 32767StructErrorORMUI
- mysql-timestamp 0000-00-00 00:00:00 Invalid default valueMySql
- yum安裝軟體報錯:Invalid configuration value: failovermethod=priority...AI
- MySQL案例02:ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGESMySqlError
- Dynamics CRM Error- Creating Entity with an invalid parent. Entity: EmailErrorAI
- 解決 Error: ENOSPC: System limit for number of file watchers reachedErrorMIT
- streamlit run執行報錯,Invalid value: File does not exist: XXX.py
- @ConfigurationProperties和@Value
- 小程式 · 報錯:Error: errCode: -501007 ,errMsg: Invalid Key Name (__keyPath)Error
- [Vue warn]: Invalid prop: type check failed for prop "unlinkPanels". Expected Boolean, got String with value "true".VueAIBooleanGo
- mysql 啟動錯誤(InnoDB: Operating system error number 13 )MySqlError
- Oracle12c叢集啟動時提示%CRS_LIMIT_OPENFILE%: invalid numberOracleMIT
- Syntax Error: ValidationError: Invalid options object. Stylus Loader has been initialized using anErrorObjectZed
- 達夢資料庫啟動報code = -803 [Invalid ini config value]錯誤資料庫
- SpringBoot升級到3.2.0報錯Invalid value type for attribute ‘factoryBeanObjectType‘: java.lang.StringSpring BootBeanObjectJava
- WPF System.Windows.Media.Color A value must be set, display ball and number in canvas ,mouse down to refreshWindowsCanvas
- Java Number和Math 類Java
- JSON parse error: Cannot deserialize value of type `java.time.LocalDateTime` from StringJSONErrorJavaLDA
- Oracle分析函式-first_value()和last_value()Oracle函式AST