CSV Import fails with "user_status" cannot be null

Use this forum for questions regarding installation, upgrading and configuration of OpenEMM

Moderator: moderator

maschoff
Site Admin
Posts: 2661
Joined: Thu Aug 03, 2006 10:20 am
Location: Munich, Germany
Contact:

Re: CSV Import fails with "user_status" cannot be null

Post by maschoff »

Wow! I will check the JSON file if it is really clean. It may contain some artifacts too.
OpenEMM Maintainer
pquotto
Posts: 24
Joined: Wed Apr 23, 2025 4:38 pm

Re: CSV Import fails with "user_status" cannot be null

Post by pquotto »

I still didnt manage to import multiple CSVs on any version past 22.10.
This is error logs from 24.10.000.167.

I've activated debug logging in mysql, but its not very clear to me how it shows me the error:

Code: Select all

SET GLOBAL log_warnings = 2;
SET GLOBAL general_log = ON;
SET GLOBAL log_output = 'TABLE';

Code: Select all

SELECT event_time, argument FROM mysql.general_log WHERE argument LIKE 'INSERT INTO customer_1_binding_tbl%' ORDER BY event_time DESC \G;
*************************** 1. row ***************************
event_time: 2025-12-17 17:09:12.827769
  argument: INSERT INTO customer_1_binding_tbl (customer_id, user_type, user_status, user_remark, timestamp, creation_date, exit_mailing_id, mailinglist_id, mediatype) (SELECT DISTINCT customer_id, 'W', 1, 'CSV File Upload', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 0, 3, 0 FROM tmp_imp1_19 temp WHERE (customer_id != 0 AND customer_id IS NOT NULL) AND NOT EXISTS (SELECT 1 FROM customer_1_binding_tbl bind WHERE temp.customer_id = bind.customer_id AND 3 = bind.mailinglist_id AND 0 = bind.mediatype))
*************************** 2. row ***************************
event_time: 2025-12-17 17:09:12.773758
  argument: INSERT INTO customer_1_binding_tbl (customer_id, user_type, user_status, user_remark, timestamp, creation_date, exit_mailing_id, mailinglist_id, mediatype) (SELECT customer_id, 'W', 1, 'CSV File Upload', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 0, 3, 0 FROM customer_1_tbl cust WHERE datasource_id = 19 AND NOT EXISTS (SELECT 1 FROM customer_1_binding_tbl bind WHERE cust.customer_id = bind.customer_id AND 3 = bind.mailinglist_id AND 0 = bind.mediatype))
*************************** 3. row ***************************
Could the migration process have a little bug in any version after 22.10 and if so, how would I identify it? The SCHEMA of the table looks identical for the "user_status" column, so what else could it be?
maschoff
Site Admin
Posts: 2661
Joined: Thu Aug 03, 2006 10:20 am
Location: Munich, Germany
Contact:

Re: CSV Import fails with "user_status" cannot be null

Post by maschoff »

This log does not help. Please post the stacktrace from Tomcat's log catalina.out.
OpenEMM Maintainer
pquotto
Posts: 24
Joined: Wed Apr 23, 2025 4:38 pm

Re: CSV Import fails with "user_status" cannot be null

Post by pquotto »

It should be the one from the first page.

This is the latest:

Code: Select all

[ WARN] (WorkerExecutorService-emm-thread-#2) Error: 1048-23000: Column 'user_status' cannot be null
2025-12-17 17:09:12,828: ERROR [WorkerExecutorService-emm-thread-#2] org.agnitas.dao.impl.ImportRecipientsDaoImpl - Error: PreparedStatementCallback; SQL [INSERT INTO customer_1_binding_tbl (customer_id, user_type, user_status, user_remark, timestamp, creation_date, exit_mailing_id, mailinglist_id, mediatype) (SELECT DISTINCT customer_id, 'W', ?, 'CSV File Upload', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 0, ?, ? FROM tmp_imp1_19 temp WHERE (customer_id != 0 AND customer_id IS NOT NULL) AND NOT EXISTS (SELECT 1 FROM customer_1_binding_tbl bind WHERE temp.customer_id = bind.customer_id AND ? = bind.mailinglist_id AND ? = bind.mediatype))]; (conn=5232) Column 'user_status' cannot be null
SQL: INSERT INTO customer_1_binding_tbl (customer_id, user_type, user_status, user_remark, timestamp, creation_date, exit_mailing_id, mailinglist_id, mediatype) (SELECT DISTINCT customer_id, 'W', ?, 'CSV File Upload', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 0, ?, ? FROM tmp_imp1_19 temp WHERE (customer_id != 0 AND customer_id IS NOT NULL) AND NOT EXISTS (SELECT 1 FROM customer_1_binding_tbl bind WHERE temp.customer_id = bind.customer_id AND ? = bind.mailinglist_id AND ? = bind.mediatype))
Parameter: 1, 3, 0, 3, 0
org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [INSERT INTO customer_1_binding_tbl (customer_id, user_type, user_status, user_remark, timestamp, creation_date, exit_mailing_id, mailinglist_id, mediatype) (SELECT DISTINCT customer_id, 'W', ?, 'CSV File Upload', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 0, ?, ? FROM tmp_imp1_19 temp WHERE (customer_id != 0 AND customer_id IS NOT NULL) AND NOT EXISTS (SELECT 1 FROM customer_1_binding_tbl bind WHERE temp.customer_id = bind.customer_id AND ? = bind.mailinglist_id AND ? = bind.mediatype))]; (conn=5232) Column 'user_status' cannot be null
	at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:97) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:107) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1548) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:677) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:970) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:1014) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:1024) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	at org.agnitas.dao.impl.BaseDaoImpl.update(BaseDaoImpl.java:472) ~[classes/:?]
	at org.agnitas.dao.impl.RetryUpdateBaseDaoImpl.retryableUpdate(RetryUpdateBaseDaoImpl.java:44) ~[classes/:?]
	at org.agnitas.dao.impl.ImportRecipientsDaoImpl.assignExistingCustomerWithoutBindingToMailingList(ImportRecipientsDaoImpl.java:454) ~[classes/:?]
	at org.agnitas.util.importvalues.ImportModeAddAndUpdateHandler.handlePostProcessing(ImportModeAddAndUpdateHandler.java:207) ~[classes/:?]
	at org.agnitas.service.ProfileImportWorker.importData(ProfileImportWorker.java:750) ~[classes/:?]
	at org.agnitas.service.ProfileImportWorker.call(ProfileImportWorker.java:458) ~[classes/:?]
	at com.agnitas.emm.core.imports.web.RecipientImportController.lambda$execute$0(RecipientImportController.java:318) ~[classes/:?]
	at com.agnitas.service.impl.PollingServiceImpl$CallablePollable.call(PollingServiceImpl.java:90) [classes/:?]
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [?:?]
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
	at java.base/java.lang.Thread.run(Thread.java:840) [?:?]
