2014-07-23 160 views
0

當我運行查詢:錯誤代碼:1005無法創建表的用戶(錯誤:150)

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'(errno:150)

檢查/ var/lib/mysql/admin_sc目錄以獲取權限 - 可以用其他名稱創建表,但不能創建表users

任何可以幫助嗎?我的查詢中沒有任何外鍵。

+0

查詢本身起作用。 –

+1

[錯誤代碼:1005可能的重複。不能創建表'...'(errno:150)](http://stackoverflow.com/questions/9018584/error-code-1005-cant-create-table -errno-150) – Jens

+0

請閱讀[此鏈接](http://verysimple.com/2006/10/22/mysql-error-number-1005-cant-create-table-mydbsql-328_45frm-errno-150/)或[這一個](http://blog.mclaughlinsoftware.com/2010/01/30/decoding-1005-on-mysql/) –

回答

-1

我的意見,這可能是因爲users表是爲某些系統相關的表保留。

  1. 將表名從users更改爲別的。
  2. 或者將您的drop table命令更改爲DROP TABLE IF EXISTS users,然後創建表格。
+0

我做到了。沒有結果。目錄中沒有名爲users.frm的文件:/ var/lib/mysql/admin_sc – CETb

+0

嘗試此鏈接中的選項

+0

我可以創建表'users1',但表'用戶'無法創建 – CETb

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]> 
+0

你是對的,我發佈了這個錯誤的查詢,但我嘗試了很多可能的選擇 - 不工作(((現在我發現外鍵從其他表到用戶,但直到現在才發現。 – CETb

0

我建議您執行丟棄表「用戶」的腳本(檢查,如果它不存在),然後重新創建表

或者作爲Nishanthi說。 。嘗試使用不同的名稱創建此表,它可能會工作

相關問題