我目前正在使用joomla创建一个网站(使用模板大型交易II),每当我测试注册时,我都会遇到两个错误之一。
一个:警告
注册失败:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第3行的“2)”附近使用正确的语法
当我的users表中的id列不是主键时会发生这种情况,因此它会创建一个db为0的id条目。注册表格确实通过,我可以看到该表格已添加到表格中;但是,无论我添加多少帐户,ID始终为0。
两个:警告
从数据库获取用户时出错:键'PRIMARY'重复输入'0'
当我将id设置为主键并让它自动递增时,会发生这种情况。我做了很多测试,并且玩了表中的值,在我看来,由于某种原因,注册表单首先将信息发送到id设置为0的数据库(因为id的默认值为none),然后错误进来,然后它在表内自动递增。我这样说是因为我能够在此特定错误保持重新启动之前添加1个用户,所以看起来第一个用户同时占用了默认ID和当前自动增量ID?这甚至可能吗?
两者都设置为INT(11),但是当我使用id作为主键时,id的最大值是id的当前增量,通常是700s左右。
在解决此问题时,我们将不胜感激。
这是我的数据库结构的图片。
https://i.stack.imgur.com/txT9E.png
这些是我尝试过的stackoverflow的所有其他可能的解决方案:
MySQL PHPMyAdmin Error #1062 - Duplicate entry '0' for key 'PRIMARY'
phpMyAdmin #1062 - Duplicate entry '' for key 'PRIMARY'
MySQL 1062 - Duplicate entry '0' for key 'PRIMARY'
Error: Duplicate entry '0' for key 'PRIMARY'
#1062 - Duplicate entry '0' for key 'PRIMARY'
phpmyadmin error "#1062 - Duplicate entry '1' for key 1"
phpMyAdmin: MySQL Error 1062 - Duplicate entry
#1062 - Duplicate entry 0' for key 'PRIMARY'
以下是巨型交易II模板中注册目录的代码
来自default.php
<?php
/**
* @package Joomla.Site
* @subpackage com_users
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidation');
?>
<div class="row">
<div class="col-sm-4 col-sm-offset-4">
<div class="registration<?php echo $this->pageclass_sfx?>">
<?php if ($this->params->get('show_page_heading')) : ?>
<h1><?php echo $this->escape($this->params->get('page_heading')); ?></h1>
<?php endif; ?>
<form id="member-registration" action="<?php echo JRoute::_('index.php?option=com_users&task=registration.register'); ?>" method="post" class="form-validate" enctype="multipart/form-data">
<?php foreach ($this->form->getFieldsets() as $fieldset): // Iterate through the form fieldsets and display each one.?>
<?php $fields = $this->form->getFieldset($fieldset->name);?>
<?php if (count($fields)):?>
<?php foreach ($fields as $field) :// Iterate through the fields in the set and display them.?>
<?php if ($field->hidden):// If the field is hidden, just display the input.?>
<?php echo $field->input;?>
<?php else:?>
<div class="form-group">
<?php echo $field->label; ?>
<?php if (!$field->required && $field->type != 'Spacer') : ?>
<span class="optional"><?php echo JText::_('COM_USERS_OPTIONAL');?></span>
<?php endif; ?>
<div class="group-control">
<?php echo $field->input;?>
</div>
</div>
<?php endif;?>
<?php endforeach;?>
<?php endif;?>
<?php endforeach;?>
<div class="form-group">
<button type="submit" class="btn btn-primary validate"><?php echo JText::_('JREGISTER');?></button>
<a class="btn btn-danger" href="<?php echo JRoute::_('');?>" title="<?php echo JText::_('JCANCEL');?>"><?php echo JText::_('JCANCEL');?></a>
<input type="hidden" name="option" value="com_users" />
<input type="hidden" name="task" value="registration.register" />
</div>
<?php echo JHtml::_('form.token');?>
</form>
</div>
</div>
</div>
来自complete.php
<?php
/**
* @package Joomla.Site
* @subpackage com_users
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
?>
<div class="registration-complete<?php echo $this->pageclass_sfx;?>">
<?php if ($this->params->get('show_page_heading')) : ?>
<h1>
<?php echo $this->escape($this->params->get('page_heading')); ?>
</h1>
<?php endif; ?>
</div>