2014-02-05 150 views
2

我安裝了mySQL服務器並創建了一個名爲ej_instance的用戶並設置了密碼「password」。使用以下命令創建表失敗

mysql -u ej_instance -p; 
    -- entered password 

ej_instance登錄到服務器只能訪問ejabberd數據庫。所以,我執行的命令像下面

use ejabberd; 

然後試圖像下面

SET table_type=InnoDB; 

    CREATE TABLE users (
    username varchar(250) PRIMARY KEY, 
    password text NOT NULL, 
    created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
) CHARACTER SET utf8; 

執行命令但它在我拋出的錯誤。以下是錯誤

ERROR 1193 (HY000): Unknown system variable 'table_type' 
    ERROR 1046 (3D000): No database selected 

怎樣才能完成這項工作?還有什麼要改變的?

+0

你使用ejabberd後;它是否說'數據庫已更改'? – DaImTo

+0

嘗試在您嘗試執行的腳本中添加'user ejabberd'。 –

+0

@DaImTo是的,它記錄的是一樣的。 '數據庫已更改' – redV

回答

3

創建表時指定的發動機類型,像這樣:

USE ejabberd; 

CREATE TABLE users (
    username varchar(250) PRIMARY KEY, 
    password text NOT NULL, 
    created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
) CHARACTER SET utf8 ENGINE = INNODB; 

如果使用錯誤仍然顯示,請檢查:

  1. 數據庫中存在
  2. 用戶ej_instance有權限訪問並在數據庫上創建表格

Loggin as root:

#check the database exists 
SHOW DATABASES LIKE 'ejabberd'; 

#check user permissions 
SHOW GRANTS FOR 'ej_instance'@'localhost'; 
SHOW GRANTS FOR 'ej_instance'@'%'; 

如果沒有足夠的權限:

#grant all permission on the user for the specified database 
GRANT ALL ON ejabberd.* TO 'ej_instance'@'localhost'; 
GRANT ALL ON ejabberd.* TO 'ej_instance'@'%'; 
FLUSH PRIVILEGES; 
+1

謝謝你的反應,我已經設置了'SET storage_engine = InnoDB'它工作。 – redV

+0

請正確標記答案;) –

+0

不知道如何實現這一點,酷! –