Follow-up: Clone test results — config table fix + 6.x update
Following the guidance in this thread, I ran a full test on a subdirectory clone before touching the live site. Here is a detailed summary of what was done and the current state.
---
Starting state of the clone
- HikaShop version: Business 6.1.0
- Joomla version: 4.4.14
- PHP: ea-php82, max_execution_time: 300, memory_limit: 256M
- Database: separate clone DB (same table prefix: ajx70_)
- Active shipping plugin: HikaShop USPS 2 Shipping (usps2, v1.5.6, purchased Feb 2026, extension_id: 10856)
- Old built-in USPS plugin (usps, extension_id: 10093): present but disabled
---
Note on sequence: The HikaShop update was actually applied
before the SQL fix below. The SQL cleanup and PRIMARY KEY addition were performed on an already-updated database. This means we have not yet tested whether the primary key fix prevents config resets
during the update — that would require a fresh clone test with the fix applied first.
---
Step 1 — Diagnosed and fixed the hikashop_config duplicate row problem
Per the suggestion in this thread, I ran a query to check for duplicates:
SELECT config_namekey, COUNT(*) as cnt
FROM ajx70_hikashop_config
GROUP BY config_namekey
HAVING cnt > 1;
This returned
35,162+ duplicate rows across many config keys. The root cause was a missing PRIMARY KEY on the config_namekey column, which allowed every HikaShop update to insert new default rows without removing the old ones. MySQL was returning the newest (default) row, making settings appear wiped after each update.
Fix applied (3-step SQL):
-- Step 1: Add a temporary auto-increment column to identify rows
ALTER TABLE ajx70_hikashop_config ADD COLUMN tmp_id INT AUTO_INCREMENT PRIMARY KEY;
-- Step 2: Delete all duplicate rows, keeping the oldest (lowest tmp_id) for each key
-- (took 216 seconds, deleted 35,162 rows)
DELETE c1 FROM ajx70_hikashop_config c1
JOIN ajx70_hikashop_config c2
ON c1.config_namekey = c2.config_namekey
AND c1.tmp_id > c2.tmp_id;
-- Step 3: Drop the temp column
ALTER TABLE ajx70_hikashop_config DROP PRIMARY KEY, DROP COLUMN tmp_id;
After running these 3 steps, a re-check still found 2 remaining duplicates:
config_namekey cnt
------------------------------
cart_retaining_period_checked 2
website 2
These were cleaned with a targeted DELETE, then the primary key was added directly via SQL (bypassing Check Database):
ALTER TABLE ajx70_hikashop_config ADD PRIMARY KEY(config_namekey);
This succeeded. A final run of HikaShop → System → Check Database returned
all green — no errors.
---
Step 2 — HikaShop update (applied before the SQL fix)
The HikaShop update was installed via Joomla Extension Manager on the clone. The SQL fix in Step 1 was applied afterward to the already-updated database.
Manifest cache for the bundled USPS plugin after update:{"name":"HikaShop USPS shipping plugin","version":"6.5.0","creationDate":"01 06 2026"}
Config values immediately after update:
- Currency: reset from USD to EUR
- Store address: cleared (was 3076 C Road, Palmdale CO 81526)
- Tax zone: reset to Europe
- Image thumbnail dimensions: 200px → 100px
- Product image links: preserved (improvement over a previous test)
Note: since the update ran before the SQL fix, we cannot conclude from this test whether the primary key fix would have prevented the config reset. A fresh clone test — with the primary key added before running the update — would be needed to answer that. What we can say is that the update installer is writing default values that overwrite existing settings.
---
Step 3 — Shipping plugin status after update
When attempting to open
any shipping plugin in the HikaShop backend (not just USPS — all of them), I receive:
An error has occurred.
0 Call to a member function loadArray() on null
I queried the extensions table to check plugin state:
SELECT extension_id, name, type, element, enabled, manifest_cache
FROM ajx70_extensions
WHERE element LIKE '%usps%';
Results:
- extension_id 10093 | HikaShop USPS shipping plugin | usps | disabled | version 6.5.0 (updated with HikaShop)
- extension_id 10856 | HikaShop USPS 2 Shipping | usps2 | enabled | version 1.5.6 (not updated — marketplace plugin)
The shipping record in ajx70_hikashop_shipping is intact (record exists, params present, published: 1). The error is not caused by a missing record.
Since the error occurs on
all shipping plugins, not just usps2, this points to a problem in the shared HikaShop shipping admin view or a missing/changed database schema element introduced in the update — not a usps2 compatibility issue specifically.
---
Current state summary
- hikashop_config PRIMARY KEY: fixed and in place
- Check Database: all green
- Config reset after update (currency/address/tax): still occurring
- All shipping plugin edit pages: broken (loadArray() on null)
- Live site: untouched — still on 6.1.0
---
Questions
- The config reset (USD→EUR, address cleared, tax zone) is still happening after the primary key fix. Is the update installer writing default values unconditionally, overwriting existing settings? Is there a way to prevent this, or is the correct approach to simply re-enter values manually after each update?
- All shipping plugin edit pages return "Call to a member function loadArray() on null" after the update. Is this a known issue with 6.5.0? Is there a schema migration step that needs to be run, or a table/column that the shipping admin view now requires that may not have been created during the update?
- The usps2 marketplace plugin (v1.5.6, purchased Feb 2026) was not updated alongside HikaShop. Is there a newer version of usps2 that should be installed after updating HikaShop, and could the missing update be contributing to the shipping admin error?
Thank you.
P.S.
As I worked on a clone of the live website, I can Clone it again, then apply the SQL and after that update both Hikashop and the USPS plugin. Do you think that may produce better results?