【问题标题】:How to run a script against a .sql database on MySQL Workbench如何在 MySQL Workbench 上针对 .sql 数据库运行脚本
【发布时间】:2020-07-07 01:32:01
【问题描述】:

对不起,我是新手,我知道这看起来是个愚蠢的问题。我正在尝试遵循 this 非常初学者的教程。看来讲师正在使用来自this sample databaseemployees.sql 数据库。如果我只是运行命令:

select * from employees;

我得到了错误

错误代码:1046。未选择数据库 通过在侧边栏的 SCHEMAS 列表中双击其名称来选择要使用的默认数据库。

我尝试打开侧面的employees.sql

但随后运行它会返回错误消息:

错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“source load_departments.dump”附近使用正确的语法

他们的 GitHub 存储库上的 this similar issue 也没有多大帮助。我尝试关注示例数据库存储库中的installation instructions

mysql < employees.sql

但是,我得到另一个错误:

ERROR 1045 (28000): Access denied for user 'foobar'@'localhost' (使用密码: NO)

如果您能帮助我了解能够遵循the rest of this tutorial 的分步表格中的先决条件,我将不胜感激。

P.S.我在 macOS Catalina 上,我的 Workbench 版本是 8.0,和 MySQL

mysql Ver 8.0.19 for osx10.15 on x86_64 (Homebrew)

按照说明here

【问题讨论】:

  • 您的用户错误表明您登录的用户没有您链接的页面上提到的所需权限。我刚刚在我的电脑上安装了 MySQL 服务器并通过用户 root 上的 Workbench 进行了尝试,它可以工作。除了employees.sql在尝试导入部门转储时似乎存在的内置错误外,一切正常。
  • @t1f 我刚刚在these instructions 之后安装了 MySQL 和 MySQL Workbench。我按照mysql_secure_installation 的步骤为root 用户设置了密码,然后在Workbench 中使用了该密码。关于我应该如何改变它以便我拥有特权的任何分步说明?
  • 您使用的是什么操作系统?
  • @Foad 正如你应该的那样,学习变得“脏”总是好的,不依赖于 GUI 等,我只是说在这种情况下,它可能会使它变得更加困难要理解,因为您已经遇到了 GUI 问题。查看dev.mysql.com/doc/mysql-getting-started/en,然后是dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-commands.html,然后是a2hosting.com/kb/developer-corner/mysql/…,以此类推。可用资源很多,谷歌搜索mysql command line
  • @t1f 非常感谢。当然,我首先弄清楚 GUI,然后转向更高级的命令行界面,这很有意义。

标签: mysql sql mysql-workbench


【解决方案1】:

该存储库中有一个小错误。

你必须解决这个问题。

使用编辑器打开employees.sql,例如Notepad++,然后转到文件底部,您将在其中找到:

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_salaries1.dump ;
source load_salaries2.dump ;
source load_salaries3.dump ;

source show_elapsed.sql ;

尝试替换:

"SELECT 'LOADING departments' as 'INFO';
source load_departments.dump ;"

"SELECT 'LOADING departments' as 'INFO';
source C:/load_departments.dump ;
  • C:/ 应该是您计算机上相关文件的实际路径。
  • 对文件末尾的每一行执行此操作,并添加适当的路径。

现在导入employees.sql 并运行它,看看它是否有效。

如果没有,请尝试这样做:

只删除以下代码并将更改保存到文件中。

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_salaries1.dump ;
source load_salaries2.dump ;
source load_salaries3.dump ;

现在继续这样做:

  • 打开Workbench

  • 将新的MySQL connection 添加到您本地的MySQL server

确保您将 root 用户或其他具有以下权限的用户连接/添加到连接:

SELECT, INSERT, UPDATE, DELETE, 
CREATE, DROP, RELOAD, REFERENCES, 
INDEX, ALTER, SHOW DATABASES, 
CREATE TEMPORARY TABLES, 
LOCK TABLES, EXECUTE, CREATE VIEW
  • 双击打开新建立的连接

  • 转到左上角,单击File,然后单击Open SQL Script,然后从您下载的存储库中选择employees.sql,然后单击闪电图标

之后:

  • 再次使用Open SQL Script并打开load_employees.dump,然后在新打开的文件中再次单击Lightning icon

  • 再次使用Open SQL Script打开load_departments.dump,然后在新打开的文件中再次点击Lightning icon

  • 再次使用Open SQL Script打开load_dept_emp.dump然后在新打开的文件中再次点击Lightning icon

  • 再次使用Open SQL Script打开load_dept_manager.dump,然后在新打开的文件中再次点击Lightning icon

  • 再次使用Open SQL Script并打开load_titles.dump,然后在新打开的文件中再次单击Lightning icon

  • 再次使用Open SQL Script打开load_salaries1.dump然后在新打开的文件中再次点击Lightning icon

  • 再次使用Open SQL Script打开load_salaries2.dump然后在新打开的文件中再次点击Lightning icon

  • 再次使用Open SQL Script并打开load_salaries3.dump,然后在新打开的文件中再次单击Lightning icon

现在您已完成导入数据库。 您现在可以进行select * from employees 查询。

【讨论】:

  • 谢谢。如何配置这些权限? This 是我打开工作台时看到的
  • 给它一个连接名称。单击密码旁边的store in keychain 并添加密码(不确定它是否不同,我在 Windows 上,它对我来说是 in vault,而不是 in keychain)然后单击右下角的 Test connection - 如果一切正常工作正常单击确定,然后在您的workbench 窗口中双击新形成的连接。如果一切正常并且您已登录,请进一步按照我上面回答中的说明进行操作。
  • Test Connection 结果是this 所以我想我可以按照其余的步骤进行操作。
  • @Foad Yup 到目前为止似乎还不错。进一步关注,看看进展如何。
  • @Foad 看起来不错,因为它是官方的并且快速浏览。测试它,看看你是否仍然收到加载错误。我的答案正是针对该用例,如果您在加载转储时遇到错误,在这种情况下,我编辑并添加了另一个快速修复(您需要在 sql 文件中指定转储的路径)。如果官方方法,通过 cmd 行对您有用,请务必使用它^_^
【解决方案2】:

好的,我想我已经找到了解决方案,它需要一点命令行。如果您已经关注these instructions 使用 HomeBrew 安装 MySQL 和 MySQL Workbench,那么您应该已经设置了用户和密码。现在假设您已经下载了this GitHub repository,您需要从终端转到下载的test_db-master 并按照说明here 运行以下命令:

mysql -u <user_name> -p -t < employees.sql

您将&lt;user_name&gt; 替换为您要使用的用户。就我而言,它只是root。然后它会询问用户的密码,您应该会看到导入的数据库。现在午餐 MySQL 工作台。您应该在左侧边栏/面板的schemas 选项卡中看到employees 数据库。现在你需要双击它,或者右键单击它并选择set as default schema

或者,您可以添加

USE employees;

第一次出现在脚本的顶部。现在你可以开始了,可以按照the tutorial 运行其余的查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多