我创建了一个名为 sbtest 的用户,没有密码,对 sbtest 拥有所有权限,但出现以下错误。我做错了什么?
$ sysbench --test=oltp run --debug
sysbench 0.4.12: multi-threaded system evaluation benchmark
No DB drivers specified, using mysql
DEBUG: mysql_init(0xc854f0)
DEBUG: mysql_real_connect(0xc854f0, "localhost", "sbtest", "(null)", "sbtest", 3306, "(null)", CLIENT_MULTI_STATEMENTS)
DEBUG: mysql_real_query(0xc854f0, "SHOW TABLE STATUS LIKE 'sbtest'", 31) = 0
DEBUG: mysql_store_result(0xc854f0) = 0xc9dce0
DEBUG: mysql_num_fields(0xc9dce0) = 18
DEBUG: mysql_fetch_fields(0xc9dce0) = 0xc9fce0
DEBUG: mysql_fetch_row(0xc9dce0) = (nil)
ALERT: Error: failed to determine table 'sbtest' type!
ALERT: MySQL error:
DEBUG: mysql_free_result(0xc9dce0)
DEBUG: mysql_close(0xc854f0)
FATAL: failed to get database capabilities
答案1
您应该先运行“prepare”。它将创建基准所需的表。
就你的情况来说,应该是
sysbench --test=oltp prepare
答案2
创建sbtest
数据库和sbtest
用户。
如果您不打算向sysbench
命令提供命令参数,那么您将需要创建与 MySQL 服务器通信时所需的数据库和用户。
root
使用用户或任何你喜欢的用户登录到你的 MySQL 服务器:
mysql -u root -p
创建sbtest
数据库、sbtest
用户并授予权限:
CREATE DATABASE sbtest;
CREATE USER 'sbtest'@'localhost';
GRANT ALL PRIVILEGES ON * . * TO 'sbtest'@'localhost';
FLUSH PRIVILEGES;
quit;
准备数据库:
sysbench --test=oltp --db-driver=mysql prepare