带有消息“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'

我知道这里的问题。列表使用utf8utf8 编码不能存储 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”打开

导出带有时间戳列 SQL 错误“-180”的 DB2 表过滤器

如何在我的 windows 2008 Server 2008 R2 上安装 pdo_sqlsrv? [关闭]