Page 1 of 1

Aimeos mysql requirements

Posted: 08 Nov 2019, 16:18
by MikaelNazarenko
Good evening, I got problem

Aimeos version is:

Code: Select all

aimeos/ai-laravel                     2019.10.1 
MySQL:

Code: Select all

mysqld  Ver 5.6.21 for Linux on i686 (Source distribution)

The problem is when I execute artisan aimeos:setup, error text is:

Code: Select all

 Aimeos\MW\DB\Exception  : SQLSTATE[HY000]: General error: 1709 Index column size too large. The maximum column size is 767 bytes.: CREATE TABLE mshop_locale_site (id INT AUTO_INCREMENT NOT NULL, parentid INT NOT NULL, code VARCHAR(255) NOT NULL, `label` VARCHAR(255) NOT NULL, config TEXT NOT NULL, level SMALLINT NOT NULL, nleft INT NOT NULL, nright INT NOT NULL, status SMALLINT NOT NULL, mtime DATETIME NOT NULL, ctime DATETIME NOT NULL, editor VARCHAR(255) NOT NULL, UNIQUE INDEX unq_mslocsi_code (code), INDEX idx_mslocsi_nlt_nrt_lvl_pid (nleft, nright, level, parentid), INDEX idx_mslocsi_level_status (level, status), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB

  at /kunden/527257_50389/webseiten/vendor/aimeos/aimeos-core/lib/mwlib/src/MW/DB/Statement/DBAL/Simple.php:94
    90| 
    91| 		try {
    92| 			$result = $this->exec();
    93| 		} catch( \PDOException $e ) {
  > 94| 			throw new \Aimeos\MW\DB\Exception( $e->getMessage() . ': ' . $this->sql, $e->getCode() );
    95| 		}
    96| 
    97| 		return new \Aimeos\MW\DB\Result\PDO( $result );
    98| 	}

  Exception trace:

  1   Aimeos\MW\DB\Statement\DBAL\Simple::execute()
      /kunden/527257_50389/webseiten/vendor/aimeos/aimeos-core/lib/mwlib/src/MW/Setup/Task/Base.php:177

  2   Aimeos\MW\Setup\Task\Base::executeList("db-locale")
      /kunden/527257_50389/webseiten/vendor/aimeos/aimeos-core/lib/mshoplib/setup/TablesCreateMShop.php:197

It is very important for me. Please, tell me if I have chance to make it work on MySQL 5.6.21 ? Or it is crazy and I have to rename a lot of indexes and it affects a lot of points ?

Thank you very much !

Re: Aimeos mysql requirements

Posted: 08 Nov 2019, 16:19
by aimeos

Re: Aimeos mysql requirements

Posted: 08 Nov 2019, 17:49
by MikaelNazarenko
Oh sorry, I have not checked documentation carefully. But now another problem, when I executed aimeos:setup

