错误代码:1005无法创建表用户(错误号:150)

时间:2014-07-23 09:32:22

标签: mysql sql

当我运行此查询时:

DROP TABLE IF EXISTS `users`;

然后:

CREATE TABLE `users` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `role_id` int(11) NOT NULL DEFAULT '4',
  `email` varchar(120) NOT NULL,
  `username` varchar(30) NOT NULL DEFAULT '',
  `password_hash` char(60) NOT NULL,
  `reset_hash` varchar(40) DEFAULT NULL,
  `last_login` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `last_ip` varchar(40) NOT NULL DEFAULT '',
  `created_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `deleted` tinyint(1) NOT NULL DEFAULT '0',
  `reset_by` int(10) DEFAULT NULL,
  `banned` tinyint(1) NOT NULL DEFAULT '0',
  `ban_message` varchar(255) DEFAULT NULL,
  `display_name` varchar(255) DEFAULT '',
  `display_name_changed` date DEFAULT NULL,
  `timezone` char(4) NOT NULL DEFAULT 'UM6',
  `language` varchar(20) NOT NULL DEFAULT 'english',
  `active` tinyint(1) NOT NULL DEFAULT '0',
  `activate_hash` varchar(40) NOT NULL DEFAULT '',
  `password_iterations` int(4) NOT NULL,
  `force_password_reset` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

我收到错误:

  

错误代码:1005
  无法创建表格' admin_sc.users' (错误:150)

检查/ var / lib / mysql / admin_sc目录以获取权限 - 可以创建具有其他名称的表,但不能创建表users

任何可以提供帮助吗?我的查询中没有任何外键。

3 个答案:

答案 0 :(得分:0)

$ perror 105
OS error code 105:  No buffer space available
$

你确定放弃"用户"而不是" bf_users" ?

也许只是InnoDB表空间坏了。我会在另一台机器上尝试相同,看看问题是否可重复。至少对我有用:

MariaDB [(none)]> create database testt;
Query OK, 1 row affected (0.04 sec)

MariaDB [(none)]> use testt;
Database changed
MariaDB [testt]> CREATE TABLE `users` (
    ->   `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
    ->   `role_id` int(11) NOT NULL DEFAULT '4',
    ->   `email` varchar(120) NOT NULL,
    ->   `username` varchar(30) NOT NULL DEFAULT '',
    ->   `password_hash` char(60) NOT NULL,
    ->   `reset_hash` varchar(40) DEFAULT NULL,
    ->   `last_login` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
    ->   `last_ip` varchar(40) NOT NULL DEFAULT '',
    ->   `created_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
    ->   `deleted` tinyint(1) NOT NULL DEFAULT '0',
    ->   `reset_by` int(10) DEFAULT NULL,
    ->   `banned` tinyint(1) NOT NULL DEFAULT '0',
    ->   `ban_message` varchar(255) DEFAULT NULL,
    ->   `display_name` varchar(255) DEFAULT '',
    ->   `display_name_changed` date DEFAULT NULL,
    ->   `timezone` char(4) NOT NULL DEFAULT 'UM6',
    ->   `language` varchar(20) NOT NULL DEFAULT 'english',
    ->   `active` tinyint(1) NOT NULL DEFAULT '0',
    ->   `activate_hash` varchar(40) NOT NULL DEFAULT '',
    ->   `password_iterations` int(4) NOT NULL,
    ->   `force_password_reset` tinyint(1) NOT NULL DEFAULT '0',
    ->   PRIMARY KEY (`id`),
    ->   KEY `email` (`email`)
    -> ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (1.33 sec)

MariaDB [testt]> 

答案 1 :(得分:0)

我建议你执行一个删除表“users”的脚本(检查它是否已经存在),然后重新创建表

或者正如Nishanthi所说..尝试使用不同的名称创建此表,它可能会起作用

答案 2 :(得分:-1)

我的意见中,可能是因为users表是为某些系统相关的表保留的。

  1. 将表格名称从users更改为其他内容。
  2. 或者将drop table命令更改为DROP TABLE IF EXISTS users,然后创建表格。