8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

错误代码 1292 - 截断不正确的 DOUBLE 值 - Mysql

Trax 2月前

100 0

我不确定这是什么错误!#1292 - 截断了不正确的 DOUBLE 值:我没有双精度值字段或数据!我浪费了整整一个小时试图弄清楚这一点!这是我的查询 INS...

我不确定这个错误是什么!

#1292 - Truncated incorrect DOUBLE value: 

我没有双值字段或数据!

我浪费了整整一个小时来弄清楚这一点!

这是我的疑问

INSERT INTO call_managment_system.contact_numbers 
    (account_id, contact_number, contact_extension, main_number, created_by)
SELECT
    ac.account_id,
    REPLACE(REPLACE(REPLACE(REPLACE(ta.phone_number, '-', ''), ' ', ''), ')', ''),'(','') AS Phone,
    IFNULL(ta.ext, '') AS extention,
    '1' AS MainNumber,
    '2' AS created_by
FROM 
    cvsnumbers AS ta
    INNER JOIN accounts AS ac ON ac.company_code = ta.company_code
WHERE 
    LENGTH(REPLACE(REPLACE(REPLACE(REPLACE(ta.phone_number, '-', ''), ' ', ''), ')', ''),'(','') ) = 10

这是我展示的创建表,结果将进入该表

