Search code examples
joomla2.5joomla-extensions

Update sql not being executed for my component Joomla 2.5


I am trying to add a few new columns to certain tables in Joomla, since i need to migrate these fixes from dev to production i am trying to do this the clean way, updates trough the filesystem.

I have followed a few tutorials concerning this and did the following.

I created the folder updates/sql and put a new sql file in it with my new version (1.5). I changed the version number in my xml file. I refreshed my cache in the backend.

Here are the codes I used:

My version:

<version>1.5</version>

The update node:

<update>
        <schemas>
            <schemapath type="mysql">sql/updates/mysql</schemapath>
            <schemapath type="sqlsrv">sql/updates/sqlsrv</schemapath>
            <schemapath type="sqlazure">sql/updates/sqlazure</schemapath>
        </schemas>
</update>

The sql file:

ALTER TABLE `#__mycomponent` ADD `field` VARCHAR(255);

I tested my query directly against the database and it worked, what am I missing?


Solution

  • Short answer - Joomla!'s DB migration tool only does them after uploading a new component via the Component Manager. It doesn't check for a migration on every $_REQUEST, which is what your question suggests.

    Longer Answer

    Make sure you run the upgrade via the component manager. Simply over-writing the files doesn't trigger Joomla's migration process. Check the #__schemas table for your component's ID, and it'll have a corresponding database schema version #. If that version hasn't incremented yet, then the migration wasn't applied.

    Part of the problem is

    I am trying to do this the clean way, updates trough the filesystem

    While I agree with you, that would be the clean way: Joomla! wants you to do things the Joomla! way ;-)

    Important Note about Joomla! SQL Files

    SQL files cannot contain C style comments (# comment here), and must contain comments like this -- comment here Spent a few hours debugging my own code, and had to re-run an upgrade about 25 times to figure out where the database schema migration was failing.

    Comments may support the /* Comment */ style syntax, but I have yet to test that as extensively. YMMV.