【问题标题】:Symfony2: Doctrine: Base table or view not found: 1146 tablename is sameSymfony2:学说:未找到基表或视图:1146 表名相同
【发布时间】:2023-04-08 16:38:02
【问题描述】:

今天我把我的 symfony 2.6 项目从我的本地 windows 机器放到我的 linux 网络服务器上

当我进入我的网站时,它会按预期提示登录页面。我使用与本地登录相同的用户凭据登录。我有一个用户和一个角色表。登录成功后提示如下错误:

执行“SELECT t0.id AS id1, t0.name AS name2, t0.color AS color3 FROM employee t0”时发生异常: SQLSTATE [42S02]:未找到基表或视图:1146 表 'dzqoqnoa_cms.employee' 不存在

我查了谷歌,但我发现只有小写的问题。

我的实体:

namespace WO\OrganizerBundle\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;

/**
 * Employee
 *
 * @ORM\Table(name="employee")
 * @ORM\Entity(repositoryClass="WO\OrganizerBundle\Entity\EmployeeRepository")
 */
class Employee
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=255)
     */.............

我的控制器:

$em = $this->getDoctrine()->getManager();
$employees = $em->getRepository('WOOrganizerBundle:Employee')->findAll();

我的数据库:

我已经使用以下命令清除了所有缓存:

php app/console doctrine:cache:clear-metadata 
php app/console doctrine:cache:clear-query  
php app/console doctrine:cache:clear-result
rm -rf app/cache/

问题出在哪里?

编辑

这是我的配置文件:

config.yml

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: services.yml }

framework:
    #esi:             ~
    #translator:      { fallbacks: ["%locale%"] }
    secret:          "%secret%"
    router:
        resource: "%kernel.root_dir%/config/routing.yml"
        strict_requirements: ~
    form:            ~
    csrf_protection: ~
    validation:      { enable_annotations: true }
    templating:
        engines: ['twig']
        #assets_version: SomeVersionScheme
    default_locale:  "%locale%"
    trusted_hosts:   ~
    trusted_proxies: ~
    session:
        # handler_id set to null will use default session handler from php.ini
        handler_id:  ~
    fragments:       ~
    http_method_override: true

# Twig Configuration
twig:
    debug:            "%kernel.debug%"
    strict_variables: "%kernel.debug%"

# Assetic Configuration
assetic:
    debug:          "%kernel.debug%"
    use_controller: false
    bundles:        [ ]
    #java: /usr/bin/java
    filters:
        cssrewrite: ~
        #closure:
        #    jar: "%kernel.root_dir%/Resources/java/compiler.jar"
        #yui_css:
        #    jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar"

# Doctrine Configuration
doctrine:
    dbal:
        driver:   "%database_driver%"
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
        # if using pdo_sqlite as your database driver:
        #   1. add the path in parameters.yml
        #     e.g. database_path: "%kernel.root_dir%/data/data.db3"
        #   2. Uncomment database_path in parameters.yml.dist
        #   3. Uncomment next line:
        #     path:     "%database_path%"

    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        auto_mapping: true

# Swiftmailer Configuration
swiftmailer:
    transport: "%mailer_transport%"
    host:      "%mailer_host%"
    username:  "%mailer_user%"
    password:  "%mailer_password%"
    spool:     { type: memory }

config_prod.yml

imports:
    - { resource: config.yml }

monolog:
    handlers:
        main:
            type:         fingers_crossed
            action_level: error
            handler:      nested
        nested:
            type:  stream
            path:  "%kernel.logs_dir%/%kernel.environment%.log"
            level: debug
        console:
            type:  console

现在我将所有字母从小写(员工)重命名为大写(员工),但没有任何改变!

【问题讨论】:

  • 您的存储库类是否存在于WO\OrganizerBundle\Entity 命名空间中?

标签: mysql symfony doctrine-orm doctrine entity


【解决方案1】:

您的 linux 服务器区分大小写,因此解决方案是使用

更改您的表名

将表 tbl_name 重命名为 new_tbl_name;

从员工到员工 例如 将表员工重命名为员工。如果有其他的也申请其他的。

【讨论】:

  • 但为什么我在登录时不需要这个?表角色和 users 和 users_role 都是小写的
  • 我做到了,但没有任何改变
【解决方案2】:

我的服务器提供商将我的项目目录更改为另一台服务器,因此我可以使用 php 5.5.2 但我没有收到任何通知。所以我的ssh地址改变了,dns没有签入新的ftp地址。

现在一切正常。

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 2019-01-28
    • 2017-08-02
    • 2014-02-25
    • 1970-01-01
    • 2015-07-21
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多