Caused by: java.sql.SQLIntegrityConstraintViolationException: (conn=5232) Column 'user_status' cannot be null
	at org.mariadb.jdbc.export.ExceptionFactory.createException(ExceptionFactory.java:290) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.export.ExceptionFactory.create(ExceptionFactory.java:370) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.message.ClientMessage.readPacket(ClientMessage.java:137) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.client.impl.StandardClient.readPacket(StandardClient.java:840) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.client.impl.StandardClient.readResults(StandardClient.java:779) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.client.impl.StandardClient.readResponse(StandardClient.java:698) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.client.impl.StandardClient.execute(StandardClient.java:641) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:95) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:334) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:311) ~[mariadb-java-client-3.0.8.jar:?]
	at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:137) ~[tomcat-dbcp.jar:10.1.39]
	at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:137) ~[tomcat-dbcp.jar:10.1.39]
	at org.springframework.jdbc.core.JdbcTemplate.lambda$update$2(JdbcTemplate.java:975) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:658) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	... 18 more
2025-12-17 17:09:13,214: ERROR [WorkerExecutorService-emm-thread-#2] org.agnitas.service.ProfileImportWorker - Error during profile importData: PreparedStatementCallback; SQL [INSERT INTO customer_1_binding_tbl (customer_id, user_type, user_status, user_remark, timestamp, creation_date, exit_mailing_id, mailinglist_id, mediatype) (SELECT DISTINCT customer_id, 'W', ?, 'CSV File Upload', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 0, ?, ? FROM tmp_imp1_19 temp WHERE (customer_id != 0 AND customer_id IS NOT NULL) AND NOT EXISTS (SELECT 1 FROM customer_1_binding_tbl bind WHERE temp.customer_id = bind.customer_id AND ? = bind.mailinglist_id AND ? = bind.mediatype))]; (conn=5232) Column 'user_status' cannot be null
org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [INSERT INTO customer_1_binding_tbl (customer_id, user_type, user_status, user_remark, timestamp, creation_date, exit_mailing_id, mailinglist_id, mediatype) (SELECT DISTINCT customer_id, 'W', ?, 'CSV File Upload', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 0, ?, ? FROM tmp_imp1_19 temp WHERE (customer_id != 0 AND customer_id IS NOT NULL) AND NOT EXISTS (SELECT 1 FROM customer_1_binding_tbl bind WHERE temp.customer_id = bind.customer_id AND ? = bind.mailinglist_id AND ? = bind.mediatype))]; (conn=5232) Column 'user_status' cannot be null
	at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:97) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:107) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1548) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:677) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:970) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:1014) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:1024) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	at org.agnitas.dao.impl.BaseDaoImpl.update(BaseDaoImpl.java:472) ~[classes/:?]
	at org.agnitas.dao.impl.RetryUpdateBaseDaoImpl.retryableUpdate(RetryUpdateBaseDaoImpl.java:44) ~[classes/:?]
	at org.agnitas.dao.impl.ImportRecipientsDaoImpl.assignExistingCustomerWithoutBindingToMailingList(ImportRecipientsDaoImpl.java:454) ~[classes/:?]
	at org.agnitas.util.importvalues.ImportModeAddAndUpdateHandler.handlePostProcessing(ImportModeAddAndUpdateHandler.java:207) ~[classes/:?]
	at org.agnitas.service.ProfileImportWorker.importData(ProfileImportWorker.java:750) ~[classes/:?]
	at org.agnitas.service.ProfileImportWorker.call(ProfileImportWorker.java:458) ~[classes/:?]
	at com.agnitas.emm.core.imports.web.RecipientImportController.lambda$execute$0(RecipientImportController.java:318) ~[classes/:?]
	at com.agnitas.service.impl.PollingServiceImpl$CallablePollable.call(PollingServiceImpl.java:90) [classes/:?]
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [?:?]
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
	at java.base/java.lang.Thread.run(Thread.java:840) [?:?]
Caused by: java.sql.SQLIntegrityConstraintViolationException: (conn=5232) Column 'user_status' cannot be null
	at org.mariadb.jdbc.export.ExceptionFactory.createException(ExceptionFactory.java:290) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.export.ExceptionFactory.create(ExceptionFactory.java:370) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.message.ClientMessage.readPacket(ClientMessage.java:137) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.client.impl.StandardClient.readPacket(StandardClient.java:840) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.client.impl.StandardClient.readResults(StandardClient.java:779) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.client.impl.StandardClient.readResponse(StandardClient.java:698) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.client.impl.StandardClient.execute(StandardClient.java:641) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:95) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:334) ~[mariadb-java-client-3.0.8.jar:?]
	at org.mariadb.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:311) ~[mariadb-java-client-3.0.8.jar:?]
	at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:137) ~[tomcat-dbcp.jar:10.1.39]
	at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:137) ~[tomcat-dbcp.jar:10.1.39]
	at org.springframework.jdbc.core.JdbcTemplate.lambda$update$2(JdbcTemplate.java:975) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:658) ~[spring-jdbc-6.1.14.migrated.jar:6.1.14-migrated-1.0.0]
	... 18 more
