TYPO3:SQL 错误:'不正确的整数值:'' 列 'sys_language_uid' 在第 1 行'

Posted

技术标签:

【中文标题】TYPO3:SQL 错误:\'不正确的整数值:\'\' 列 \'sys_language_uid\' 在第 1 行\'【英文标题】:TYPO3: SQL error: 'Incorrect integer value: '' for column 'sys_language_uid' at row 1'TYPO3:SQL 错误:'不正确的整数值:'' 列 'sys_language_uid' 在第 1 行' 【发布时间】:2017-03-25 08:09:38 【问题描述】:

我新设置了 TYPO3,但是当我尝试添加/保存内容时,它给了我这个错误:

SQL 错误:“不正确的整数值:”列“sys_language_uid” 在第 1 行

【问题讨论】:

【参考方案1】:

在 Localconfiguration.php 文件中设置

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

【讨论】:

无论如何,如果您想使用尚未设置默认字段值并因此不支持严格模式的扩展,您可能希望像 /etc/mysql/my.cnf 中那样禁用严格模式:[mysqld]#取消激活严格模式,因为某些类型键盘xtensions不支持它(TCA中的字段需要默认值)#默认值:仅限_full_group_by,strict_trans_tables,no_zero_date,error_for_division_create_user,no_uto_create_user,no_uto_create_user,no_ureo_create_user,no_engine_substitution sql_mode = dop_full_group_by,no_zero_in_date,no_zero_date ,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 从长远来看,禁用严格并不是一个好主意。对于较新的数据库服务器版本,这将是默认设置。因此,当您将系统更新或迁移到不同的数据库服务器时,您可能会遇到问题。因此,虽然在您真正解决问题之前,这可能是一个快速解决方案,但您真的不应该长期这样做。您只是将问题推迟到以后。我建议在此答案中添加注释以澄清这一点。 这不是公共扩展开发人员的解决方案。你可以在你的私人项目中这样做,但你应该修复你的扩展。【参考方案2】:

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

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

对于将设置/扩展'eval' => 'int'input 类型字段,请参阅example tt_content.starttime 或者一般而言,对于所有字段类型,将使用'default' => 0 定义默认值,请参阅example tt_content.sys_language_uid

【讨论】:

另见更新文档中的注释docs.typo3.org/typo3cms/TCAReference/ColumnsConfig/Type/…【参考方案3】:

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

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

【讨论】:

【参考方案4】:

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

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 |
+---------------+------------------------+

【讨论】:

【参考方案5】:

在 Typo3 9.5 中:

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

【讨论】:

以上是关于TYPO3:SQL 错误:'不正确的整数值:'' 列 'sys_language_uid' 在第 1 行'的主要内容,如果未能解决你的问题,请参考以下文章

错误代码:1366。不正确的整数值:第 2 行的列“ReportsTo”的“NULL”

不正确的整数值:''对于第1行的列'id'

MySQL、XML 布尔值和整数:不正确的整数值:

获取 DatabaseError [SequelizeDatabaseError],不正确的整数值

MySQL 列的整数值“不正确”,它是整数并允许为空?

当我尝试使用 laravel 发布表单时,控制台显示“不正确的整数值”。无法识别路由参数