I've been banging my head for a few hours now. I have setup a small Magento 2 module. It is enabled everything is working except the Setup scripts never run. Actually from my diagnosis right now, they aren't even required in the setup:upgrade process.

If it could be of any help here are the module configuration files:




<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
                <module name="Wizbusiness_CustomerSubscriptions" setup_version="0.0.9" />


namespace Wizbusiness\CustomerSubscriptions\Setup;

use Magento\Framework\Module\Setup\Migration;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;

class InstallData implements InstallDataInterface
    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

        $customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);

        /** @var CustomerSetup $customerSetup */
                'type' => 'text',
                'input' => 'multiselect',
                'backend' => 'Magento\Eav\Model\Entity\Attribute\Backend\ArrayBackend',
                'global' => \Magento\Catalog\Model\Resource\Eav\Attribute::SCOPE_GLOBAL,
                'label' => 'Subscribed Tags',
                'required' => 0,
                'system' => 0, // <-- important, otherwise values aren't saved.
                               // @see Magento\Customer\Model\Metadata\CustomerMetadata::getCustomAttributesMetadata()
                'position' => 100,
                'filterable' => true,
                'option' => [ 'values' => ['Test', 'Test2', 'Test3' ] ]

        $customerSetup->getEavConfig()->getAttribute('customer', 'subscribedtags')
            ->setData('used_in_forms', [$used_in_forms])
            ->setData("is_used_for_customer_segment", true)
            ->setData("is_user_defined", 1)

Also a smaller test in Setup/Recurring.php:

namespace Wizbusiness\CustomerSubscriptions\Setup;

use Magento\Framework\Setup\InstallSchemaInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\Setup\ModuleContextInterface;

class Recurring implements InstallSchemaInterface {

    protected $logger;

    public function __construct(
        \Psr\Log\LoggerInterface $loggerInterface
    ) {
        $this->logger = $loggerInterface;

    public function install( SchemaSetupInterface $setup, ModuleContextInterface $context ) {
        touch("<path here>/recurring.txt");
        $this->logger->debug('This is running');

If anybody knows what's up, please help me!


Install scripts only run when the module is initially installed. To have it run again, you need to remove that module's row from the setup_module table with a query like below:

DELETE FROM setup_module WHERE module=Module_Name

| improve this answer | |
  • Maked as the answer even tough it wasn't the solution to my problem as this is the most common trouble seen. – Michaël St-Georges Aug 19 '16 at 4:30

I've finally found a solution. I renamed the module folder to match it's name(capitalization included) and now the scripts are running as they should.

| improve this answer | |
  • For me, this has the solution. – Ramon Vicente Dec 12 '16 at 15:18

Same problem, I found the problem will appear when the module name have two or more capital letters, like Vendor\CapitalModule. I had set the folder name capitalization, namespace and class name is right too, but the Setup scripts still never run. Strange problem OTZ

I solved the problem by changing the module name to only one capital letter, like changing Vendor\CapitalModule to Vendor\Capitalmodule, then the Setup InstallSchema scripts will run.

| improve this answer | |

Let's see this: https://www.mageplaza.com/magento-2-module-development/magento-2-how-to-create-sql-setup-script.html, do not do it yourself. I think you should coppy the names, paths, do not write by hand

| improve this answer | |

I am having the same issue in my custom module. The issue was not the updated namespace of InstallSchema class.

I updated and it works

namespace Customvendorname\CustomModuleName\Setup;

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.