medusa
medusa copied to clipboard
Can't create discounts in starter
Bug report
Describe the bug
Cannot create / save as draft / publish basic discount codes or templated discount codes. Multiple errors encountered.
System information
Medusa version (including plugins): no plugins, starter/hello world install from MedusaJS website Node.js version: v18.7.0 Database: sqlite Operating system: EndeavourOS (ArchLinux) Browser (if relevant): Firefox Developer Edition
Steps to reproduce the behavior
- Setup Medusa Server and Admin according to instructions here: https://docs.medusajs.com/admin/quickstart
- Go to Discounts > Add Discount
- Supply any details -- region, code, value, description etc.
- Attempt to Save Draft or Publish
- See error
- on frontend admin ("an unknown error occured")
- on browser console (error 400 and 500 service errors)
- on running console for medusa backend (unique constraint failure)
Expected behavior
Discount is saved as drafted or published and record is created
Screenshots
Ultimately managed to create 1 discount code with random characters don't know how (see screenshot) but now cannot see any additional ones --- no errors in console, browser console or frontend .
Attempt at new code creation publishes fine with no errors received but also no records present in list of discount codes.
Further work using https://docs.medusajs.com/usage/create-medusa-app -- simple discount is able to be created and shows up in list BUT "test2" which is a Template Discount doesn't / isnt visible in that list
-- so I searched for it and it says it's an existing Discount
-- browser console seems to be hitting multiple service(?) endpoints, none of them discounts and returning Error 500
-- shell console appears to be hitting admin/batch-jobs path and orders path with failed SQL queries both times (see excerpt below)
-- clicking through to the search result, test2 clearly exists and can be seen but clicking on breadcrumbs back to Discount shows only TEST1 discount code
::ffff:127.0.0.1 - - [06/Aug/2022:12:50:12 +0000] "GET /admin/discounts?is_dynamic=false&expand=rule%2Crule.conditions%2Crule.conditions.products&offset=0&limit=15 HTTP/1.1" 304 - "http://localhost:7000/" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0"
::ffff:127.0.0.1 - - [06/Aug/2022:12:50:53 +0000] "GET /admin/batch-jobs?failed_at=null HTTP/1.1" 304 - "http://localhost:7000/" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0"
::ffff:127.0.0.1 - - [06/Aug/2022:12:50:58 +0000] "GET /admin/batch-jobs?failed_at=null HTTP/1.1" 304 - "http://localhost:7000/" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0"
::ffff:127.0.0.1 - - [06/Aug/2022:12:51:03 +0000] "GET /admin/batch-jobs?failed_at=null HTTP/1.1" 304 - "http://localhost:7000/" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0"
error: SQLITE_ERROR: near "ILIKE": syntax error
QueryFailedError: SQLITE_ERROR: near "ILIKE": syntax error
at QueryFailedError.TypeORMError [as constructor] (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/error/TypeORMError.js:9:28)
at new QueryFailedError (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/error/QueryFailedError.js:13:28)
at handler (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:117:38)
at replacement (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/sqlite3/lib/trace.js:25:27)
at Statement.errBack (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/sqlite3/lib/sqlite3.js:15:21) {
query: 'SELECT DISTINCT "distinctAlias"."order_id" as "ids_order_id", "distinctAlias"."order_created_at" FROM (SELECT "order"."id" AS "order_id", "order"."created_at" AS "order_created_at", "order"."updated_at" AS "order_updated_at", "order"."status" AS "order_status", "order"."fulfillment_status" AS "order_fulfillment_status", "order"."payment_status" AS "order_payment_status", "order"."display_id" AS "order_display_id", "order"."cart_id" AS "order_cart_id", "order"."customer_id" AS "order_customer_id", "order"."email" AS "order_email", "order"."region_id" AS "order_region_id", "order"."currency_code" AS "order_currency_code", "order"."tax_rate" AS "order_tax_rate", "order"."draft_order_id" AS "order_draft_order_id", "order"."canceled_at" AS "order_canceled_at", "order"."metadata" AS "order_metadata", "order"."no_notification" AS "order_no_notification" FROM "order" "order" INNER JOIN "address" "shipping_address" ON "shipping_address"."id"="order"."shipping_address_id" AND ("shipping_address"."deleted_at" IS NULL) WHERE 1=1 AND ("shipping_address"."first_name" ILIKE ? OR "order"."email" ILIKE ? OR display_id::varchar(255) ILIKE ?)) "distinctAlias" ORDER BY "distinctAlias"."order_created_at" DESC, "order_id" ASC LIMIT 5',
parameters: [ '%test2%', '%test2%', 'test2' ],
driverError: Error: SQLITE_ERROR: near "ILIKE": syntax error
--> in Database#all('SELECT DISTINCT "distinctAlias"."order_id" as "ids_order_id", "distinctAlias"."order_created_at" FROM (SELECT "order"."id" AS "order_id", "order"."created_at" AS "order_created_at", "order"."updated_at" AS "order_updated_at", "order"."status" AS "order_status", "order"."fulfillment_status" AS "order_fulfillment_status", "order"."payment_status" AS "order_payment_status", "order"."display_id" AS "order_display_id", "order"."cart_id" AS "order_cart_id", "order"."customer_id" AS "order_customer_id", "order"."email" AS "order_email", "order"."region_id" AS "order_region_id", "order"."currency_code" AS "order_currency_code", "order"."tax_rate" AS "order_tax_rate", "order"."draft_order_id" AS "order_draft_order_id", "order"."canceled_at" AS "order_canceled_at", "order"."metadata" AS "order_metadata", "order"."no_notification" AS "order_no_notification" FROM "order" "order" INNER JOIN "address" "shipping_address" ON "shipping_address"."id"="order"."shipping_address_id" AND ("shipping_address"."deleted_at" IS NULL) WHERE 1=1 AND ("shipping_address"."first_name" ILIKE ? OR "order"."email" ILIKE ? OR display_id::varchar(255) ILIKE ?)) "distinctAlias" ORDER BY "distinctAlias"."order_created_at" DESC, "order_id" ASC LIMIT 5', [ '%test2%', '%test2%', 'test2' ], [Function: handler])
at SqliteQueryRunner.<anonymous> (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:95:85)
at step (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:144:27)
at Object.next (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:125:57)
at /home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:118:75
at new Promise (<anonymous>)
at __awaiter (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:114:16)
at execute (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:86:78)
at SqliteQueryRunner.<anonymous> (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:139:46)
at step (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:144:27) {
errno: 1,
code: 'SQLITE_ERROR',
__augmented: true
},
errno: 1,
code: 'SQLITE_ERROR',
__augmented: true
}
::ffff:127.0.0.1 - - [06/Aug/2022:12:51:06 +0000] "GET /admin/orders?q=test2&limit=5&offset=0 HTTP/1.1" 500 86 "http://localhost:7000/" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0"
error: SQLITE_ERROR: near "ILIKE": syntax error
QueryFailedError: SQLITE_ERROR: near "ILIKE": syntax error
at QueryFailedError.TypeORMError [as constructor] (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/error/TypeORMError.js:9:28)
at new QueryFailedError (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/error/QueryFailedError.js:13:28)
at handler (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:117:38)
at replacement (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/sqlite3/lib/trace.js:25:27)
at Statement.errBack (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/sqlite3/lib/sqlite3.js:15:21) {
query: 'SELECT DISTINCT "distinctAlias"."product_id" as "ids_product_id" FROM (SELECT "product"."id" AS "product_id" FROM "product" "product" LEFT JOIN "product_variant" "variant" ON "variant"."product_id"="product"."id" AND ("variant"."deleted_at" IS NULL) LEFT JOIN "product_collection" "collection" ON "collection"."id"="product"."collection_id" AND ("collection"."deleted_at" IS NULL) WHERE ( 1=1 AND ("product"."description" ILIKE ? OR "product"."title" ILIKE ? OR "variant"."title" ILIKE ? OR "variant"."sku" ILIKE ? OR "collection"."title" ILIKE ?) ) AND ( "product"."deleted_at" IS NULL )) "distinctAlias" ORDER BY "product_id" ASC LIMIT 5',
parameters: [ '%test2%', '%test2%', '%test2%', '%test2%', '%test2%' ],
driverError: Error: SQLITE_ERROR: near "ILIKE": syntax error
--> in Database#all('SELECT DISTINCT "distinctAlias"."product_id" as "ids_product_id" FROM (SELECT "product"."id" AS "product_id" FROM "product" "product" LEFT JOIN "product_variant" "variant" ON "variant"."product_id"="product"."id" AND ("variant"."deleted_at" IS NULL) LEFT JOIN "product_collection" "collection" ON "collection"."id"="product"."collection_id" AND ("collection"."deleted_at" IS NULL) WHERE ( 1=1 AND ("product"."description" ILIKE ? OR "product"."title" ILIKE ? OR "variant"."title" ILIKE ? OR "variant"."sku" ILIKE ? OR "collection"."title" ILIKE ?) ) AND ( "product"."deleted_at" IS NULL )) "distinctAlias" ORDER BY "product_id" ASC LIMIT 5', [ '%test2%', '%test2%', '%test2%', '%test2%', '%test2%' ], [Function: handler])
at SqliteQueryRunner.<anonymous> (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:95:85)
at step (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:144:27)
at Object.next (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:125:57)
at /home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:118:75
at new Promise (<anonymous>)
at __awaiter (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:114:16)
at execute (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:86:78)
at SqliteQueryRunner.<anonymous> (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:139:46)
at step (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:144:27) {
errno: 1,
code: 'SQLITE_ERROR',
__augmented: true
},
errno: 1,
code: 'SQLITE_ERROR',
__augmented: true
}
::ffff:127.0.0.1 - - [06/Aug/2022:12:51:06 +0000] "GET /admin/products?q=test2&limit=5 HTTP/1.1" 500 86 "http://localhost:7000/" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0"
::ffff:127.0.0.1 - - [06/Aug/2022:12:51:06 +0000] "GET /admin/customers?q=test2&limit=5&offset=0 HTTP/1.1" 304 - "http://localhost:7000/" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0"
::ffff:127.0.0.1 - - [06/Aug/2022:12:51:06 +0000] "GET /admin/discounts?q=test2&limit=5&offset=0 HTTP/1.1" 304 - "http://localhost:7000/" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0"
error: SQLITE_ERROR: near "ILIKE": syntax error
QueryFailedError: SQLITE_ERROR: near "ILIKE": syntax error
at QueryFailedError.TypeORMError [as constructor] (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/error/TypeORMError.js:9:28)
at new QueryFailedError (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/error/QueryFailedError.js:13:28)
at handler (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:117:38)
at replacement (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/sqlite3/lib/trace.js:25:27)
at Statement.errBack (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/sqlite3/lib/sqlite3.js:15:21) {
query: 'SELECT DISTINCT "distinctAlias"."order_id" as "ids_order_id", "distinctAlias"."order_created_at" FROM (SELECT "order"."id" AS "order_id", "order"."created_at" AS "order_created_at", "order"."updated_at" AS "order_updated_at", "order"."status" AS "order_status", "order"."fulfillment_status" AS "order_fulfillment_status", "order"."payment_status" AS "order_payment_status", "order"."display_id" AS "order_display_id", "order"."cart_id" AS "order_cart_id", "order"."customer_id" AS "order_customer_id", "order"."email" AS "order_email", "order"."region_id" AS "order_region_id", "order"."currency_code" AS "order_currency_code", "order"."tax_rate" AS "order_tax_rate", "order"."draft_order_id" AS "order_draft_order_id", "order"."canceled_at" AS "order_canceled_at", "order"."metadata" AS "order_metadata", "order"."no_notification" AS "order_no_notification" FROM "order" "order" INNER JOIN "address" "shipping_address" ON "shipping_address"."id"="order"."shipping_address_id" AND ("shipping_address"."deleted_at" IS NULL) WHERE 1=1 AND ("shipping_address"."first_name" ILIKE ? OR "order"."email" ILIKE ? OR display_id::varchar(255) ILIKE ?)) "distinctAlias" ORDER BY "distinctAlias"."order_created_at" DESC, "order_id" ASC LIMIT 5',
parameters: [ '%test2%', '%test2%', 'test2' ],
driverError: Error: SQLITE_ERROR: near "ILIKE": syntax error
--> in Database#all('SELECT DISTINCT "distinctAlias"."order_id" as "ids_order_id", "distinctAlias"."order_created_at" FROM (SELECT "order"."id" AS "order_id", "order"."created_at" AS "order_created_at", "order"."updated_at" AS "order_updated_at", "order"."status" AS "order_status", "order"."fulfillment_status" AS "order_fulfillment_status", "order"."payment_status" AS "order_payment_status", "order"."display_id" AS "order_display_id", "order"."cart_id" AS "order_cart_id", "order"."customer_id" AS "order_customer_id", "order"."email" AS "order_email", "order"."region_id" AS "order_region_id", "order"."currency_code" AS "order_currency_code", "order"."tax_rate" AS "order_tax_rate", "order"."draft_order_id" AS "order_draft_order_id", "order"."canceled_at" AS "order_canceled_at", "order"."metadata" AS "order_metadata", "order"."no_notification" AS "order_no_notification" FROM "order" "order" INNER JOIN "address" "shipping_address" ON "shipping_address"."id"="order"."shipping_address_id" AND ("shipping_address"."deleted_at" IS NULL) WHERE 1=1 AND ("shipping_address"."first_name" ILIKE ? OR "order"."email" ILIKE ? OR display_id::varchar(255) ILIKE ?)) "distinctAlias" ORDER BY "distinctAlias"."order_created_at" DESC, "order_id" ASC LIMIT 5', [ '%test2%', '%test2%', 'test2' ], [Function: handler])
at SqliteQueryRunner.<anonymous> (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:95:85)
at step (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:144:27)
at Object.next (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:125:57)
at /home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:118:75
at new Promise (<anonymous>)
at __awaiter (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:114:16)
at execute (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:86:78)
at SqliteQueryRunner.<anonymous> (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:139:46)
at step (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:144:27) {
errno: 1,
code: 'SQLITE_ERROR',
__augmented: true
},
errno: 1,
code: 'SQLITE_ERROR',
__augmented: true
}
::ffff:127.0.0.1 - - [06/Aug/2022:12:51:07 +0000] "GET /admin/orders?q=test2&limit=5&offset=0 HTTP/1.1" 500 86 "http://localhost:7000/" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0"
error: SQLITE_ERROR: near "ILIKE": syntax error
QueryFailedError: SQLITE_ERROR: near "ILIKE": syntax error
at QueryFailedError.TypeORMError [as constructor] (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/error/TypeORMError.js:9:28)
at new QueryFailedError (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/error/QueryFailedError.js:13:28)
at handler (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:117:38)
at replacement (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/sqlite3/lib/trace.js:25:27)
at Statement.errBack (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/sqlite3/lib/sqlite3.js:15:21) {
query: 'SELECT DISTINCT "distinctAlias"."product_id" as "ids_product_id" FROM (SELECT "product"."id" AS "product_id" FROM "product" "product" LEFT JOIN "product_variant" "variant" ON "variant"."product_id"="product"."id" AND ("variant"."deleted_at" IS NULL) LEFT JOIN "product_collection" "collection" ON "collection"."id"="product"."collection_id" AND ("collection"."deleted_at" IS NULL) WHERE ( 1=1 AND ("product"."description" ILIKE ? OR "product"."title" ILIKE ? OR "variant"."title" ILIKE ? OR "variant"."sku" ILIKE ? OR "collection"."title" ILIKE ?) ) AND ( "product"."deleted_at" IS NULL )) "distinctAlias" ORDER BY "product_id" ASC LIMIT 5',
parameters: [ '%test2%', '%test2%', '%test2%', '%test2%', '%test2%' ],
driverError: Error: SQLITE_ERROR: near "ILIKE": syntax error
--> in Database#all('SELECT DISTINCT "distinctAlias"."product_id" as "ids_product_id" FROM (SELECT "product"."id" AS "product_id" FROM "product" "product" LEFT JOIN "product_variant" "variant" ON "variant"."product_id"="product"."id" AND ("variant"."deleted_at" IS NULL) LEFT JOIN "product_collection" "collection" ON "collection"."id"="product"."collection_id" AND ("collection"."deleted_at" IS NULL) WHERE ( 1=1 AND ("product"."description" ILIKE ? OR "product"."title" ILIKE ? OR "variant"."title" ILIKE ? OR "variant"."sku" ILIKE ? OR "collection"."title" ILIKE ?) ) AND ( "product"."deleted_at" IS NULL )) "distinctAlias" ORDER BY "product_id" ASC LIMIT 5', [ '%test2%', '%test2%', '%test2%', '%test2%', '%test2%' ], [Function: handler])
at SqliteQueryRunner.<anonymous> (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:95:85)
at step (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:144:27)
at Object.next (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:125:57)
at /home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:118:75
at new Promise (<anonymous>)
at __awaiter (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:114:16)
at execute (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:86:78)
at SqliteQueryRunner.<anonymous> (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:139:46)
at step (/home/prasit/Documents/praxio/my-medusa-store/backend/node_modules/tslib/tslib.js:144:27) {
errno: 1,
code: 'SQLITE_ERROR',
__augmented: true
},
errno: 1,
code: 'SQLITE_ERROR',
__augmented: true
}
::ffff:127.0.0.1 - - [06/Aug/2022:12:51:07 +0000] "GET /admin/products?q=test2&limit=5 HTTP/1.1" 500 86 "http://localhost:7000/" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0"
::ffff:127.0.0.1 - - [06/Aug/2022:12:51:08 +0000] "GET /admin/batch-jobs?failed_at=null HTTP/1.1" 304 - "http://localhost:7000/" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0"
::ffff:127.0.0.1 - - [06/Aug/2022:12:51:13 +0000] "GET /admin/batch-jobs?failed_at=null HTTP/1.1" 304 - "http://localhost:7000/" "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0"
You seem to have stumbled upon a known SQLite issue: the ILIKE
(used for search) operator is not supported. Similarly, it looks like the initial issue around creating Discounts also concerns the SQLite configuration.
I suggest that you change your database type to Postgres, as this is also what you will be running with in a production environment.
Thanks for that -- so following your advice I did the following
- In Medusa Server updated module.exports section to provide postgres db details (is on Supabase)
- updated .env to add DATABASE_URL
- re-ran yarn seed to initiate db and seed data
- after a few statements run into the below error and console hangs on Initialising database (waited 15min before giving up)
- I can see tables in my postgres db (see screenshot) but no data
Issue related to SQLite for which support has been dropped.