Project

General

Profile

Actions

Bug #69084

closed

Epic #68397: Make TYPO3 work with MySQL strict mode

Adding Objects with NOT NULL columns is broken

Added by Morton Jonuschat over 8 years ago. Updated over 6 years ago.

Status:
Closed
Priority:
Must have
Category:
Extbase
Target version:
Start date:
2015-08-15
Due date:
% Done:

100%

Estimated time:
TYPO3 Version:
7
PHP Version:
5.6
Tags:
Complexity:
Is Regression:
No
Sprint Focus:

Description

Using the Blog example from the functional tests it is easy to reproduce with a database that is strict about NOT NULL values (MySQL in strict mode, PostgreSQL and probably any other database that actually cares about data).

When adding a new Blog object the persistence layer tries to first create a new record just consisting of the following fields: crdate,tstamp,pid,sys_language_uid
As there are NOT NULL columns without default values in the table definition of the blog database this leads to constraint validation errors.

MySQL (strict mode) reports: Field 'description' doesn't have a default value
PostgreSQL reports: ERROR: null value in column "description" violates not-null constraint

This seems to originate in \TYPO3\CMS\Extbase\Persistence\Generic\Backend::persistObjects where new objects are treated specially by calling \TYPO3\CMS\Extbase\Persistence\Generic\Backend::insertObject which does not seem to map any of the object properties into the record to be created.

How to reproduce:

1. Add the following line to typo3/sysext/core/Build/Configuration/FunctionalTestsConfiguration.php: 'setDBinit' => 'SET SESSION sql_mode = \'STRICT_ALL_TABLES\';',
2. Run the following functional test: typo3/sysext/extbase/Tests/Functional/Persistence/AddTest.php

It will fail with SqlErrorException: Field 'description' doesn't have a default value


Related issues 2 (0 open2 closed)

Related to TYPO3 Core - Bug #69085: transOrigDiffSourceField ignored by DatamapperClosedMorton Jonuschat2015-08-15

Actions
Related to TYPO3 Core - Bug #69247: Inserting records fails when the model has a incompatible default valueClosedMorton Jonuschat2015-08-21

Actions
Actions

Also available in: Atom PDF