【问题标题】:Why do I get an error when running mysqld in a virtualenv?为什么在 virtualenv 中运行 mysqld 时会出错?
【发布时间】:2012-01-24 12:16:28
【问题描述】:

当我在我的 virtualenv 中运行 mysqld 时,我收到一条错误并中止消息。

(nettuts)sez@sez-laptop:~/.virtualenvs$ mysqld
111220 15:22:59 [Warning] Can't create test file /var/lib/mysql/sez-laptop.lower-test
111220 15:22:59 [Warning] Can't create test file /var/lib/mysql/sez-laptop.lower-test
mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 13)
111220 15:22:59 [ERROR] Aborting

111220 15:22:59 [Note] mysqld: Shutdown complete

首先我尝试使用

安装 MySQL-python
pip install -E default/ MySQL-python

这给了我

Requirement already satisfied (use --upgrade to upgrade): '
MySQL-python in ./default/lib/python2.7/site-packages
Cleaning up...

然后当我检查它是否已安装时,它显示它没有

(nettuts)sez@sez-laptop:~/.virtualenvs$ pip freeze
Django==1.3.1
wsgiref==0.1.2

然后我决定用pip install MySQL-python 安装它,它安装得很好,因为它显示了

(nettuts)sez@sez-laptop:~/.virtualenvs$ pip freeze
Django==1.3.1
MySQL-python==1.2.3
wsgiref==0.1.2

如何让MySQL-python 在 vi​​rtualenv 中正常运行?

更新 当我运行 sudo invoke-rc.d mysql start 这就是我得到的结果

(nettuts)sez@sez-laptop:~/.virtualenvs/nettuts$ sudo invoke-rc.d mysql start
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start mysql

然后当我按照指示运行start mysql 这就是我得到的

(nettuts)sez@sez-laptop:~/.virtualenvs/nettuts$ sudo start mysql
start: Job is already running: mysql

那么这里到底发生了什么?

【问题讨论】:

  • mysqld 已经在运行。您无需再次调用它。这就是正在发生的事情。
  • @FrancisAvila。是的,当我运行ps aux | grep mysql 时,我看到/usr/sbin/mysqld 打印在第一行的末尾。

标签: python mysql virtualenv mysql-python virtualenvwrapper


【解决方案1】:

你需要root权限:

在命令前尝试 sudo(如果您的系统支持 sudo 用户 http://en.wikipedia.org/wiki/Sudo

否则,请先尝试使用命令 su

以 root 身份登录

【讨论】:

  • 当我运行sudo mysqld 时,我的命令行光标会跳到一个空白行的开头,在那里闪烁大约一分钟或更短时间,然后什么也没有发生。
  • 你使用什么发行版?您可以尝试“sudo su”并在插入 root 密码后。运行你的命令后
  • 也许因为我读到的已经在运行,您可以尝试重新启动并在系统上以 root 身份登录...
【解决方案2】:

它与 Python 和 virtualenv 没有任何关系。您的 mysqld 未配置为在普通用户权限下正确运行 - 需要使用您的发行版正常服务启动机制调用它(例如 Ubuntu 上的 sudo invoke-rc.d mysql start)。

【讨论】:

  • @DavidKHess 我发布了运行sudo invoke-rc.d mysql start 的结果,不知道它们是什么意思。
猜你喜欢
  • 2015-11-08
  • 2019-08-20
  • 2022-01-17
  • 1970-01-01
  • 2020-04-29
  • 2019-05-20
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多