无法在magento 2中创建表
我试图使用安装模式创建一个表,但它抛出了下面给出的错误 正在安装架构。。。SQLSTATE[HY000]:一般错误:1005无法创建表magento.questionanswer错误号:150外键约束格式不正确,查询为:create 表(如果不存在)问题答案 问题id int空注释“问题id”, 答案id int空注释“答案id”, 主键问题id、答案id、, 索引问题答案答案ID答案ID, 约束问题答案\u问题\u ID\u常见问题\u问题\u ID外键问题\u ID引用删除级联上的常见问题问题问题\u ID, 约束问题答案\u答案\u ID\u FAQ答案\u答案\u ID外键答案\u ID引用删除级联上的FAQ答案答案\u ID 注释='Question to answer Linkage Table'ENGINE=INNODB charset=utf8 COLLATE=utf8\u general\u ci 表的installschema中的代码是无法在magento 2中创建表,magento,magento2,Magento,Magento2,我试图使用安装模式创建一个表,但它抛出了下面给出的错误 正在安装架构。。。SQLSTATE[HY000]:一般错误:1005无法创建表magento.questionanswer错误号:150外键约束格式不正确,查询为:create 表(如果不存在)问题答案 问题id int空注释“问题id”, 答案id int空注释“答案id”, 主键问题id、答案id、, 索引问题答案答案ID答案ID, 约束问题答案\u问题\u ID\u常见问题\u问题\u ID外键问题\u ID引用删除级联上的常见问题问
// Creating Question table
$table = $installer->getConnection()->newTable(
$installer->getTable('faqquestion')
)->addColumn(
'question_id',
\Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
null,
['nullable' => false, 'primary' => true],
'Question ID'
)->addColumn(
'question',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
'2M',
['nullable' => true,'default' => null],
'Question'
)->addColumn(
'question_identifier',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
255,
['nullable' => true],
'Identifier'
)->addColumn(
'question_topic',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
255,
['nullable' => true],
'Topic'
)->addColumn(
'question_sortorder',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
1,
['nullable' => false,'default' => 0],
'SortOrder'
)->addColumn(
'question_status',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
1,
['nullable' => false,'default' => 0],
'Question Status'
)->addColumn(
'question_visibility',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
1,
['nullable' => false,'default' => 0],
'Question Visibility'
)->addColumn(
'question_tags',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
255,
['nullable' => true],
'Tags'
)->setComment(
'Question Table'
);
$installer->getConnection()->createTable($table);
//creating answer table
$table = $installer->getConnection()->newTable(
$installer->getTable('faqanswer')
)->addColumn(
'answer_id',
\Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
null,
['nullable' => false, 'primary' => true],
'Answer ID'
)->addColumn(
'answer',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
'2M',
['nullable' => true,'default' => null],
'Answer'
)->addColumn(
'answer_likes',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
1,
['nullable' => false,'default' => 0],
'Likes'
)->addColumn(
'answer_dislikes',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
1,
['nullable' => false,'default' => 0],
'Dislikes'
)->addColumn(
'answer_author',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
255,
['nullable' => true],
'Author'
)->addColumn(
'answer_status',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
1,
['nullable' => false,'default' => 0],
'Answer Status'
)->setComment(
'Answer table'
);
$installer->getConnection()->createTable($table);
// queston and related answer table
$table = $installer->getConnection()->newTable(
$installer->getTable('questionanswer')
)->addColumn(
'question_id',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
null,
['nullable' => true, 'primary' => true],
'Question ID'
)->addColumn(
'answer_id',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
null,
['nullable' => true, 'primary' => true],
'Answer ID'
)->addIndex(
$installer->getIdxName('questionanswer', ['answer_id']),
['answer_id']
)->addForeignKey(
$installer->getFkName('questionanswer', 'question_id', 'faqquestion', 'question_id'),
'question_id',
$installer->getTable('faqquestion'),
'question_id',
\Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
)->addForeignKey(
$installer->getFkName('questionanswer', 'answer_id', 'faqanswer', 'answer_id'),
'answer_id',
$installer->getTable('faqanswer'),
'answer_id',
\Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
)->setComment(
' Question to aNswer Linkage Table'
);
$installer->getConnection()->createTable($table);
因为列类型不匹配。在我看来 问题id和答案id在参考表中具有类型\u SMALLINT,但在问题答案中,您创建了类型\u INTEGER而不是该类型。所以要解决这个问题,只需将类型_INTEGER更改为类型_SMALLINT,问题答案如下:
$table = $installer->getConnection()->newTable(
$installer->getTable('questionanswer')
)->addColumn(
'question_id',
\Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
null,
['nullable' => false, 'primary' => true],
'Question ID'
)->addColumn(
'answer_id',
\Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
null,
['nullable' => false, 'primary' => true],
'Answer ID'
)->addIndex(
$installer->getIdxName('questionanswer', ['answer_id']),
['answer_id']
)->addForeignKey(
$installer->getFkName('questionanswer', 'question_id', 'faqquestion', 'question_id'),
'question_id',
$installer->getTable('faqquestion'),
'question_id',
\Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
)->addForeignKey(
$installer->getFkName('questionanswer', 'answer_id', 'faqanswer', 'answer_id'),
'answer_id',
$installer->getTable('faqanswer'),
'answer_id',
\Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
)->setComment(
' Question to aNswer Linkage Table'
);
这会解决你的问题
问候