Code: Select all

 Doctrine\DBAL\Schema\SchemaException  : There is no table with name 'db527257_4.users' in the schema.

  at /kunden/527257_50389/webseiten/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaException.php:30
    26|      * @return \Doctrine\DBAL\Schema\SchemaException
    27|      */
    28|     public static function tableDoesNotExist($tableName)
    29|     {
  > 30|         return new self("There is no table with name '" . $tableName . "' in the schema.", self::TABLE_DOESNT_EXIST);
    31|     }
    32| 
    33|     /**
    34|      * @param string $indexName

  Exception trace:

  1   Doctrine\DBAL\Schema\SchemaException::tableDoesNotExist("db527257_4.users")
      /kunden/527257_50389/webseiten/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Schema.php:168

  2   Doctrine\DBAL\Schema\Schema::getTable("db527257_4.users")
      /kunden/527257_50389/webseiten/ext/labor/lib/custom/setup/default/schema/customer.php:13

  3   Aimeos\MW\Setup\Task\TablesCreateMShop::{closure}(Object(Doctrine\DBAL\Schema\Schema))
      /kunden/527257_50389/webseiten/vendor/aimeos/aimeos-core/lib/mshoplib/setup/TablesCreateMShop.php:153

  4   Aimeos\MW\Setup\Task\TablesCreateMShop::getSchemaObjects("table", "default/schema/customer.php", Object(Doctrine\DBAL\Schema\SchemaConfig))
      /kunden/527257_50389/webseiten/vendor/aimeos/aimeos-core/lib/mshoplib/setup/TablesCreateMShop.php:186

  5   Aimeos\MW\Setup\Task\TablesCreateMShop::setupSchema()
      /kunden/527257_50389/webseiten/vendor/aimeos/aimeos-core/lib/mshoplib/setup/TablesCreateMShop.php:107

  6   Aimeos\MW\Setup\Task\TablesCreateMShop::migrate()
      /kunden/527257_50389/webseiten/vendor/aimeos/aimeos-core/lib/mwlib/src/MW/Setup/Manager/Multiple.php:177

  7   Aimeos\MW\Setup\Manager\Multiple::migrateTasks()
      /kunden/527257_50389/webseiten/vendor/aimeos/aimeos-core/lib/mwlib/src/MW/Setup/Manager/Multiple.php:173

  8   Aimeos\MW\Setup\Manager\Multiple::migrateTasks()
      /kunden/527257_50389/webseiten/vendor/aimeos/aimeos-core/lib/mwlib/src/MW/Setup/Manager/Multiple.php:98

  9   Aimeos\MW\Setup\Manager\Multiple::migrate(Object(Aimeos\MW\Setup\Task\TablesCreateMAdmin))
      /kunden/527257_50389/webseiten/vendor/aimeos/aimeos-laravel/src/Aimeos/Shop/Command/SetupCommand.php:78

  10  Aimeos\Shop\Command\SetupCommand::handle()
      /kunden/527257_50389/webseiten/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:32

  11  call_user_func_array([])
      /kunden/527257_50389/webseiten/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:32

  12  Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
      /kunden/527257_50389/webseiten/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:90

  13  Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Object(Closure))
      /kunden/527257_50389/webseiten/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:34

  14  Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), [])
      /kunden/527257_50389/webseiten/vendor/laravel/framework/src/Illuminate/Container/Container.php:576

  15  Illuminate\Container\Container::call()
      /kunden/527257_50389/webseiten/vendor/laravel/framework/src/Illuminate/Console/Command.php:183

  16  Illuminate\Console\Command::execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
      /kunden/527257_50389/webseiten/vendor/symfony/console/Command/Command.php:255

  17  Symfony\Component\Console\Command\Command::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
      /kunden/527257_50389/webseiten/vendor/laravel/framework/src/Illuminate/Console/Command.php:170

  18  Illuminate\Console\Command::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /kunden/527257_50389/webseiten/vendor/symfony/console/Application.php:934

  19  Symfony\Component\Console\Application::doRunCommand(Object(Aimeos\Shop\Command\SetupCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /kunden/527257_50389/webseiten/vendor/symfony/console/Application.php:273

  20  Symfony\Component\Console\Application::doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /kunden/527257_50389/webseiten/vendor/symfony/console/Application.php:149

  21  Symfony\Component\Console\Application::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /kunden/527257_50389/webseiten/vendor/laravel/framework/src/Illuminate/Console/Application.php:90

  22  Illuminate\Console\Application::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /kunden/527257_50389/webseiten/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:133

  23  Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /kunden/527257_50389/webseiten/artisan:37

But users table exists, I executed artisan migrate before it

Re: Aimeos mysql requirements

Posted: 08 Nov 2019, 18:03
by MikaelNazarenko
it is on live server with mysql 5.6.. But on my local it works, code the same..

Re: Aimeos mysql requirements

Posted: 08 Nov 2019, 18:13
by MikaelNazarenko
This is from ext/labor/lib/custom/setup/default/schema/customer.php :

Code: Select all

return array(
	'table' => array(
		'users' => function ( \Doctrine\DBAL\Schema\Schema $schema ) {

			$table = $schema->getTable( 'users' );

			$table->addColumn('id_customer', 'bigint')->setUnsigned(true)->setNotnull(false);
			$table->addColumn('id_customer_ref', 'bigint')->setUnsigned(true)->setNotnull(false);
			$table->addColumn('cellphone', 'string')->setDefault('')->setLength(32);
			$table->addColumn('bic', 'string')->setDefault('')->setLength(200);
			$table->addColumn('bank', 'string')->setDefault('')->setLength(200);
			$table->addColumn('iban', 'string')->setDefault('')->setLength(30);
			$table->addColumn('payment_id', 'smallint')->setNotnull(false);
			$table->addColumn('values', 'string')->setDefault('')->setLength(200);  // show near name in downline
			$table->addColumn('postal_number', 'string')->setDefault('')->setLength(200);
			$table->addColumn('postal_station', 'string')->setDefault('')->setLength(200);
			$table->addColumn('discount', 'float')->setDefault(0);
			$table->addColumn('discount_from', 'float')->setDefault(0); //date from
			$table->addColumn('discount_to', 'float')->setDefault(0); //date_to
			$table->addColumn('discount_type', 'smallint')->setNotnull(false)->setUnsigned(true);
			$table->addColumn('fair_code', 'integer')->setNotnull(false);
            $table->addColumn('price_group', 'smallint')->setNotnull(false)->setUnsigned(true);
            $table->dropColumn('birthday');
            $table->addColumn('birthday', 'integer')->setNotnull(false);
            $table->addColumn('sales_tax', 'float')->setDefault(0);

            $table->addUniqueIndex(['id_customer'], 'unq_lvusr_idcustomer' );

			return $schema;
		},

	),
);
But it works on other environments.. May it be because of mysql version.. ? sounds stupid

Re: Aimeos mysql requirements

Posted: 08 Nov 2019, 18:19
by MikaelNazarenko
'ai-laravel' added to manifest solved the problem. But why it worked on other environments I don't know )

Re: Aimeos mysql requirements

Posted: 09 Nov 2019, 11:31
by aimeos
If you don't add the dependencies correctly, the order of execution will be random. Thus the order used locally worked but on the server a different order was used and failed.