带有消息“SQLSTATE [22007]”的未捕获异常“PDOException”:日期时间格式无效:1366 字符串值不正确
Posted
技术标签:
【中文标题】带有消息“SQLSTATE [22007]”的未捕获异常“PDOException”:日期时间格式无效:1366 字符串值不正确【英文标题】:Uncaught exception 'PDOException' with message 'SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value 【发布时间】:2017-02-06 14:32:15 【问题描述】:这是我得到的错误。
PDOException:未捕获的异常 'PDOException' 带有消息“SQLSTATE[22007]:无效的日期时间格式:1366 错误的字符串值:'\xF0\x9F\x98\xB3' for column 'string' at row 1'
我知道这里的问题。列表使用utf8
。 utf8
编码不能存储 4 字节字符,因此会出错。解决此问题的一种方法是改用utf8mb4
。
我的问题是关于错误消息。我们正在使用 MariaDB。 为什么会在错误消息中显示“日期时间格式无效”?这是一个文本字段。正在运行的查询中与日期时间无关。
这种“无效的日期时间格式”经常出现在各种错误中,但似乎与错误的实际来源无关。
【问题讨论】:
因为 mysql 日期/时间字符串是yyyy-mm-dd hh:mm:ss
。鉴于您的\xF0
,您传递的东西甚至远未接近该表格。由于您没有显示您的实际查询,我们无法为您提供任何帮助。
Marc B. 所说的。不要将utf8
编码的字符串作为datetime
参数发送,仅此而已。
如果您确定在执行此查询时没有损坏任何日期,则可能是您遇到了一些使我们的生活更有趣的奇怪错误。它的可重复性如何?你能提供一个独立的例子吗?
我们看看SHOW CREATE TABLE
和错误信息中直接涉及的SQL。
【参考方案1】:
是的,我以前见过。
我想这是 mariadb 方面的一个错误,错误值上的所有错误都被称为“不正确的日期时间值”。
除了有点混乱之外,我认为这里没有任何害处。只要记住问题并将其视为“不正确的文本值”
【讨论】:
以上是关于带有消息“SQLSTATE [22007]”的未捕获异常“PDOException”:日期时间格式无效:1366 字符串值不正确的主要内容,如果未能解决你的问题,请参考以下文章
带有消息“SQLSTATE [42000]”的未捕获异常“PDOException”:语法错误或访问冲突:
Facebook SDK:带有消息“DateTime::__construct()”的未捕获异常“异常”
致命错误:带有消息的未捕获异常“com_exception”。在将ppt转换为jpg时
带有消息file.log的未捕获异常'Zend_Log_Exception'无法使用模式“a”打开