TYPO3: SQL error: 'Incorrect integer value: '' for column 'sys_language_uid' at row 1'

TYPO3: SQL error: 'Incorrect integer value: '' for column 'sys_language_uid' at row 1'

我新设置了 TYPO3,但是当我尝试 add/save 内容时,它给我这个错误:

SQL error: 'Incorrect integer value: '' for column 'sys_language_uid' at row 1

在Localconfiguration.php文件中设置

[SYS][setDBinit] = SET SESSION sql_mode=''

此行为与使用严格模式的数据库管理系统有关,例如 MySQL 自版本 5.7 以来。禁用严格模式(如接受的答案中提供的那样)只是一种解决方法。

真正的解决方案是通过修改相应字段定义的 TCA(table 配置数组)将值显式转换为整数。

在最新的 TYPO3 版本中,您必须将此添加到 LocalConfiguration.php

'setDBinit' => 'SET SESSION sql_mode = \'NO_ENGINE_SUBSTITUTION\';',

对我来说,在尝试了不同的方法之后,解决方案是:

mysql -u root -p -e "SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';" 

然后,您可以验证模式是否由 运行 设置如下:

 mysql -u root -p -e "SELECT @@GLOBAL.sql_mode;"

你应该看到:

+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| sql_mode      | NO_ENGINE_SUBSTITUTION |
+---------------+------------------------+

在 Typo3 9.5/10.4

如果您无法更改所用扩展程序的编程 - 或更改 mysql 服务器的 运行 模式 - 更改 typo3 连接的模式可能会有用。你可以简单地添加到你的 LocalConfiguration.php.

[DB][Connections][Default][initCommands]='SET SESSION sql_mode = \'\';',