0

1 つの拡張機能を作成しましたが、それを他のバージョンでテストすると、エラーが発生します

Error in file: "/var/www/mage_sample/app/code/local/MYD/Module/sql/findyoursize_setup/mysql4-install-0.1.0.php" - SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1.

SQLで同じコードを試してみると、問題がどこにあるのか誰でも助けてくれますか? 私はたくさん試して、今立ち往生しています。以下は私のインストーラーコードです:

$installer = $this;

$installer->startSetup();

$installer->run("

 DROP TABLE IF EXISTS {$this->getTable('dimensions')};
CREATE TABLE {$this->getTable('dimensions')} (                            
              `dimension_id` int(11) NOT NULL AUTO_INCREMENT,        
              `label` varchar(250) DEFAULT NULL,                     
              `code` varchar(250) DEFAULT NULL,                      
              PRIMARY KEY (`dimension_id`)                           
            ) ENGINE=InnoDB  DEFAULT CHARSET=latin1;



DROP TABLE IF EXISTS {$this->getTable(`standards`)};
CREATE TABLE {$this->getTable(`standards`)} (                    
            `standards_id` int(10) NOT NULL AUTO_INCREMENT,        
             `name` varchar(250) DEFAULT NULL,                      
             PRIMARY KEY (`standards_id`)                           
           ) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS {$this->getTable(`standards_values`)};
CREATE TABLE {$this->getTable(`standards_values`)} (                                                                                                       
                   `standards_id` int(11) DEFAULT NULL,                    
                    `value` varchar(250) DEFAULT NULL,                      
                    `order` int(4) DEFAULT NULL,                            
                    `value_id` int(8) NOT NULL AUTO_INCREMENT,              
                    UNIQUE KEY `value_id` (`value_id`),                     
                    KEY `FK_standards_values` (`standards_id`)              
                  ) ENGINE=InnoDB  DEFAULT CHARSET=latin1              

 insert  into  {$this->getTable('dimensions')}(`dimension_id`,`label`,`code`) values (1,'Chest','chest');
insert  into `dimensions`(`dimension_id`,`label`,`code`) values (2,'Waist','waist');
insert  into `dimensions`(`dimension_id`,`label`,`code`) values (3,'Inseam ','inseam ');
insert  into `dimensions`(`dimension_id`,`label`,`code`) values (4,'Hips','hips');
insert  into `dimensions`(`dimension_id`,`label`,`code`) values (5,'Thigh','thigh');
insert  into `dimensions`(`dimension_id`,`label`,`code`) values (6,'Weight','weight');
insert  into `dimensions`(`dimension_id`,`label`,`code`) values (8,'Neck','neck');");


$installer->endSetup(); 
4

1 に答える 1

0
  1. 最後のセミコロン (;) がありません

DROP TABLE IF EXISTS {$this->getTable( standards_values)}; CREATE TABLE {$this->getTable( standards_values)} (

               `standards_id` int(11) DEFAULT NULL,                    
                `value` varchar(250) DEFAULT NULL,                      
                `order` int(4) DEFAULT NULL,                            
                `value_id` int(8) NOT NULL AUTO_INCREMENT,              
                UNIQUE KEY `value_id` (`value_id`),                     
                KEY `FK_standards_values` (`standards_id`)              
              ) ENGINE=InnoDB  DEFAULT CHARSET=latin1

次のようにする必要があります。

DROP TABLE IF EXISTS {$this->getTable(`standards_values`)};
CREATE TABLE {$this->getTable(`standards_values`)} (                                                                                                       
                   `standards_id` int(11) DEFAULT NULL,                    
                    `value` varchar(250) DEFAULT NULL,                      
                    `order` int(4) DEFAULT NULL,                            
                    `value_id` int(8) NOT NULL AUTO_INCREMENT,              
                    UNIQUE KEY `value_id` (`value_id`),                     
                    KEY `FK_standards_values` (`standards_id`)              
                  ) ENGINE=InnoDB  DEFAULT CHARSET=latin1;
  1. getTable は使用されていませんが、小さな問題です:

dimensions( dimension_id, label, code)に挿入

次のようにする必要があります。

insert into {$this->getTable( dimensions)}( dimension_id, label, code)

幸運を!

質問への回答:

このクエリは、テストした MySql で問題なく動作します。それは本当にセミコロンが欠けているだけでした。

DROP TABLE IF EXISTS 標準; CREATE TABLE 標準 (

        `standards_id` int(10) NOT NULL AUTO_INCREMENT,        
         `name` varchar(250) DEFAULT NULL,                      
         PRIMARY KEY (`standards_id`)                           
       ) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS standard_values; CREATE TABLE 標準値 (

               `standards_id` int(11) DEFAULT NULL,                    
                `value` varchar(250) DEFAULT NULL,                      
                `order` int(4) DEFAULT NULL,                            
                `value_id` int(8) NOT NULL AUTO_INCREMENT,              
                UNIQUE KEY `value_id` (`value_id`),                     
                KEY `FK_standards_values` (`standards_id`)              
              ) ENGINE=InnoDB  DEFAULT CHARSET=latin1;
于 2013-08-03T08:19:34.027 に答える