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”