Unknown system variable 'storage_engine'

從MySQL官網下載測試庫employees_db-full-1.0.6.tar.bz2,導入時出現兩個錯誤mysql

錯誤1:ERROR 1193 (HY000) at line 38: Unknown system variable 'storage_engine'sql

[root@maomao employees_db]# mysql -t < employees.sql 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@maomao employees_db]# mysql -uroot -p123456 -t < employees.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
+-----------------------------+
| INFO                        |
+-----------------------------+
| CREATING DATABASE STRUCTURE |
+-----------------------------+
ERROR 1193 (HY000) at line 38: Unknown system variable 'storage_engine'

查看本身數據庫存儲引擎數據庫

(root@localhost:mysql.sock)[(none)]>show variables like '%engine%';
+----------------------------------+--------+
| Variable_name                    | Value  |
+----------------------------------+--------+
| default_storage_engine           | InnoDB |
| default_tmp_storage_engine       | InnoDB |
| disabled_storage_engines         |        |
| internal_tmp_disk_storage_engine | InnoDB |
+----------------------------------+--------+
4 rows in set (0.00 sec)

打開腳本編輯,將下面代碼段中標記爲紅色的「storage_engine」修改成「default_storage_engine測試

DROP DATABASE IF EXISTS employees;
CREATE DATABASE IF NOT EXISTS employees;
USE employees;

SELECT 'CREATING DATABASE STRUCTURE' as 'INFO';

DROP TABLE IF EXISTS dept_emp,
                     dept_manager,
                     titles,
                     salaries,
                     employees,
                     departments;

   set storage_engine = InnoDB;
-- set storage_engine = MyISAM;
-- set storage_engine = Falcon;
-- set storage_engine = PBXT;
-- set storage_engine = Maria;

select CONCAT('storage engine: ', @@storage_engine) as INFO;

再次導入,成功!ui

[root@maomao employees_db]# mysql -uroot -p123456 -t < employees.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
+-----------------------------+
| INFO                        |
+-----------------------------+
| CREATING DATABASE STRUCTURE |
+-----------------------------+
+------------------------+
| INFO                   |
+------------------------+
| storage engine: InnoDB |
+------------------------+
+---------------------+
| INFO                |
+---------------------+
| LOADING departments |
+---------------------+
+-------------------+
| INFO              |
+-------------------+
| LOADING employees |
+-------------------+
+------------------+
| INFO             |
+------------------+
| LOADING dept_emp |
+------------------+
+----------------------+
| INFO                 |
+----------------------+
| LOADING dept_manager |
+----------------------+
+----------------+
| INFO           |
+----------------+
| LOADING titles |
+----------------+
+------------------+
| INFO             |
+------------------+
| LOADING salaries |
+------------------+

錯誤2:導入成功後進入數據庫查看,發現全部表數據爲空this

(root@localhost:mysql.sock)[employees]>show tables;
+---------------------+
| Tables_in_employees |
+---------------------+
| departments         |
| dept_emp            |
| dept_manager        |
| employees           |
| salaries            |
| titles              |
+---------------------+
6 rows in set (0.00 sec)

(root@localhost:mysql.sock)[employees]>select count(*) from departments;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

(root@localhost:mysql.sock)[employees]>select count(*) from titles;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

解決方法:在文件所在目錄下登陸數據庫employees,手動執行腳本employees.sql最後標記爲紅色的語句。spa

[root@maomao employees_db]# ls
Changelog                   employees.sql           load_employees.dump  README
employees_partitioned2.sql  load_departments.dump   load_salaries.dump   test_employees_md5.sql
employees_partitioned3.sql  load_dept_emp.dump      load_titles.dump     test_employees_sha.sql
employees_partitioned.sql   load_dept_manager.dump  objects.sql

cat employees.sql
CREATE TABLE salaries (
    emp_no      INT             NOT NULL,
    salary      INT             NOT NULL,
    from_date   DATE            NOT NULL,
    to_date     DATE            NOT NULL,
    KEY         (emp_no),
    FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE,
    PRIMARY KEY (emp_no, from_date)
); 

SELECT 'LOADING departments' as 'INFO';
source load_departments.dump ;
SELECT 'LOADING employees' as 'INFO';
source load_employees.dump ;
SELECT 'LOADING dept_emp' as 'INFO';
source load_dept_emp.dump ;
SELECT 'LOADING dept_manager' as 'INFO';
source load_dept_manager.dump ;
SELECT 'LOADING titles' as 'INFO';
source load_titles.dump ;
SELECT 'LOADING salaries' as 'INFO';
source load_salaries.dump ;

具體操做以下orm

[root@maomao employees_db]# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 425
Server version: 5.7.22-log MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

(root@localhost:mysql.sock)[(none)]>use employees;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
(root@localhost:mysql.sock)[employees]>SELECT 'LOADING departments' as 'INFO';
(root@localhost:mysql.sock)[employees]>source load_departments.dump ;
(root@localhost:mysql.sock)[employees]>SELECT 'LOADING employees' as 'INFO';
......

執行結束後查看,發現數據已經導入成功md5

(root@localhost:mysql.sock)[employees]>select count(*) from employees;
+----------+
| count(*) |
+----------+
|   300024 |
+----------+
1 row in set (0.06 sec)
相關文章
相關標籤/搜索