duncanmcclean / simple-commerce

A simple, yet powerful e-commerce addon for Statamic.
https://statamic.com/simple-commerce
Other
143 stars 34 forks source link

Upgrade to v6: Unknown column 'shipping_method' in 'where clause' #1002

Closed Web10-Joris closed 5 months ago

Web10-Joris commented 5 months ago

Description

I'm using database orders and running the update script command of v6 shows me this error (see below).

Looks like it is trying to find the shipping_method column inside the orders table, but there was never a migration to make this column. The shipping method class reference is stored inside the data column like this:

{
    "site": "en",
    "shipping_tax": {
        "rate": 21,
        "amount": 174,
        "price_includes_tax": false
    },
    "shipping_note": "test",
    "shipping_method": "App\\ShippingMethods\\International",
    "shipping_company": "Company"
}

See full error here:

[previous exception] [object] (PDOException(code: 42S22): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'shipping_method' in 'where clause' at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:423)
[stacktrace]
#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(423): PDO->prepare()
#1 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(816): Illuminate\\Database\\Connection->Illuminate\\Database\\{closure}()
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(783): Illuminate\\Database\\Connection->runQueryCallback()
#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(414): Illuminate\\Database\\Connection->run()
#4 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2751): Illuminate\\Database\\Connection->select()
#5 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2740): Illuminate\\Database\\Query\\Builder->runSelect()
#6 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(3294): Illuminate\\Database\\Query\\Builder->Illuminate\\Database\\Query\\{closure}()
#7 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2739): Illuminate\\Database\\Query\\Builder->onceWithColumns()
#8 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(738): Illuminate\\Database\\Query\\Builder->get()
#9 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(722): Illuminate\\Database\\Eloquent\\Builder->getModels()
#10 /var/www/html/vendor/statamic/cms/src/Query/EloquentQueryBuilder.php(58): Illuminate\\Database\\Eloquent\\Builder->get()
#11 /var/www/html/vendor/statamic/cms/src/Query/EloquentQueryBuilder.php(449): Statamic\\Query\\EloquentQueryBuilder->get()
#12 /var/www/html/vendor/duncanmcclean/simple-commerce/src/UpdateScripts/v6_0/UpdateClassReferences.php(51): Statamic\\Query\\EloquentQueryBuilder->chunk()
#13 /var/www/html/vendor/duncanmcclean/simple-commerce/src/UpdateScripts/v6_0/UpdateClassReferences.php(23): DuncanMcClean\\SimpleCommerce\\UpdateScripts\\v6_0\\UpdateClassReferences->updateReferencesToShippingMethods()
#14 /var/www/html/vendor/duncanmcclean/simple-commerce/src/Console/Commands/RunUpdateScripts.php(29): DuncanMcClean\\SimpleCommerce\\UpdateScripts\\v6_0\\UpdateClassReferences->update()
#15 /var/www/html/vendor/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php(240): DuncanMcClean\\SimpleCommerce\\Console\\Commands\\RunUpdateScripts->DuncanMcClean\\SimpleCommerce\\Console\\Commands\\{closure}()
#16 /var/www/html/vendor/duncanmcclean/simple-commerce/src/Console/Commands/RunUpdateScripts.php(26): Illuminate\\Support\\Collection->each()
#17 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): DuncanMcClean\\SimpleCommerce\\Console\\Commands\\RunUpdateScripts->handle()
#18 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#19 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
#20 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod()
#21 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(662): Illuminate\\Container\\BoundMethod::call()
#22 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call()
#23 /var/www/html/vendor/symfony/console/Command/Command.php(326): Illuminate\\Console\\Command->execute()
#24 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run()
#25 /var/www/html/vendor/symfony/console/Application.php(1078): Illuminate\\Console\\Command->run()
#26 /var/www/html/vendor/symfony/console/Application.php(324): Symfony\\Component\\Console\\Application->doRunCommand()
#27 /var/www/html/vendor/symfony/console/Application.php(175): Symfony\\Component\\Console\\Application->doRun()
#28 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(201): Symfony\\Component\\Console\\Application->run()
#29 /var/www/html/please(35): Illuminate\\Foundation\\Console\\Kernel->handle()
#30 {main}
"} 

Steps to reproduce

  1. Have database orders enabled on a v5 install
  2. Create order
  3. Upgrade to v6
  4. Run update script command and see error

Environment

Environment Application Name: XXXX Laravel Version: 10.43.0 PHP Version: 8.1.5 Composer Version: 2.5.5 Environment: local Debug Mode: ENABLED URL: localhost/ Maintenance Mode: OFF

Cache Config: NOT CACHED Events: NOT CACHED Routes: NOT CACHED Views: NOT CACHED

Drivers Broadcasting: log Cache: statamic Database: mysql Logs: stack / single Mail: smtp Queue: sync Session: file

Simple Commerce Currencies: EUR, EUR, EUR, EUR Gateways: Mollie Repository: Customer: DuncanMcClean\SimpleCommerce\Customers\EloquentCustomerRepository Repository: Order: DuncanMcClean\SimpleCommerce\Orders\EloquentOrderRepository Repository: Product: DuncanMcClean\SimpleCommerce\Products\EntryProductRepository Shipping Methods: Pallet Zending, International Tax Engine: DuncanMcClean\SimpleCommerce\Tax\Standard\TaxEngine

Statamic Addons: 6 Antlers: runtime Stache Watcher: Enabled Static Caching: Disabled Version: 4.47.0 PRO

Statamic Addons aerni/advanced-seo: 2.4.3 appswithlove/statamic-one-click-content-translation: 4.35.0 duncanmcclean/simple-commerce: 6.0.3 heidkaemper/statamic-toolbar: 1.1.2 statamic-rad-pack/runway: 6.1.0 statamic/collaboration: 0.8.1

duncanmcclean commented 5 months ago

Hey 👋

Before I tag a release changing some code which may or may not fix it, would you be able to update some code in your vendor directory and let me know if it fixes it?

In vendor/duncanmcclean/simple-commerce/src/UpdateScripts/v6_0/UpdateClassReferences.php, would you be able to....

Then run php please sc:run-update-scripts and let me know if that fixes it? If it does, I'll tag a new release, otherwise, I'll take a deeper look later (need to get back to my day job now 😅)

Web10-Joris commented 5 months ago

Yes, this approach is working. Thank you for the quick response! I'll leave the issue open so that you can update this on a later moment :)

I think I may have found another issue related to database orders. I'll open a new issue for this. There's no rush, just wanted to let you know (maybe it is a problem from my side?).

github-actions[bot] commented 5 months ago

Released as part of v6.0.4.