maschoff
Site Admin
Posts: 2661
Joined: Thu Aug 03, 2006 10:20 am
Location: Munich, Germany
Contact:

Re: CSV Import fails with "user_status" cannot be null

Post by maschoff »

Root cause is "Column 'user_status' cannot be null". Please share the settings of your import profile.
OpenEMM Maintainer
pquotto
Posts: 24
Joined: Wed Apr 23, 2025 4:38 pm

Re: CSV Import fails with "user_status" cannot be null

Post by pquotto »

Here is the test import profile.

Code: Select all

Import profile: "Test" (ID: 2)
	Character set: UTF-8
	Headings in first row: true
	Zipped file: false
	Zip password: false
	Automatic mapping: false
	Separator: ,
	Text recognition character: NONE
	Decimal separator: .
	Date format: dd.MM.yyyy HH:mm
	HtmlTagCheck: no
	AllowSimpleHtmlTags: yes
	Mode: Add new recipients and update existing recipients
	Duplicate recipients: COMPLETE
	Empty values in import file: OVERWRITE
	Recipient mailing type (Default): HTML
	Media type: E-mail
	Datatype: CSV
	Update all duplicates (not only first found): true
	E-mail address(es) for reports: None
	E-mail address(es) for errors: None
	Gender settings: NONE
	Mapping: 
		email = Email
		firstname = Firstname
		lastname = Surname
		storecode = StoreCode
		store_name = StoreName
		coupon_code = GutscheinCode
		unsubscribelink = UnsubscribeLink
	Key column: email
This exact profile works on the 25.04 OVA version (I havent tried the other versions which I have in .ova yet).

I think either
a) I messed up the migration from 22.10 to beyond (3 times)
b) migration of 22.10 to beyond is borked (can this be? Theres only a very little chance this can be true.. else you would have the same error I think)
c) ? nothing else comes to mind

Thanks
Last edited by pquotto on Thu Dec 18, 2025 2:06 pm, edited 1 time in total.
maschoff
Site Admin
Posts: 2661
Joined: Thu Aug 03, 2006 10:20 am
Location: Munich, Germany
Contact:

Re: CSV Import fails with "user_status" cannot be null

Post by maschoff »

The import profile looks OK. Does the mapping contain all fields which are present in the import file?

Which exact version of OpenEMM do you use?
OpenEMM Maintainer
pquotto
Posts: 24
Joined: Wed Apr 23, 2025 4:38 pm

Re: CSV Import fails with "user_status" cannot be null

Post by pquotto »

Does the mapping contain all fields which are present in the import file?
Yes.
https://imgur.com/a/pgQ9bXU

The logs are from this system:

Code: Select all

=================================================
= OpenEMM Maintenance Tool (OMT) v24.10.000.036 =
=================================================
Hostname: -
Free diskspace: 89.1 % (of 49.98 GiB)
OpenEMM License: OpenEMM (ID: 0)
OpenEMM Runtime Version: 24.10.000.036
OpenEMM Version: 24.10.000.167
OpenEMM Manual Version: 24.10.001
System-Url: http://192.168.23.234:8080

Current menu: Show OpenEMM status

OpenEMM status:
Operating System (OS): Alma 8
Python version: 3.8.17
Optional system package 'galera' for MariaDB clusters is not installed
DBCFG: local OK
Postfix Version: 3.5.8
Database client version: /usr/bin/mariadb  Ver 15.1 Distrib 10.6.21-MariaDB, for Linux (x86_64) using readline 5.1
Database Connection: OK
System-Time: 2025-12-18 13:50:24
System-Time-DB: 2025-12-18 13:50:24
Database version: MariaDB 10.6.21-MariaDB
OpenEMM database structure exists (Version 24.07.535)
Database table emm_db_errorlog_tbl: OK
BirtURL configvalue: OK
Mailaddresses: ERROR (feature_support not set)
Jobqueue status: 15 errorneous jobs (BirtReports, LoginTrackTableCleaner, CalendarCommentMailingService, ...)
DKIM keys available for domains: None
Java version: 17.0.14 (Oracle)
Tomcat version: 10.1.39.0
Wkhtml version: wkhtmltopdf 0.12.6 (with patched qt)
OpenEMM Application is running (Tomcat ProcessID: 143675, started at: Dec17 4:17)
OpenEMM Backend ok: once
OpenEMM Backend running: mailout, update, trigger, generate, pickdist, slrtscn, direct-path, bav-update, bavd, bav
Frontend application integrity: OK
Statistics application integrity: OK
Webservices application integrity: OK
This system has been upgrades from 20.04.x all the way to here now. And the CSV Import worked until 22.10.x.

What I can do is, to do more upgrades from 22.10 - to make sure I did everything correct.

I documented all my steps and did the upgrade process 3 times (on two different systems, meaning different hosts. And the data set was different. 1 system (the logs are from the testing instance) does not contain actual customer data, but only testing data))

Thanks
maschoff
Site Admin
Posts: 2661
Joined: Thu Aug 03, 2006 10:20 am
Location: Munich, Germany
Contact:

Re: CSV Import fails with "user_status" cannot be null

Post by maschoff »

Let's check the schema of your customer_1_binding_tbl:

Code: Select all

