[Frage] Scheduler-Extension: Unerklärlicher Error TYPO3-Version: 6.1.1

  • 0 x
    28 Beiträge
    1 Hilfreiche Beiträge
    30. 09. 2013, 16:21

    Ich habe soeben eine eigene Extension erstellt, die alte One Time Accounts löschen soll, wenn ein Seminar bereits vorüber ist.

    Der Cron ist auch richtig angelegt. Nur erfolgt bei der Ausführung folgender Fehler:
    [b]Die Ausführung von Task "Delete old one time Accounts (tx_delete_ota)" ist fehlgeschlagen mit folgender Meldung: Could not ota: You can't specify target table 'fe_users' for update in FROM clause[/b]

    Meine Klasse dazu sieht wie folgt aus:

    1. class tx_delete_ota extends tx_scheduler_Task {
    2. public function execute() {
    3. $GLOBALS['TYPO3_DB']->exec_DELETEquery('fe_users',
    4. 'uid = (SELECT fe_users.uid from fe_users INNER JOIN tx_seminars_attendances ON tx_seminars_attendances.user = fe_users.uid INNER JOIN tx_seminars_seminars ON tx_seminars_seminars.uid = tx_seminars_attendances.seminar WHERE tx_seminars_seminars.end_date >= CURDATE())');
    5.  
    6. if ($GLOBALS['TYPO3_DB']->sql_error()) {
    7. throw new RuntimeException(
    8. 'Could not delete ota: ' . $GLOBALS['TYPO3_DB']->sql_error(),
    9. 1357600181
    10. );
    11. }
    12. else {
    13. t3lib_div::devLog('delete ota: '.$GLOBALS['TYPO3_DB']->sql_affected_rows(), 'tx_delete_ota', 0);
    14. }
    15.  
    16. return true;
    17. }
    18. }

    wo liegt hier mein Fehler?


  • 1
  • 0 x
    28 Beiträge
    1 Hilfreiche Beiträge
    30. 09. 2013, 16:27

    die QUERY sollte auch an sich gültig sein... via

    1. SELECT *
    2. FROM fe_users
    3. WHERE uid = (
    4. SELECT fe_users.uid
    5. FROM fe_users
    6. INNER JOIN tx_seminars_attendances ON tx_seminars_attendances.user = fe_users.uid
    7. INNER JOIN tx_seminars_seminars ON tx_seminars_seminars.uid = tx_seminars_attendances.seminar
    8. WHERE tx_seminars_seminars.end_date >= CURDATE( ) )

    wurde sie getestet direkt in phpMyAdmin - erfolgreich.

  • 1