【问题标题】:Uncaught exception 'PDOException' with message 'SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value带有消息“SQLSTATE [22007]”的未捕获异常“PDOException”:日期时间格式无效:1366 字符串值不正确
【发布时间】: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。

标签: mysql pdo mariadb


【解决方案1】:

是的,我以前见过。

我想这是 mariadb 方面的一个错误,错误值上的所有错误都被称为“不正确的日期时间值”。

除了有点混乱之外,我认为这里没有任何害处。只要记住问题并将其视为“不正确的文本值”

【讨论】:

    猜你喜欢
    • 2021-05-25
    • 2021-04-21
    • 2021-02-14
    • 2021-07-23
    • 2021-08-22
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    相关资源
    最近更新 更多