# mysql -u root -p
> use openemm
> DESC customer_1_binding_tbl;
What do you get? (edited)
OpenEMM Maintainer
pquotto
Posts: 24
Joined: Wed Apr 23, 2025 4:38 pm

Re: CSV Import fails with "user_status" cannot be null

Post by pquotto »

My system 24.10.000.167

Code: Select all

DESC customer_1_binding_tbl;
+------------------+------------------+------+-----+---------------------+-------------------------------+
| Field            | Type             | Null | Key | Default             | Extra                         |
+------------------+------------------+------+-----+---------------------+-------------------------------+
| customer_id      | int(10) unsigned | NO   | MUL | 0                   |                               |
| mailinglist_id   | int(10) unsigned | NO   | MUL | 0                   |                               |
| user_type        | char(1)          | YES  |     | NULL                |                               |
| user_status      | int(10)          | NO   |     | NULL                |                               |
| user_remark      | varchar(150)     | YES  |     | NULL                |                               |
| timestamp        | timestamp        | YES  |     | current_timestamp() | on update current_timestamp() |
| exit_mailing_id  | int(10) unsigned | YES  |     | NULL                |                               |
| creation_date    | timestamp        | YES  |     | NULL                |                               |
| mediatype        | int(10) unsigned | YES  |     | 0                   |                               |
| referrer         | varchar(4000)    | YES  |     | NULL                |                               |
| entry_mailing_id | int(10) unsigned | YES  |     | NULL                |                               |
+------------------+------------------+------+-----+---------------------+-------------------------------+
11 rows in set (0.001 sec)
25.04.000.124 OVA (no issues with CSV import here)

Code: Select all

DESC customer_1_binding_tbl;
+------------------+------------------+------+-----+---------+-------+
| Field            | Type             | Null | Key | Default | Extra |
+------------------+------------------+------+-----+---------+-------+
| customer_id      | int(10) unsigned | NO   | MUL | 0       |       |
| mailinglist_id   | int(10) unsigned | NO   | MUL | 0       |       |
| user_type        | char(1)          | YES  |     | NULL    |       |
| user_status      | int(10)          | NO   |     | NULL    |       |
| user_remark      | varchar(150)     | YES  |     | NULL    |       |
| timestamp        | timestamp        | YES  |     | NULL    |       |
| exit_mailing_id  | int(10) unsigned | YES  |     | NULL    |       |
| creation_date    | timestamp        | YES  |     | NULL    |       |
| mediatype        | int(10) unsigned | YES  |     | 0       |       |
| referrer         | varchar(4000)    | YES  |     | NULL    |       |
| entry_mailing_id | int(10) unsigned | YES  |     | NULL    |       |
+------------------+------------------+------+-----+---------+-------+
11 rows in set (0.001 sec)
Production (20.10.x - no issues with CSV import here)

Code: Select all

DESC customer_1_binding_tbl;
+------------------+------------------+------+-----+---------------------+-------------------------------+
| Field            | Type             | Null | Key | Default             | Extra                         |
+------------------+------------------+------+-----+---------------------+-------------------------------+
| customer_id      | int(10) unsigned | NO   | MUL | 0                   |                               |
| mailinglist_id   | int(10) unsigned | NO   | MUL | 0                   |                               |
| user_type        | char(1)          | YES  |     | NULL                |                               |
| user_status      | int(10)          | NO   |     | NULL                |                               |
| user_remark      | varchar(150)     | YES  |     | NULL                |                               |
| timestamp        | timestamp        | YES  |     | current_timestamp() | on update current_timestamp() |
| exit_mailing_id  | int(10) unsigned | YES  |     | NULL                |                               |
| creation_date    | timestamp        | YES  |     | NULL                |                               |
| mediatype        | int(10) unsigned | YES  |     | 0                   |                               |
| referrer         | varchar(4000)    | YES  |     | NULL                |                               |
| entry_mailing_id | int(10) unsigned | YES  |     | NULL                |                               |
+------------------+------------------+------+-----+---------------------+-------------------------------+
11 rows in set (0.004 sec)

Code: Select all

=============================================
= OpenEMM Maintenance Tool (OMT) v20.10.070 =
=============================================
Host: -
License: OpenEMM (ID: 0)
Runtime Version: 20.10.070
OpenEMM Frontend Version: 20.10.000.107
System-Url: -
OpenEMM Backend Version: 20.10.000.102

Current menu: Show OpenEMM status