CREATE TABLE `contact_numbers` (  
    `number_id` int(10) unsigned NOT NULL AUTO_INCREMENT,  
    `account_id` int(10) unsigned NOT NULL DEFAULT '0',  
    `person_id` int(11) NOT NULL DEFAULT '0',  
    `contact_number` char(15) NOT NULL,  
    `contact_extension` char(10) NOT NULL DEFAULT '',  
    `contact_type` enum('Primary','Direct','Cell','Fax','Home','Reception','Office','TollFree') NOT NULL DEFAULT 'Primary',  
    `contact_link` enum('Account','PDM','Other') NOT NULL DEFAULT 'Account',  
    `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '0 = inactive, 1=active', 
    `main_number` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1 = main phone number',  
    `created_on` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,  
    `created_by` int(11) NOT NULL,  
    `modified_on` datetime DEFAULT NULL,  
    `modified_by` int(11) NOT NULL DEFAULT '0',  
    PRIMARY KEY (`number_id`),  
    KEY `account_id` (`account_id`),  
    KEY `person_id` (`person_id`)
) ENGINE=InnoDB AUTO_INCREMENT=534 DEFAULT CHARSET=utf8
帖子版权声明 1、本帖标题:错误代码 1292 - 截断不正确的 DOUBLE 值 - Mysql
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Trax在本站《sql》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 中比较数字和字符串 WHERE or ON 。在您的查询中,唯一可能发生这种情况的地方是 ON ac.company_code = ta.company_code ;请确保它们具有相似的声明,或者使用显式 CAST 将数字转换为字符串。

    如果关闭 strict 模式,错误将变成警告。

  • 哇,多么误导人的错误信息啊。谢谢帮助。你说得对。我需要将 DB::table('contacts')->where('attendance', $int) ->update([\'attendance\' => $string]); 更改为 DB::table('contacts')->where('attendance', '' . $int) ->update([\'attendance\' => $string]);

  • 谢谢。扩展一下:有各种各样的方法可以触发此错误。就我而言,它是使用正则表达式从字符串中提取整数,并将其与整数进行比较。奇怪的是,当我仅使用 SELECT 语句时,一切都很好:select xxxx from t1 inner join t2 on t1.id=substr(value,locate(':',tagvalue)+1) 一旦我将其转换为 INSERT...SELECT,就会触发错误。

  • 我在使用 ON DUPLICATE KEY UPDATE pk1=pk1 AND pk2=pk2 时遇到了这个问题。将 AND 替换为 ,解决了我的问题。参考:.com/questions/3456258/…

  • 谢谢。原来我发送的颜色是字符串而不是整数。用了好几年,换了新服务器,它就开始发出噪音。看不到重复的!

  • Aqua 2月前 0 只看Ta
    引用 7

    我更正了这个错误,因为查询中存在语法错误或一些不需要的字符,但 MySQL 无法捕获它。我 and 在更新期间在多个字段之间使用了 in,例如

    update user 
    set token='lamblala', 
        accessverion='dummy' and 
        key='somekey' 
    where user = 'myself'
    

    上述查询中的问题可以通过替换 and 逗号( , )

  • 我遇到了同样的问题。尝试将 varchar(100) 列与数字 1 进行比较。导致 1292 错误。通过在 1 ('1') 周围添加单引号来解决。

    感谢上述解释

  • TL; DR

    这也可能是应用于 OR 字符串列/文字造成的。

    完整版本

    涉及视图的 INSERT 简单语句,我收到了相同的错误消息

    insert into t1 select * from v1
    

    尽管所有源列和目标列都是 类型 VARCHAR 。经过一些调试,我找到了根本原因;视图包含以下片段:

    string_col1 OR '_' OR string_col2 OR '_' OR string_col3
    

    这可能是 Oracle 自动转换以下代码片段的结果:

    string_col1 || '_' || string_col2 || '_' || string_col3
    

    || 是 Oracle 中的字符串连接)。解决方案是使用

    concat(string_col1, '_', string_col2, '_', string_col3)
    

    反而。

  • 谢谢!我是 MySQL 新手,我使用 SQL Server 允许的方式进行连接,例如 string1 + string2 + string3。您建议的 concat 函数帮我修复了这个错误。

  • 我见过几种出现此错误的情况:

    != 列表的子句 where or 使用不等于运算符

    例如:

    where columnName !=('A'||'B')
    

    可以使用以下方法解决

    where columnName not in ('A','B')
    

    2. 函数中缺少比较运算符 if()

    select if(col1,col1,col2);
    

    为了选择中的值( col1 如果存在),否则显示中的值 col2 ...这会引发错误;可以使用以下方法解决:

    select if(col1!='',col1,col2);
    
  • 如果您没有双值字段或数据,也许您应该尝试禁用 sql 严格模式。

    为此,您必须编辑位于 MySQL 安装文件夹中的 \' my.ini \' 文件,找到 \' 将 SQL 模式设置为严格 \' 行并更改以下行:

    # Set the SQL mode to strict
    sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    

    至此,删除 \'STRICT_TRANS_TABLES\'

    # Set the SQL mode to strict
    sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    

    之后,您必须 重新启动 MySQL 服务 以启用此更改。

    要检查更改,请打开编辑器并执行此 SQL 语句:

    SHOW VARIABLES LIKE 'sql_mode';
    

    非常重要 :保存后请注意文件格式。将其保存为 \'UTF8\',不要保存为 \'TFT8 with BOM\',因为服务不会重新启动。

  • Wil 2月前 0 只看Ta
    引用 13

    按会话执行此操作更安全,或者仅在修改“麻烦表”的特定脚本中执行更好的操作:$pdo->query('SET SESSION SQL_MODE = \'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\'') 并在脚本魔法之后以相同方式重新严格:$pdo->query('SET SESSION SQL_MODE = \'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\'')

  • 当我收到此错误时,我相信这是一个错误,但是您应该记住,如果您使用 SELECT 语句和相同的 WHERE 子句执行单独的查询,那么您可以从该 SELECT: SELECT CONCAT(primary_id, ',') ) 语句中获取主 ID,并将它们插入到失败的 UPDATE 查询中,条件为 -> \'WHERE [primary_id] IN ([来自 SELECT 语句的逗号分隔的主 ID 列表)\',这使您可以缓解由原始(失败)查询的 WHERE 子句引起的任何问题。

    就我个人而言,当我使用引号对 'WHERE ____ IN ([此处的值])' 中的值进行括起来时,预期的 300 个条目中只有 10 个受到了影响,在我看来,这似乎是一个错误。

  • 中的错误

    CREATE TABLE tablename AS
      SELECT * FROM highly_nested_viewname
    ;
    

    我们最终采取的解决方法是模拟一个物化视图(实际上是一个表)并使用存储过程定期插入/更新它。

  • 在尝试传递 时,ES6 和 TypeORM 出现了这个问题 .where("order.id IN (:orders)", { orders }) ,其中 orders 是一个以逗号分隔的数字字符串。当我转换为模板文字时,问题就解决了。

    .where(`order.id IN (${orders})`);
    
  • 对表的字符串字段长度 使用了 CHECK CONSTRAINT

    例如:检查用户名长度 >= 8

    使用:

    CHECK (CHAR_LENGTH(username)>=8)
    

    而不是

    CHECK (username>=8)
    

    修复检查约束,如果有错误的数据类型比较

返回
作者最近主题: