I have problem with configuration or something else that magento never run my module's sql install/update script!
I use magento-1.4.1.0
Here is my structure folders and files:
\app\code\local\RN\ShortUrl
\app\code\local\RN\ShortUrl\Block\ShortUrl.php
\app\code\local\RN\ShortUrl\controllers\IndexController.php
\app\code\local\RN\ShortUrl\controllers\UController.php
\app\code\local\RN\ShortUrl\etc\config.xml
\app\code\local\RN\ShortUrl\Helper\Url.php
\app\code\local\RN\ShortUrl\Model\ShortUrl.php
\app\code\local\RN\ShortUrl\Model\Mysql4\ShortUrl.php
\app\code\local\RN\ShortUrl\Model\Mysql4\ShortUrl\Collection.php
\app\code\local\RN\ShortUrl\Model
\app\code\local\RN\ShortUrl\Model\Mysql4
\app\code\local\RN\ShortUrl\Model\Mysql4\ShortUrl
\app\code\local\RN\ShortUrl\sql\rn_shorturl_setup\mysql4-install-0.1.0.php
Here are the contents of \app\etc\modules\RN_ShortUrl.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<RN_ShortUrl>
<active>true</active>
<codePool>local</codePool>
</RN_ShortUrl>
</modules>
</config>
Here are the contents of \app\code\local\RN\ShortUrl\etc\config.xml
:
<?xml version="1.0"?>
<config>
<modules>
<RN_ShortUrl>
<version>0.1.0</version>
</RN_ShortUrl>
</modules>
<frontend>
<routers>
<shorturl>
<use>standard</use>
<args>
<module>RN_ShortUrl</module>
<frontName>shorturl</frontName>
</args>
</shorturl>
</routers>
<layout>
<updates>
<shorturl>
<file>shorturl.xml</file>
</shorturl>
</updates>
</layout>
</frontend>
<global>
<blocks>
<rn_shorturl>
<class>RN_ShortUrl_Block</class>
</rn_shorturl>
</blocks>
<rewrite>
<rn_shorturl>
<from>#^/u/(.*)#</from>
<to>/shorturl/u/redirect/key/$1</to>
</rn_shorturl>
</rewrite>
<models>
<shorturl>
<class>RN_ShortUrl_Model</class>
<resourceModel>shorturl_mysql4</resourceModel>
</shorturl>
<shorturl_mysql4>
<class>RN_ShortUrl_Model_Mysql4</class>
<entities>
<shorturl>
<table>shorturl</table>
</shorturl>
</entities>
</shorturl_mysql4>
</models>
<resources>
<shorturl_setup>
<setup>
<module>RN_ShortUrl</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</shorturl_setup>
<shorturl_write>
<connection>
<use>core_write</use>
</connection>
</shorturl_write>
<shorturl_read>
<connection>
<use>core_read</use>
</connection>
</shorturl_read>
</resources>
<helpers>
<shorturl>
<class>RN_ShortUrl_Helper</class>
</shorturl>
</helpers>
</global>
Here is my install SQL script:
<?php
$installer = $this;
$installer->startSetup();
$installer->run("
DROP TABLE IF EXISTS {$this->getTable('shorturl')};
CREATE TABLE {$this->getTable('shorturl')} (
`shorturl_id` INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`shorted_key` VARCHAR(255) COLLATE utf8_general_ci NOT NULL DEFAULT '',
`long_url` VARCHAR(255) COLLATE utf8_general_ci NOT NULL DEFAULT '',
PRIMARY KEY (`shorturl_id`),
INDEX (shorted_key),
INDEX (long_url)
)ENGINE=InnoDB CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';"
);
/* right before this */
$installer->endSetup();
I have tried to change my module's version and created the upgrade script "mysql4-upgrade-1.0-1.1.php" but still not working, but I could run my module.
http://magento.test/shorturl/index/generate/?url=http://realestate.cambodiachic.com/property-detail-hotel-restaurant-on-kampot-river-93.html
It's working except the problem I am asking.
Thanks in advance,
Rithy
I noticed that when you changed your version number you created an upgrade for 1.0-1.1, but your version is actually 0.1.0. That may explain why it didn't "upgrade". You may want to delete the row entirely from core resource and let it "reinstall" itself on the next page load.
Or, amend your script so that it is tagged as an upgrade from 0.1.0-0.1.1.
OK, Now I can solve this problem!
\app\code\local\RN\ShortUrl\Model\ShortUrl.php
public function removeShortedUrlModule()
{
$sql = "DELETE FROM `core_resource`
WHERE `code`='shorturl_setup';";
$connection = Mage::getSingleton('core/resource')->getConnection('core_write');
try {
$connection->query($sql);
die('deleted module in core_resource!');
} catch (Exception $e){
echo $e->getMessage();
}
}
2 . Change folder name \app\code\local\RN\ShortUrl\sql\ rn_shorturl_setup\
To \app\code\local\RN\ShortUrl\sql\ shorturl_setup\
Finally I soved it! CHEER!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With