我创建了一个扩展程序,当我在其他版本上测试时,它会给我错误
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();
答案 0 :(得分:0)
DROP TABLE IF EXISTS {$ this-> getTable(
standards_values
)};创建 表{$ 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;
插入
dimensions
(dimension_id
,label
,code
)
应该是:
祝你好运!插入{$ 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 standards_values; CREATE TABLE 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;