I'm having enormous problems implementing Basic Actions on our MySQL database. I am running the latest version of Metabase. All of my models are straight SELECTs from the raw data, via the notebook editor with no filtering or custom columns.
1 - The UPDATE or DELETE actions from the object detail view give the error No destination parameter found for #{"id"}.
2 - Executing the CREATE action from either a dashboard or in the actions view gives the error Unknown column 'ID' in 'where clause'.
Both these errors are very strange - it appears as if you are assuming that every table has a Primary Key column called "ID"?
is the ID column mandatory on the table you want to insert to?
Was there a resolution to this?
I know its out of date, but this seem to happen when using basic actions + models in the “Upload” schema.
What’s the “Upload” schema?
Basic actions require a single-column PK.
The upload models are special as they include a ID column PK (called _mb_row_id, on PostgreSQL at least) that’s automatically added as part of the upload process. Basic actions created on uploaded tables will use this PK. Note that actions on the upload db is not enabled by default, and should be enabled with care as refreshing the data in the backing table will destroy any changes performed through actions.
With respect to OP, It’s possible the table metadata is incorrect, the table definition was changed after creating the actions, or there was a bug in earlier times that didn’t attach this properly. At this stage it’s ancient history (and OP never came back to address the replies) so no telling what was going on there.
So what I found on my local testing is that if I enable Basic Action on top of a model thats using an “upload” table, I get No destination parameter found for #{"id"}. Found: ("_mb_row_id" "exclusion_date_start" "user") when I try to run the Update action on the details pane.
For completeness, what version of Metabase, and have you tried it on a freshly uploaded file?
I wasn’t able to reproduce this issue on 0.59.
Im on 0.59 as well.
I tested it on a fresh upload/model and got the same error.
"metabase-info": {
"databases": \[
"h2",
"mysql"
\],
"run-mode": "prod",
"plan-alias": "",
"version": {
"date": "2026-04-22",
"tag": "v0.59.8.2",
"hash": "9905305"
},*...*
I wonder if it is a PostgreSQL vs MySQL thing. I’ll set up a test.
I was able to trigger the error message from the detail view when viewing the model’s table. Either Update or Delete actions will fail. Create is working fine from either the model edit panel or from a dashboard with a defined action button, so that seems to be an improvement over OP’s situation.
I checked that the _mb_row_id column is marked as an Entity Key in the metadata. Also can reproduce on both PostgreSQL and MySQL, so its not a database specific thing.
At this point its time for some code spelunking to see where the id column reference is coming from.
I’ll have to pick this up tomorrow.
I‘ve determined that only the Detail pane three-dots menu Actions fail when the Model has a Entity Key column not called id. Actions invoked from the definition page and dashboards work fine with such a model.
I have opened the following GitHub issue to get this problem fixed:
opened 02:30AM - 04 May 26 UTC
Type:Bug
Priority:P2
Querying/Models
.Team/Querying
Semantic Layer/Models
.Auto triaged
### Describe the bug
When Basic Actions are enabled on a model, the Actions ava… ilable from the 3-dots menu in the Details slide-out panel when viewing a Model's table require a specific table schema that does not apply to other areas where Actions are invoked. In particular, the Details version requires the primary key of the model be named `id`. This restriction does not apply to other Action invocations, such as from the Actions definition screen for the Model, or from Action buttons defined in a dashboard.
### To Reproduce
1. Create a table with a PK column that is not called `id`. Optionally load some sample data.
2. Add this table to Metabase. Make sure the PK column is marked as an Entity Key.
3. Create a simple question of the table and convert it to a Model.
4. Go to the Actions panel for the Model and enable Basic Actions.
5. Use the Create Basic Action to create a row in the table if it is empty.
6. Return to the Model table display.
7. Click the Details disclosure button for the row to display the slide-out. Click the 3-dots menu and select either Update or Delete. The following error appears if you select Update. The error appears in a toast if you select Delete and confirm.
<img width="630" height="208" alt="Image" src="https://github.com/user-attachments/assets/8a754f5e-1f94-4a2c-9743-ef902e75ad74" />
### Expected behavior
The update or delete should succeed.
### Logs
(In this log, the alternate PK column is `another_id`.)
```
May 3 19:19:07 carver metabase[1245]: 2026-05-03 19:19:07,222 DEBUG middleware.log :: GET /api/action/21/execute 400 18ms (14 DB calls) {:metabase-user-id 1}
May 3 19:19:07 carver metabase[1245]: {:via
May 3 19:19:07 carver metabase[1245]: [{:type clojure.lang.ExceptionInfo,
May 3 19:19:07 carver metabase[1245]: :message "No destination parameter found for #{\"id\"}. Found: (\"another_id\" \"a\")",
May 3 19:19:07 carver metabase[1245]: :data
May 3 19:19:07 carver metabase[1245]: {:status-code 400,
May 3 19:19:07 carver metabase[1245]: :message "No destination parameter found for #{\"id\"}. Found: (\"another_id\" \"a\")",
May 3 19:19:07 carver metabase[1245]: :type :invalid-parameter,
May 3 19:19:07 carver metabase[1245]: :parameters {"id" "1"},
May 3 19:19:07 carver metabase[1245]: :destination-parameters ("another_id" "a")},
May 3 19:19:07 carver metabase[1245]: :at [metabase.api.common$check_one invokeStatic "common.clj" 148]}],
May 3 19:19:07 carver metabase[1245]: :trace
May 3 19:19:07 carver metabase[1245]: [[metabase.api.common$check_one invokeStatic "common.clj" 148]
May 3 19:19:07 carver metabase[1245]: [metabase.api.common$check_one invoke "common.clj" 142]
May 3 19:19:07 carver metabase[1245]: [metabase.api.common$check invokeStatic "common.clj" 178]
May 3 19:19:07 carver metabase[1245]: [metabase.api.common$check doInvoke "common.clj" 151]
May 3 19:19:07 carver metabase[1245]: [clojure.lang.RestFn invoke "RestFn.java" 442]
May 3 19:19:07 carver metabase[1245]: [metabase.actions.execution$check_no_extra_parameters invokeStatic "execution.clj" 99]
May 3 19:19:07 carver metabase[1245]: [metabase.actions.execution$check_no_extra_parameters invoke "execution.clj" 94]
May 3 19:19:07 carver metabase[1245]: [metabase.actions.execution$build_implicit_query invokeStatic "execution.clj" 133]
May 3 19:19:07 carver metabase[1245]: [metabase.actions.execution$build_implicit_query invoke "execution.clj" 114]
May 3 19:19:07 carver metabase[1245]: [metabase.actions.execution$fetch_implicit_action_values invokeStatic "execution.clj" 238]
May 3 19:19:07 carver metabase[1245]: [metabase.actions.execution$fetch_implicit_action_values invoke "execution.clj" 232]
May 3 19:19:07 carver metabase[1245]: [metabase.actions.execution$fetch_values invokeStatic "execution.clj" 265]
May 3 19:19:07 carver metabase[1245]: [metabase.actions.execution$fetch_values invoke "execution.clj" 260]
May 3 19:19:07 carver metabase[1245]: [metabase.actions_rest.api$fn__108731$fn__108738 invoke "api.clj" 198]
May 3 19:19:07 carver metabase[1245]: [metabase.api.macros$_core_fn$core_fn__93641 invoke "macros.clj" 426]
May 3 19:19:07 carver metabase[1245]: [metabase.api.macros$endpoint_handler_STAR_$handler__93683 invoke "macros.clj" 622]
May 3 19:19:07 carver metabase[1245]: [metabase.api.macros$build_ns_handler$ns_handler_STAR___93709 invoke "macros.clj" 696]
May 3 19:19:07 carver metabase[1245]: [metabase.api.open_api.HandlerWithOpenAPISpec invoke "open_api.clj" 42]
May 3 19:19:07 carver metabase[1245]: [metabase.api.routes.common$enforce_authentication$fn__94128 invoke "common.clj" 92]
May 3 19:19:07 carver metabase[1245]: [metabase.api.open_api.HandlerWithOpenAPISpec invoke "open_api.clj" 42]
May 3 19:19:07 carver metabase[1245]: [metabase.api.util.handlers$_route_map_handler$fn__94041 invoke "handlers.clj" 23]
May 3 19:19:07 carver metabase[1245]: [metabase.api.open_api.HandlerWithOpenAPISpec invoke "open_api.clj" 42]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979 invoke "core.clj" 198]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979$respond_SINGLEQUOTE___93980 invoke "core.clj" 197]
May 3 19:19:07 carver metabase[1245]: [metabase.api_routes.routes$fn__132200 invokeStatic "routes.clj" 116]
May 3 19:19:07 carver metabase[1245]: [metabase.api_routes.routes$fn__132200 invoke "routes.clj" 115]
May 3 19:19:07 carver metabase[1245]: [metabase.api.open_api.HandlerWithOpenAPISpec invoke "open_api.clj" 42]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979 invoke "core.clj" 198]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978 invoke "core.clj" 200]
May 3 19:19:07 carver metabase[1245]: [metabase.api.open_api.HandlerWithOpenAPISpec invoke "open_api.clj" 42]
May 3 19:19:07 carver metabase[1245]: [clojure.lang.Var invoke "Var.java" 395]
May 3 19:19:07 carver metabase[1245]: [metabase.server.routes$api_handler$api_handler_STAR___108094 invoke "routes.clj" 88]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979 invoke "core.clj" 198]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978 invoke "core.clj" 200]
May 3 19:19:07 carver metabase[1245]: [compojure.core$make_context$handler__94006 invoke "core.clj" 290]
May 3 19:19:07 carver metabase[1245]: [compojure.core$make_context$fn__94010 invoke "core.clj" 300]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979 invoke "core.clj" 198]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979$respond_SINGLEQUOTE___93980 invoke "core.clj" 197]
May 3 19:19:07 carver metabase[1245]: [compojure.core$wrap_route_matches$fn__93959 invoke "core.clj" 153]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979 invoke "core.clj" 198]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979$respond_SINGLEQUOTE___93980 invoke "core.clj" 197]
May 3 19:19:07 carver metabase[1245]: [compojure.core$wrap_route_matches$fn__93959 invoke "core.clj" 153]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979 invoke "core.clj" 198]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979$respond_SINGLEQUOTE___93980 invoke "core.clj" 197]
May 3 19:19:07 carver metabase[1245]: [compojure.core$wrap_route_matches$fn__93959 invoke "core.clj" 152]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979 invoke "core.clj" 198]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979$respond_SINGLEQUOTE___93980 invoke "core.clj" 197]
May 3 19:19:07 carver metabase[1245]: [compojure.core$wrap_route_matches$fn__93959 invoke "core.clj" 152]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979 invoke "core.clj" 198]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979$respond_SINGLEQUOTE___93980 invoke "core.clj" 197]
May 3 19:19:07 carver metabase[1245]: [compojure.core$wrap_route_matches$fn__93959 invoke "core.clj" 152]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979 invoke "core.clj" 198]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979$respond_SINGLEQUOTE___93980 invoke "core.clj" 197]
May 3 19:19:07 carver metabase[1245]: [compojure.core$wrap_route_matches$fn__93959 invoke "core.clj" 152]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979 invoke "core.clj" 198]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979$respond_SINGLEQUOTE___93980 invoke "core.clj" 197]
May 3 19:19:07 carver metabase[1245]: [compojure.core$wrap_route_matches$fn__93959 invoke "core.clj" 152]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979 invoke "core.clj" 198]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979$respond_SINGLEQUOTE___93980 invoke "core.clj" 197]
May 3 19:19:07 carver metabase[1245]: [metabase.api.util.handlers$_route_map_handler$fn__94041 invoke "handlers.clj" 24]
May 3 19:19:07 carver metabase[1245]: [metabase.api.open_api.HandlerWithOpenAPISpec invoke "open_api.clj" 42]
May 3 19:19:07 carver metabase[1245]: [metabase.api.util.handlers$_route_map_handler$fn__94041 invoke "handlers.clj" 23]
May 3 19:19:07 carver metabase[1245]: [metabase.api.open_api.HandlerWithOpenAPISpec invoke "open_api.clj" 42]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978$f__93979 invoke "core.clj" 198]
May 3 19:19:07 carver metabase[1245]: [compojure.core$routes$fn__93978 invoke "core.clj" 200]
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.exceptions$catch_uncaught_exceptions$fn__120368 invoke "exceptions.clj" 87]
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.exceptions$catch_api_exceptions$fn__120365 invoke "exceptions.clj" 76]
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.log$log_api_call$fn__115615$fn__115616$fn__115617 invoke "log.clj" 225]
May 3 19:19:07 carver metabase[1245]: [metabase.driver.sql_jdbc.execute.diagnostic$do_with_diagnostic_info invokeStatic "diagnostic.clj" 17]
May 3 19:19:07 carver metabase[1245]: [metabase.driver.sql_jdbc.execute.diagnostic$do_with_diagnostic_info invoke "diagnostic.clj" 12]
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.log$log_api_call$fn__115615$fn__115616 invoke "log.clj" 216]
May 3 19:19:07 carver metabase[1245]: [toucan2.execute$do_with_call_counts invokeStatic "execute.clj" 112]
May 3 19:19:07 carver metabase[1245]: [toucan2.execute$do_with_call_counts invoke "execute.clj" 103]
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.log$log_api_call$fn__115615 invoke "log.clj" 215]
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.browser_cookie$ensure_browser_id_cookie$fn__120596 invoke "browser_cookie.clj" 40]
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.security$add_security_headers$fn__120331 invoke "security.clj" 334]
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.json$wrap_json_body$fn__120038 invoke "json.clj" 128]
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.offset_paging$handle_paging$fn__120456 invoke "offset_paging.clj" 48]
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.metadata_provider_cache$wrap_metadata_provider_cache$fn__120606
May 3 19:19:07 carver metabase[1245]: 11]
May 3 19:19:07 carver metabase[1245]: [ring.middleware.params$wrap_params$fn__120890 invoke "params.clj" 77]
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.session$reset_session_timeout$fn__120584 invoke "session.clj" 299]
May 3 19:19:07 carver metabase[1245]: [metabase.request.session$do_with_current_user$do_with_user_local_values__85436 invoke "session.clj" 57]
May 3 19:19:07 carver metabase[1245]: [metabase.request.session$do_with_current_user invoke "session.clj" 38]
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.premium_features_cache$wrap_premium_features_cache_check$fn__120434
May 3 19:19:07 carver metabase[1245]: "premium_features_cache.clj"
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.settings_cache$wrap_settings_cache_check$fn__120401 invoke "settings_cache.clj" 50]
May 3 19:19:07 carver metabase[1245]: [metabase.analytics.sdk$embedding_mw$embedding_mw_fn__61271 invoke "sdk.clj" 69]
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.session$wrap_session_key$fn__120518 invoke "session.clj" 90]
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.auth$wrap_static_api_key$fn__117351 invoke "auth.clj" 17]
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.misc$add_content_type$fn__114456 invoke "misc.clj" 47]
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.request_id$wrap_request_id$fn__108774 invoke "request_id.clj" 10]
May 3 19:19:07 carver metabase[1245]: [metabase.server.middleware.misc$bind_request$fn__114496 invoke "misc.clj" 105]
May 3 19:19:07 carver metabase[1245]: [org.eclipse.jetty.ee9.nested.ScopedHandler handle "ScopedHandler.java" 125]
May 3 19:19:07 carver metabase[1245]: [org.eclipse.jetty.ee9.nested.ScopedHandler nextHandle "ScopedHandler.java" 195]
May 3 19:19:07 carver metabase[1245]: [metabase.server.instance.proxy$org.eclipse.jetty.ee9.servlet.ServletHandler$ff19274a doScope nil -1]
May 3 19:19:07 carver metabase[1245]: [org.eclipse.jetty.ee9.nested.ScopedHandler handle "ScopedHandler.java" 123]
May 3 19:19:07 carver metabase[1245]: [org.eclipse.jetty.ee9.nested.HttpChannel handle "HttpChannel.java" 520]
May 3 19:19:07 carver metabase[1245]: [org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker run "HttpChannelState.java" 787]
May 3 19:19:07 carver metabase[1245]: [org.eclipse.jetty.io.SelectableChannelEndPoint$1 run "SelectableChannelEndPoint.java" 54]
May 3 19:19:07 carver metabase[1245]: [org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy tryProduce "AdaptiveExecutionStrategy.java" 255]
May 3 19:19:07 carver metabase[1245]: [org.eclipse.jetty.util.thread.QueuedThreadPool runJob "QueuedThreadPool.java" 1009]
May 3 19:19:07 carver metabase[1245]: :cause "No destination parameter found for #{\"id\"}. Found: (\"another_id\" \"a\")",
May 3 19:19:07 carver metabase[1245]: :type :invalid-parameter,
May 3 19:19:07 carver metabase[1245]: :message "No destination parameter found for #{\"id\"}. Found: (\"another_id\" \"a\")",
May 3 19:19:07 carver metabase[1245]:
```
### Information about your Metabase installation
```JSON
{
"browser-info": {
"language": "en-US",
"platform": "MacIntel",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:150.0) Gecko/20100101 Firefox/150.0",
"vendor": ""
},
"metabase-info": {
"databases": [
"postgres",
"h2",
"mysql"
],
"run-mode": "prod",
"plan-alias": "",
"version": {
"date": "2026-04-29",
"tag": "v0.59.9.1",
"hash": "f6c5749"
},
"settings": {
"report-timezone": null
},
"hosting-env": "unknown",
"application-database": "postgres",
"application-database-details": {
"database": {
"name": "PostgreSQL",
"version": "18.3"
},
"jdbc-driver": {
"name": "PostgreSQL JDBC Driver",
"version": "42.7.8"
}
}
},
"system-info": {
"file.encoding": "UTF-8",
"java.runtime.name": "OpenJDK Runtime Environment",
"java.runtime.version": "21.0.10+7-1",
"java.vendor": "OpenJDK BSD Porting Team",
"java.vendor.url": "https://github.com/battleblow/jdk21u/",
"java.version": "21.0.10",
"java.vm.name": "OpenJDK 64-Bit Server VM",
"java.vm.version": "21.0.10+7-1",
"os.name": "FreeBSD",
"os.version": "14.4-RELEASE-p3",
"user.language": "en",
"user.timezone": "America/Los_Angeles"
}
}
```
### Severity
Blocks some users
### Additional context
This Discourse thread has some context:
https://discourse.metabase.com/t/basic-actions-unknown-column-id/93912/7