OpenEMM status:
Operating System (OS): CentOS 8
Python version: 3.8.7 (default, Jan 20 2021, 16:03:21)  [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
Postfix Version: 3.3.1
DB client version: /usr/bin/mysql  Ver 15.1 Distrib 10.3.27-MariaDB, for Linux (x86_64) using readline 5.1
Database Connection: OK
System-Time: 2025-12-19 11:14:34
System-Time-DB: 2025-12-19 11:14:34
Database version: MariaDB 10.3.27-MariaDB
OpenEMM database structure exists (Version 20.10.037)
Currently running database threads ratio (Current: 6, Maximum: 15): 0.4
Database table emm_db_errorlog_tbl: OK
Jobqueue status: OK
No DKIM keys
Java version: 1.8.0_275 (Oracle)
Tomcat version: 9.0.33.0
Tomcat-Native version: 1.2.23
Wkhtml version: wkhtmltopdf 0.12.6 (with patched qt)
OpenEMMApplication is running (Tomcat ProcessID: 11581, started at: Apr22 4800:25)
OpenEMMBackend ok: once
OpenEMMBackend running: mailout, update, trigger, generate, mta, pickdist, slrtscn, direct-path, bav-update, bavd, bav, mlcontrol
maschoff
Site Admin
Posts: 2661
Joined: Thu Aug 03, 2006 10:20 am
Location: Munich, Germany
Contact:

Re: CSV Import fails with "user_status" cannot be null

Post by maschoff »

DB schema looks ok.

The problem is that error message

Code: Select all

ERROR [WorkerExecutorService-emm-thread-#2] org.agnitas.dao.impl.ImportRecipientsDaoImpl - Error: PreparedStatementCallback;
SQL [INSERT INTO customer_1_binding_tbl (customer_id, user_type, user_status, user_remark, timestamp, creation_date, exit_mailing_id, mailinglist_id, mediatype) (SELECT DISTINCT customer_id, 'W', ?, 'CSV File Upload', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 0, ?, ? FROM tmp_imp1_19 temp WHERE (customer_id != 0 AND customer_id IS NOT NULL) AND NOT EXISTS (SELECT 1 FROM customer_1_binding_tbl bind WHERE temp.customer_id = bind.customer_id AND ? = bind.mailinglist_id AND ? = bind.mediatype))];
(conn=5232) Column 'user_status' cannot be null
SQL: INSERT INTO customer_1_binding_tbl (customer_id, user_type, user_status, user_remark, timestamp, creation_date, exit_mailing_id, mailinglist_id, mediatype) (SELECT DISTINCT customer_id, 'W', ?, 'CSV File Upload', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 0, ?, ? FROM tmp_imp1_19 temp WHERE (customer_id != 0 AND customer_id IS NOT NULL) AND NOT EXISTS (SELECT 1 FROM customer_1_binding_tbl bind WHERE temp.customer_id = bind.customer_id AND ? = bind.mailinglist_id AND ? = bind.mediatype))
Parameter: 1, 3, 0, 3, 0
contradicts itsself, because user_status (first "?") is not set to NULL but according to the parameter list (last line) to value 1.

A hack could be to allow NULL values for column "user_status".
OpenEMM Maintainer
pquotto
Posts: 24
Joined: Wed Apr 23, 2025 4:38 pm

Re: CSV Import fails with "user_status" cannot be null

Post by pquotto »

user_status = NULL would fix it for the databse. But what would a casted value of NULL mean for the customer?

Its also wierd that while debugging I dont see where a "NULL" value would be.

Code: Select all

SELECT event_time, argument FROM mysql.general_log WHERE argument LIKE '%tmp_imp%' AND DATE(event_time) = CURDATE() ORDER BY event_time DESC \G;
*************************** 1. row ***************************
event_time: 2025-12-19 11:57:17.715987
  argument: SELECT event_time, argument FROM mysql.general_log WHERE argument LIKE '%tmp_imp%' AND DATE(event_time) = CURDATE() ORDER BY event_time DESC
*************************** 2. row ***************************
event_time: 2025-12-19 11:56:38.680294
  argument: SELECT event_time, argument FROM mysql.general_log WHERE argument LIKE '%customer_1_binding_tbl%' OR argument LIKE '%tmp_imp%' AND DATE(event_time) = CURDATE() ORDER BY event_time DESC
*************************** 3. row ***************************
event_time: 2025-12-19 11:54:29.754573
  argument: DELETE FROM import_temporary_tables WHERE temporary_table_name = 'tmp_imp1_21'
*************************** 4. row ***************************
event_time: 2025-12-19 11:54:29.564192
  argument: DROP TABLE tmp_imp1_21
*************************** 5. row ***************************
event_time: 2025-12-19 11:54:29.395897
  argument: TRUNCATE TABLE tmp_imp1_21
*************************** 6. row ***************************
event_time: 2025-12-19 11:54:29.394989
  argument: SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = SCHEMA() AND table_name = 'tmp_imp1_21'
*************************** 7. row ***************************
event_time: 2025-12-19 11:54:29.392792
  argument: INSERT INTO customer_1_binding_tbl (customer_id, user_type, user_status, user_remark, timestamp, creation_date, exit_mailing_id, mailinglist_id, mediatype) (SELECT DISTINCT customer_id, 'W', 1, 'CSV File Upload', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 0, 3, 0 FROM tmp_imp1_21 temp WHERE (customer_id != 0 AND customer_id IS NOT NULL) AND NOT EXISTS (SELECT 1 FROM customer_1_binding_tbl bind WHERE temp.customer_id = bind.customer_id AND 3 = bind.mailinglist_id AND 0 = bind.mediatype))
*************************** 8. row ***************************
event_time: 2025-12-19 11:54:27.628495
  argument: UPDATE customer_1_tbl SET timestamp = CURRENT_TIMESTAMP, cleaned_date = NULL , latest_datasource_id = 21 WHERE (email) IN (SELECT DISTINCT email FROM tmp_imp1_21 WHERE customer_id != 0 AND customer_id IS NOT NULL)
*************************** 9. row ***************************
event_time: 2025-12-19 11:54:27.626910
  argument: UPDATE customer_1_tbl dst JOIN (SELECT * FROM tmp_imp1_21 WHERE csvindex IN (SELECT MAX(src.csvindex) FROM tmp_imp1_21 src GROUP BY src.email)) AS updatevalues ON updatevalues.email = dst.email AND updatevalues.email IS NOT NULL SET dst.firstname = updatevalues.firstname, dst.lastname = updatevalues.lastname, dst.storecode = updatevalues.storecode, dst.store_name = updatevalues.store_name, dst.coupon_code = updatevalues.coupon_code, dst.unsubscribelink = updatevalues.unsubscribelink
*************************** 10. row ***************************
event_time: 2025-12-19 11:54:27.626447
  argument: UPDATE tmp_imp1_21 src SET customer_id = (SELECT MAX(customer_id) FROM customer_1_tbl dst WHERE src.email = dst.email AND src.email IS NOT NULL) WHERE (customer_id IS NULL OR customer_id = 0) AND dbl IS NOT NULL
*************************** 11. row ***************************
event_time: 2025-12-19 11:54:27.626049
  argument: INSERT INTO customer_1_tbl (creation_date, timestamp, datasource_id, latest_datasource_id, mailtype, gender, email, firstname, lastname, storecode, store_name, coupon_code, unsubscribelink) (SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 21, 21, 1, 2, email, firstname, lastname, storecode, store_name, coupon_code, unsubscribelink FROM tmp_imp1_21 WHERE (customer_id = 0 OR customer_id IS NULL) AND dbl IS NULL)
*************************** 12. row ***************************
event_time: 2025-12-19 11:54:27.625671
  argument: DELETE FROM tmp_imp1_21 WHERE (customer_id = 0 OR customer_id IS NULL) AND (email IS NULL OR email = '')
*************************** 13. row ***************************
event_time: 2025-12-19 11:54:27.619062
  argument: SELECT COUNT(*) FROM tmp_imp1_21 WHERE customer_id > 0
*************************** 14. row ***************************
event_time: 2025-12-19 11:54:27.581069
  argument: UPDATE tmp_imp1_21 dst SET dst.customer_id = COALESCE((SELECT MIN(src.customer_id) FROM customer_1_tbl src WHERE src.email = dst.email AND src.email IS NOT NULL), 0)
*************************** 15. row ***************************
event_time: 2025-12-19 11:54:27.548495
  argument: UPDATE tmp_imp1_21 SET dbl = NULL WHERE csvindex = dbl
*************************** 16. row ***************************
event_time: 2025-12-19 11:54:27.538542
  argument: UPDATE tmp_imp1_21 SET dbl = (SELECT subselect.csvindex FROM (SELECT email, MIN(csvindex) AS csvindex FROM tmp_imp1_21 GROUP BY email) subselect WHERE tmp_imp1_21.email = subselect.email AND tmp_imp1_21.email IS NOT NULL)
*************************** 17. row ***************************
event_time: 2025-12-19 11:54:27.537752
  argument: DELETE FROM tmp_imp1_21 WHERE EXISTS (SELECT 1 FROM cust1_ban_tbl ban WHERE tmp_imp1_21.email = ban.email AND NOT ban.email LIKE '%*%' AND NOT ban.email LIKE '%|%%' ESCAPE '|')
*************************** 18. row ***************************
event_time: 2025-12-19 11:54:27.537360
  argument: SELECT COUNT(*) FROM tmp_imp1_21 WHERE dbl IS NOT NULL
*************************** 19. row ***************************
event_time: 2025-12-19 11:54:27.507202
  argument: INSERT INTO tmp_imp1_21 (email, firstname, lastname, storecode, store_name, coupon_code, unsubscribelink, csvindex) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
*************************** 20. row ***************************
event_time: 2025-12-19 11:54:27.507158
  argument: INSERT INTO tmp_imp1_21 (email, firstname, lastname, storecode, store_name, coupon_code, unsubscribelink, csvindex) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
*************************** 21. row ***************************
event_time: 2025-12-19 11:54:27.294363
  argument: CREATE INDEX tmp_imp1_21dblix ON tmp_imp1_21 (dbl)
*************************** 22. row ***************************
event_time: 2025-12-19 11:54:27.107785
  argument: ALTER TABLE tmp_imp1_21 ADD dbl INTEGER
*************************** 23. row ***************************
event_time: 2025-12-19 11:54:27.107058
  argument: SELECT * FROM tmp_imp1_21 WHERE 1 = 0
*************************** 24. row ***************************
event_time: 2025-12-19 11:54:26.716570
  argument: CREATE INDEX tmp_imp1_21csvix ON tmp_imp1_21 (csvindex)
*************************** 25. row ***************************
event_time: 2025-12-19 11:54:26.496917
  argument: ALTER TABLE tmp_imp1_21 ADD csvindex INTEGER
*************************** 26. row ***************************
event_time: 2025-12-19 11:54:26.496148
  argument: SELECT * FROM tmp_imp1_21 WHERE 1 = 0
*************************** 27. row ***************************
event_time: 2025-12-19 11:54:26.084165
  argument: CREATE INDEX tmp_21_email_idx ON tmp_imp1_21 (email)
*************************** 28. row ***************************
event_time: 2025-12-19 11:54:25.951277
  argument: CREATE INDEX tmp_21_cust_idx ON tmp_imp1_21 (customer_id)
*************************** 29. row ***************************
event_time: 2025-12-19 11:54:25.610978
  argument: ALTER TABLE tmp_imp1_21 MODIFY email varchar(100) NULL
*************************** 30. row ***************************
event_time: 2025-12-19 11:54:25.300714
  argument: ALTER TABLE tmp_imp1_21 MODIFY mailtype int(10) NULL
*************************** 31. row ***************************
event_time: 2025-12-19 11:54:24.958228
  argument: ALTER TABLE tmp_imp1_21 MODIFY bounceload int(10) NULL
*************************** 32. row ***************************
event_time: 2025-12-19 11:54:24.824359
  argument: ALTER TABLE tmp_imp1_21 MODIFY customer_id int(10) NULL
*************************** 33. row ***************************
event_time: 2025-12-19 11:54:24.424389
  argument: ALTER TABLE tmp_imp1_21 MODIFY gender int(10) NULL
*************************** 34. row ***************************
event_time: 2025-12-19 11:54:24.422363
  argument: SELECT column_name, data_type, character_maximum_length, numeric_precision, numeric_scale, is_nullable FROM information_schema.columns WHERE table_schema = SCHEMA() AND LOWER(table_name) = LOWER('tmp_imp1_21') ORDER BY column_name
*************************** 35. row ***************************
event_time: 2025-12-19 11:54:24.304384
  argument: ALTER TABLE tmp_imp1_21 MODIFY lastname VARCHAR(100) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci
*************************** 36. row ***************************
event_time: 2025-12-19 11:54:24.260601
  argument: ALTER TABLE tmp_imp1_21 MODIFY firstname VARCHAR(100) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci
*************************** 37. row ***************************
event_time: 2025-12-19 11:54:24.176097
  argument: CREATE TABLE tmp_imp1_21 ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AS SELECT * FROM customer_1_tbl WHERE 1 = 0
*************************** 38. row ***************************
event_time: 2025-12-19 11:54:24.175393
  argument: SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = SCHEMA() AND table_name = 'tmp_imp1_21'
*************************** 39. row ***************************
event_time: 2025-12-19 11:54:24.168833
  argument: INSERT INTO import_temporary_tables (session_id, temporary_table_name, import_table_name, host, description) VALUES('D804FF1F11EEB4AC6597807A469D8C8B', 'tmp_imp1_21', 'customer_1_tbl', 'openemm2.xx.de', 'Import by emm-master')
*************************** 40. row ***************************
event_time: 2025-12-19 11:52:19.348928
  argument: DELETE FROM import_temporary_tables WHERE temporary_table_name = 'tmp_imp1_20'
*************************** 41. row ***************************
event_time: 2025-12-19 11:52:19.225188
  argument: DROP TABLE tmp_imp1_20
*************************** 42. row ***************************
event_time: 2025-12-19 11:52:18.783897
  argument: TRUNCATE TABLE tmp_imp1_20
*************************** 43. row ***************************
event_time: 2025-12-19 11:52:18.782894
  argument: SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = SCHEMA() AND table_name = 'tmp_imp1_20'
*************************** 44. row ***************************
event_time: 2025-12-19 11:52:18.714744
  argument: INSERT INTO customer_1_binding_tbl (customer_id, user_type, user_status, user_remark, timestamp, creation_date, exit_mailing_id, mailinglist_id, mediatype) (SELECT DISTINCT customer_id, 'W', 1, 'CSV File Upload', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 0, 3, 0 FROM tmp_imp1_20 temp WHERE (customer_id != 0 AND customer_id IS NOT NULL) AND NOT EXISTS (SELECT 1 FROM customer_1_binding_tbl bind WHERE temp.customer_id = bind.customer_id AND 3 = bind.mailinglist_id AND 0 = bind.mediatype))
*************************** 45. row ***************************
event_time: 2025-12-19 11:52:17.025088
  argument: UPDATE customer_1_tbl SET timestamp = CURRENT_TIMESTAMP, cleaned_date = NULL , latest_datasource_id = 20 WHERE (email) IN (SELECT DISTINCT email FROM tmp_imp1_20 WHERE customer_id != 0 AND customer_id IS NOT NULL)
*************************** 46. row ***************************
event_time: 2025-12-19 11:52:17.023257
  argument: UPDATE customer_1_tbl dst JOIN (SELECT * FROM tmp_imp1_20 WHERE csvindex IN (SELECT MAX(src.csvindex) FROM tmp_imp1_20 src GROUP BY src.email)) AS updatevalues ON updatevalues.email = dst.email AND updatevalues.email IS NOT NULL SET dst.firstname = updatevalues.firstname, dst.lastname = updatevalues.lastname, dst.storecode = updatevalues.storecode, dst.store_name = updatevalues.store_name, dst.coupon_code = updatevalues.coupon_code, dst.unsubscribelink = updatevalues.unsubscribelink
*************************** 47. row ***************************
event_time: 2025-12-19 11:52:17.022763
  argument: UPDATE tmp_imp1_20 src SET customer_id = (SELECT MAX(customer_id) FROM customer_1_tbl dst WHERE src.email = dst.email AND src.email IS NOT NULL) WHERE (customer_id IS NULL OR customer_id = 0) AND dbl IS NOT NULL
*************************** 48. row ***************************
event_time: 2025-12-19 11:52:17.022349
  argument: INSERT INTO customer_1_tbl (creation_date, timestamp, datasource_id, latest_datasource_id, mailtype, gender, email, firstname, lastname, storecode, store_name, coupon_code, unsubscribelink) (SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 20, 20, 1, 2, email, firstname, lastname, storecode, store_name, coupon_code, unsubscribelink FROM tmp_imp1_20 WHERE (customer_id = 0 OR customer_id IS NULL) AND dbl IS NULL)
*************************** 49. row ***************************
event_time: 2025-12-19 11:52:17.022005
  argument: DELETE FROM tmp_imp1_20 WHERE (customer_id = 0 OR customer_id IS NULL) AND (email IS NULL OR email = '')
*************************** 50. row ***************************
event_time: 2025-12-19 11:52:17.015195
  argument: SELECT COUNT(*) FROM tmp_imp1_20 WHERE customer_id > 0
*************************** 51. row ***************************
event_time: 2025-12-19 11:52:16.950145
  argument: UPDATE tmp_imp1_20 dst SET dst.customer_id = COALESCE((SELECT MIN(src.customer_id) FROM customer_1_tbl src WHERE src.email = dst.email AND src.email IS NOT NULL), 0)
*************************** 52. row ***************************
event_time: 2025-12-19 11:52:16.873934
  argument: UPDATE tmp_imp1_20 SET dbl = NULL WHERE csvindex = dbl
*************************** 53. row ***************************
event_time: 2025-12-19 11:52:16.835175
  argument: UPDATE tmp_imp1_20 SET dbl = (SELECT subselect.csvindex FROM (SELECT email, MIN(csvindex) AS csvindex FROM tmp_imp1_20 GROUP BY email) subselect WHERE tmp_imp1_20.email = subselect.email AND tmp_imp1_20.email IS NOT NULL)
*************************** 54. row ***************************
event_time: 2025-12-19 11:52:16.834369
  argument: DELETE FROM tmp_imp1_20 WHERE EXISTS (SELECT 1 FROM cust1_ban_tbl ban WHERE tmp_imp1_20.email = ban.email AND NOT ban.email LIKE '%*%' AND NOT ban.email LIKE '%|%%' ESCAPE '|')
*************************** 55. row ***************************
event_time: 2025-12-19 11:52:16.833945
  argument: SELECT COUNT(*) FROM tmp_imp1_20 WHERE dbl IS NOT NULL
*************************** 56. row ***************************
event_time: 2025-12-19 11:52:16.761917
  argument: INSERT INTO tmp_imp1_20 (email, firstname, lastname, storecode, store_name, coupon_code, unsubscribelink, csvindex) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
*************************** 57. row ***************************
event_time: 2025-12-19 11:52:16.761850
  argument: INSERT INTO tmp_imp1_20 (email, firstname, lastname, storecode, store_name, coupon_code, unsubscribelink, csvindex) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
*************************** 58. row ***************************
event_time: 2025-12-19 11:52:16.481517
  argument: CREATE INDEX tmp_imp1_20dblix ON tmp_imp1_20 (dbl)
*************************** 59. row ***************************
event_time: 2025-12-19 11:52:16.380085
  argument: ALTER TABLE tmp_imp1_20 ADD dbl INTEGER
*************************** 60. row ***************************
event_time: 2025-12-19 11:52:16.379309
  argument: SELECT * FROM tmp_imp1_20 WHERE 1 = 0
*************************** 61. row ***************************
event_time: 2025-12-19 11:52:16.082344
  argument: CREATE INDEX tmp_imp1_20csvix ON tmp_imp1_20 (csvindex)
*************************** 62. row ***************************
event_time: 2025-12-19 11:52:15.874921
  argument: ALTER TABLE tmp_imp1_20 ADD csvindex INTEGER
*************************** 63. row ***************************
event_time: 2025-12-19 11:52:15.874140
  argument: SELECT * FROM tmp_imp1_20 WHERE 1 = 0
*************************** 64. row ***************************
event_time: 2025-12-19 11:52:15.528169
  argument: CREATE INDEX tmp_20_email_idx ON tmp_imp1_20 (email)
*************************** 65. row ***************************
event_time: 2025-12-19 11:52:15.247809
  argument: CREATE INDEX tmp_20_cust_idx ON tmp_imp1_20 (customer_id)
*************************** 66. row ***************************
event_time: 2025-12-19 11:52:15.147296
  argument: ALTER TABLE tmp_imp1_20 MODIFY email varchar(100) NULL
*************************** 67. row ***************************
event_time: 2025-12-19 11:52:14.897792
  argument: ALTER TABLE tmp_imp1_20 MODIFY mailtype int(10) NULL
*************************** 68. row ***************************
event_time: 2025-12-19 11:52:14.695025
  argument: ALTER TABLE tmp_imp1_20 MODIFY bounceload int(10) NULL
*************************** 69. row ***************************
event_time: 2025-12-19 11:52:14.600971
  argument: ALTER TABLE tmp_imp1_20 MODIFY customer_id int(10) NULL
*************************** 70. row ***************************
event_time: 2025-12-19 11:52:14.309578
  argument: ALTER TABLE tmp_imp1_20 MODIFY gender int(10) NULL
*************************** 71. row ***************************
event_time: 2025-12-19 11:52:14.308067
  argument: SELECT column_name, data_type, character_maximum_length, numeric_precision, numeric_scale, is_nullable FROM information_schema.columns WHERE table_schema = SCHEMA() AND LOWER(table_name) = LOWER('tmp_imp1_20') ORDER BY column_name
*************************** 72. row ***************************
event_time: 2025-12-19 11:52:14.181282
  argument: ALTER TABLE tmp_imp1_20 MODIFY lastname VARCHAR(100) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci
*************************** 73. row ***************************
event_time: 2025-12-19 11:52:13.901146
  argument: ALTER TABLE tmp_imp1_20 MODIFY firstname VARCHAR(100) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci
*************************** 74. row ***************************
event_time: 2025-12-19 11:52:13.727133
  argument: CREATE TABLE tmp_imp1_20 ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AS SELECT * FROM customer_1_tbl WHERE 1 = 0
*************************** 75. row ***************************
event_time: 2025-12-19 11:52:13.726483
  argument: SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = SCHEMA() AND table_name = 'tmp_imp1_20'
*************************** 76. row ***************************
event_time: 2025-12-19 11:52:13.717323
  argument: INSERT INTO import_temporary_tables (session_id, temporary_table_name, import_table_name, host, description) VALUES('D804FF1F11EEB4AC6597807A469D8C8B', 'tmp_imp1_20', 'customer_1_tbl', 'openemm2.xx.de', 'Import by emm-master')
76 rows in set (0.130 sec)
pquotto
Posts: 24
Joined: Wed Apr 23, 2025 4:38 pm

Re: CSV Import fails with "user_status" cannot be null

Post by pquotto »

Do you still have access to the .ova files and can share them? I want to test the migration on the .ova files to make sure its not some setting on my servers.

I have access to 22.10, 24.04, 24.10 and 25.04 but I am missing 20.04, 20.10, 21.04, 21.10, 22.04 and 23.x.
So far I did not test any upgrade on the .ova files.

Thanks
maschoff
Site Admin
Posts: 2661
Joined: Thu Aug 03, 2006 10:20 am
Location: Munich, Germany
Contact:

Re: CSV Import fails with "user_status" cannot be null

Post by maschoff »

Download link for OVA 24.10 is https://share.agnitas.de/index.php/s/gbe4JZwjepB4j5L

You can build executables of old OpenEMM versions from GitHub at https://github.com/agnitas-org/openemm/branches/all
OpenEMM Maintainer
Post Reply