directus / v8-archive

Directus Database API — Wraps Custom SQL Databases with a REST/GraphQL API
https://docs.directus.io/api/reference.html
505 stars 204 forks source link

Impossible to edit Translation field #2204

Open fribeau opened 4 years ago

fribeau commented 4 years ago

Bug Report

I am unable to edit a Translation field once it has been saved.

Steps to Reproduce

  1. Create junction collection market_category_translations (no default fields)
  2. Add fields : market_category_id (number), language (text), content (text)
  3. Create collection market_categories (with status and sort)
  4. Add field name (translation) image
  5. Save
  6. Open field name to edit some parameters (languages, display template, anything) image

Expected Behavior

Be able to edit the name field.

Actual Behavior

If I check the logs in logs/error.2020-04-24.log, I get this:

[2020-04-24 19:56:43] api[courbis].ERROR: Directus\Exception\SQLException: Statement could not be executed (42S22 - 1054 - Unknown column 'name' in 'where clause') in /var/www/directus/src/endpoints/Fields.php:122
Stack trace:
#0 [internal function]: Directus\Api\Routes\Fields->update
directus/directus#1 /var/www/directus/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func
directus/directus#2 /var/www/directus/vendor/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke
directus/directus#3 /var/www/directus/src/core/Directus/Application/Http/Middleware/AbstractRateLimitMiddleware.php(34): Slim\Route->__invoke
directus/directus#4 [internal function]: Directus\Application\Http\Middleware\AbstractRateLimitMiddleware->__invoke
directus/directus#5 /var/www/directus/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array
directus/directus#6 [internal function]: Slim\DeferredCallable->__invoke
directus/directus#7 /var/www/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func
directus/directus#8 /var/www/directus/src/core/Directus/Application/Http/Middleware/AuthenticationMiddleware.php(124): Slim\Route->Slim\{closure}
directus/directus#9 [internal function]: Directus\Application\Http\Middleware\AuthenticationMiddleware->__invoke
directus/directus#10 /var/www/directus/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array
directus/directus#11 [internal function]: Slim\DeferredCallable->__invoke
directus/directus#12 /var/www/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func
directus/directus#13 /var/www/directus/src/core/Directus/Application/Http/Middleware/TableGatewayMiddleware.php(25): Slim\Route->Slim\{closure}
directus/directus#14 [internal function]: Directus\Application\Http\Middleware\TableGatewayMiddleware->__invoke
directus/directus#15 /var/www/directus/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array
directus/directus#16 [internal function]: Slim\DeferredCallable->__invoke
directus/directus#17 /var/www/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func
directus/directus#18 /var/www/directus/src/core/Directus/Application/Http/Middleware/DatabaseMigrationMiddleware.php(15): Slim\Route->Slim\{closure}
directus/directus#19 [internal function]: Directus\Application\Http\Middleware\DatabaseMigrationMiddleware->__invoke
directus/directus#20 /var/www/directus/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array
directus/directus#21 [internal function]: Slim\DeferredCallable->__invoke
directus/directus#22 /var/www/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func
directus/directus#23 /var/www/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->Slim\{closure}
directus/directus#24 /var/www/directus/vendor/slim/slim/Slim/Route.php(268): Slim\Route->callMiddlewareStack
directus/directus#25 /var/www/directus/vendor/slim/slim/Slim/App.php(503): Slim\Route->run
directus/directus#26 /var/www/directus/src/core/Directus/Application/Http/Middleware/AbstractRateLimitMiddleware.php(34): Slim\App->__invoke
directus/directus#27 [internal function]: Directus\Application\Http\Middleware\AbstractRateLimitMiddleware->__invoke
directus/directus#28 /var/www/directus/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array
directus/directus#29 [internal function]: Slim\DeferredCallable->__invoke
directus/directus#30 /var/www/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func
directus/directus#31 /var/www/directus/vendor/directus/proxy-detection/src/ProxyDetectionMiddleware.php(30): Slim\App->Slim\{closure}
directus/directus#32 /var/www/directus/src/core/Directus/Application/Http/Middleware/ProxyMiddleware.php(18): RKA\Middleware\ProxyDetectionMiddleware->__invoke
directus/directus#33 [internal function]: Directus\Application\Http\Middleware\ProxyMiddleware->__invoke
directus/directus#34 /var/www/directus/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array
directus/directus#35 [internal function]: Slim\DeferredCallable->__invoke
directus/directus#36 /var/www/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func
directus/directus#37 /var/www/directus/vendor/akrabat/ip-address-middleware/src/IpAddress.php(113): Slim\App->Slim\{closure}
directus/directus#38 [internal function]: RKA\Middleware\IpAddress->__invoke
directus/directus#39 /var/www/directus/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array
directus/directus#40 [internal function]: Slim\DeferredCallable->__invoke
directus/directus#41 /var/www/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func
directus/directus#42 /var/www/directus/src/core/Directus/Application/Http/Middleware/CorsMiddleware.php(71): Slim\App->Slim\{closure}
directus/directus#43 [internal function]: Directus\Application\Http\Middleware\CorsMiddleware->__invoke
directus/directus#44 /var/www/directus/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array
directus/directus#45 [internal function]: Slim\DeferredCallable->__invoke
directus/directus#46 /var/www/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func
directus/directus#47 /var/www/directus/src/core/Directus/Application/Http/Middleware/ResponseCacheMiddleware.php(63): Slim\App->Slim\{closure}
directus/directus#48 [internal function]: Directus\Application\Http\Middleware\ResponseCacheMiddleware->__invoke
directus/directus#49 /var/www/directus/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array
directus/directus#50 [internal function]: Slim\DeferredCallable->__invoke
directus/directus#51 /var/www/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func
directus/directus#52 /var/www/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->Slim\{closure}
directus/directus#53 /var/www/directus/vendor/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack
directus/directus#54 /var/www/directus/vendor/slim/slim/Slim/App.php(297): Slim\App->process
directus/directus#55 /var/www/directus/src/core/Directus/Application/Application.php(161): Slim\App->run
directus/directus#56 /var/www/directus/public/index.php(5): Directus\Application\Application->run [] []

Other Context & Screenshots

image image

Technical Details

benhaynes commented 4 years ago

@directus/team — App or API?

fribeau commented 4 years ago

It wired. I have deleted all my collections and recreated them with exactly the same fields except I have prefixed all my fields name with afs_. Now I do not have the error and I can edit the translation field except the required parameter.

If I try to change the required parameter in my translation field, I get the same error than above.

rijkvanzanten commented 4 years ago

@fribeau Are you able to accurately reproduce it? Do you still have the old broken one saved somewhere and would you be able to provide a dump?

Annoying issue for sure, but near impossible to reproduce at this point :(

fribeau commented 4 years ago

@rijkvanzanten I cannot reproduce it anymore. I have tried to reproduce it on https://demo.directus.io but I was not able to get the error. However, I cannot edit the required parameter as mentioned in my previous comment. But maybe is it the expected behavior.