这是我第一次使用 Docker 和 MySQL Workbench。我之前使用 XAMPP 来运行我的 mysql 本地服务器并使用 phpMyadmin 管理数据库。一切都很好,然后我决定尝试使用 Docker 运行 mysql 服务器,但我无法让它工作。
我的错误是
code: 'ER_NO_SUCH_TABLE',
errno: 1146,
sqlMessage: 'Table \'ToastHRMDB-dev.Employee\' doesn\'t exist',
sqlState: '42S02',
当我使用 XAMMP 时,下面的查询工作正常,但在 mysql Docker 中不起作用,或者可能是工作台问题?
SELECT
Employee.id as id,
Employee.employee_number as employeeNumber,
Employee.first_name as firstName,
Employee.middle_name as middleName,
Employee.last_name as lastName,
Employee.suffix as suffix,
Employee.nickname as nickname,
Employee.tr_email as trEmail,
Employee.image_url as imageUrl,
Employee.loginservice_id as authId,
Role.definition as role
FROM Employee
INNER JOIN RoleMap ON Employee.id = RoleMap.employee_id
INNER JOIN Role ON RoleMap.role_id = Role.id
WHERE Employee.tr_email = ?
AND Employee.is_del = 0`;
事情是这样的。如果我将查询中的所有表名更改为与数据库中完全相同的大小写,那么我可以让它运行而不会出现错误(使用 Docker/Mysql Workbench)。例如,将查询中的
Employee
更改为小写 employee
。
但我不希望更改原来的查询。我不知道这是否只是 Docker 中的某些设置?或者在 Mysql Workbench 中?我尝试使用不同的排序规则设置我的架构,例如 utf8 和 ascii,但没有成功。也许我需要选择其他字符集类型?
顺便说一句,这是我运行的用于初始化 docker 容器的命令
docker run --name mysql_5 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.37
您必须启用或告诉MySQL使用小写表名和标识符区分大小写文档
例如
docker run --name mysql_5 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.37 --lower_case_table_names=1
这对我有用!!!,谢谢!!!!