Содержание
- How to resolve MySQL ‘1146 table doesn’t exist’ errors in your server
- What causes MySQL ‘1146 table doesn’t exist’ error
- How to fix MySQL ‘1146 table doesn’t exist’ error
- ERROR 1146 (42S02): Table ‘information_schema.SCHEMATA’ doesn’t exist #1047
- Comments
- Issue:
- Expected behavior:
- Reproduce:
- Relevant Code:
- Ошибка? #1146-таблица «xxx. xxxxx» не существует
- 18 ответов:
- Ошибка? # 1146 — Таблица «xxx.xxxxx» не существует
- 18 ответов
How to resolve MySQL ‘1146 table doesn’t exist’ errors in your server
In our role as Support Engineers for web hosts, we manage servers with various services such as web, database, mail, control panels, FTP, etc.
MySQL is the most commonly used database server in Linux hosting and handling the databases and resolving the errors associated with it, is a common task that we perform.
A commonly noticed error in MySQL server is ‘1146 table doesn’t exist’. Today we’ll see what causes this ‘1146 table doesn’t exist’ error in MySQL and how to fix it.
Error : Table ‘mysql.innodb_index_stats’ doesn’t exist
status : Operation failed
What causes MySQL ‘1146 table doesn’t exist’ error
MySQL table errors happen due to many reasons, the major ones we’ve come across include:
- InnoDB crash – When the InnoDB server crash due to any process load or user abuse, or if the server was not restarted properly, it can get corrupt and cause table errors to show up.
- Missing ibdata file in the MySQL datadir – InnoDB has a data dictionary – the ibdata file and log files, which are crucial for InnoDB to function. If during migrations or restorations, these files go missing, it can prevent InnoDB tables from functioning right.
- Improperly placed .frm files – In InnoDB, tables have ‘.frm’ files that define the table format. If these files get deleted or were missed to copy over to the proper database directory, then the tables can show errors.
- Incorrect permissions and ownership of MySQL datadir – MySQL has a data directory, usually ‘/var/lib/mysql’ that stores the databases. If the permission and ownership of this directory is not adequate for MySQL to access it, errors would occur.
- Corrupt tables or improper table names – If the database tables got corrupt due to improper server shut down or incomplete queries, or if the table name format is not correct, the ‘1146 table doesn’t exist’ error may show up.
How to fix MySQL ‘1146 table doesn’t exist’ error
Inorder to fix the error ‘1146 table doesn’t exist’, we adopt different techniques, after analyzing the root cause of the error.
- Restart MySQL server – If the error has happened due to improper server shut down or MySQL service related errors, we restart the service and check if it fixes the issue. If the service doesn’t start properly, we further investigate and fix the error.
- Repair the tables – MySQL has tools such as ‘myisamchk’ to repair corrupt databases and tables.
- Backup restore – Restoring database backups is the final resort to get the tables back to working condition. We always configure and maintain the backups in our customers’ servers up to date, inorder to ensure that there is no data loss or down time due to unexpected crashes or errors.
- Copy ibdata file – If the ‘ibdata’ file is missing, we copy it from the backup and restore it to the data directory for MySQL, after discarding the tablespace to avoid any corruptions or errors.
- InnoDB crash recovery – In case where the backup is incomplete or ibdata file is also corrupt, we’ve still been able to recover the tables via our expert crash recovery methods. Read the post ‘Database crash rescue‘ to know more.
[ Use your time to build your business. We’ll take care of your servers. Hire Our server experts to resolve and prevent server issues. ]
At Bobcares, our 24/7 Web Support Specialists constantly monitor all the services in the server and proactively audit the server for any errors or corruption in them.
With our systematic debugging approach for service or other software errors, we have been able to provide an exciting support experience to the customers.
If you would like to know how to avoid downtime for your customers due to errors or other service failures, we would be happy to talk to you.
Источник
ERROR 1146 (42S02): Table ‘information_schema.SCHEMATA’ doesn’t exist #1047
Issue:
What seems to be going wrong?
docker exec -it bash
mysql -u root -p
show databases;
Expected behavior:
What should be happening instead?
see available databases or none? isn’t the container supposed to create it by default?
Reproduce:
How might we be able to reproduce the error?
Relevant Code:
The text was updated successfully, but these errors were encountered:
I resolved this error by running:
mysql_upgrade -u root -p —force
However, the next error whilst try to migrate the schema versions of Laravel is:
SQLSTATE[HY000] [2054] Server sent charset unknown to the client. default character set utf8mb4 collate utf8mb4_unicode_ci.
It seems the problem has to do with a bug in the driver in the version of PHP that comes with laradock?
https://bugs.php.net/bug.php?id=74461
This bug seems to be resolved in PHP1.7.5.
Hi, was having the same issue, i run the mysql_upgrade you posted and now i’m able to see databases. But i still have an issue of connecting to the database via sequel pro, using credentials i changed in .env
Are you facing same issue and have you been able to solve it?
Have you tried to using host=mysql?
If you are using the laradock repo you can spin up phpmyadmin:
docker-compose up -d nginx mysql phpmyadmin
then you can browse phpmyadmin at: http://localhost:8080
I have added 127.0.0.1 mysql in my hosts file, base on some post i read.
i just used phpmyadmin wth the following credentials and it worked:
username: laradock
password: secret
database: zoo (Collation: utf8mb4_0900_ai_ci)
Then i have a php file which i have this code in it.
$con = mysqli_connect(«127.0.0.1″,»laradock»,»secret»,»zoo»); var_dump($con);
this is the result i get:
Warning: mysqli_connect(): (HY000/2002): Connection refused in.
When i use «mysql» instead of «127.0.0.1», i get:
Warning: mysqli_connect(): Server sent charset (255) unknown to the client.
Try downgrading the MySQL version from 8.0 to 5.7 5083426 then rebuild the container.
Hi @Mahmoudz, I try downgrading MySQL to 5.7 and rebuild, but when up docker-machine I receive this:
I did the following to get mine working:
- Removed image $ docker rmi laradock_mysql
- Remove container $ docker rm laradock_mysql
- Located DATA_SAVE_PATH=
/.laradock/data in .env file
- Buil docker-compeer up -d mysql nginx
I hope I didn’t miss anything in the steps.
Changing the mysql container version to 5.7 from 8.0 didn’t fix this for me.
After lots of faffing I decided to start from scratch. Before building the containers for the first time ensure you have set the mysql version at laradock/mysql/Dockerfile to 5.7 as described at #1047 (comment).
Setting the version from mysql 8.0 to 5.7 caused lots of issues. At the moment it’s quicker to set the version before starting the build process.
solution:
/.laradock/data/mysql warning: it will delete your mysql exist data
question:
for this issue,i know i need clear mysql old data when i change mysql version, so i exec docker-compose down -v , but the error still exist, i realize the mysql container not use docker volume system , so i checked docker-compose.yml ,In there, i found a question:
for laradock old version, mysql use docker volume save data, example:
so, who is using the volume mysql ? I hope I didn’t miss anything for this config. is that a bug? @Mahmoudz
Источник
Ошибка? #1146-таблица «xxx. xxxxx» не существует
Я использую windows XP. Я создаю таблицу в phpMyAdmin с помощью встроенной функции create table,
мое имя базы данных — ddd .
Он генерирует следующий код:
И появляется следующая ошибка:
В чем может быть проблема?
18 ответов:
У меня тоже была такая же проблема в прошлом. Все произошло после перемещения файлов базы данных в новое место и после обновления сервера mysql. Все таблицы с движком InnoDB исчезли из моей базы данных. Я пытался воссоздать их, но mysql все время говорил мне 1146: Table ‘xxx’ doesn’t exist , пока я не воссоздал свою базу данных и не перезапустил службу mysql.
Я думаю, что есть необходимость прочитать о двоичных файлах таблиц InnoDB.
У меня была та же проблема, и я не могу получить хороший совет для этого через интернет, поэтому я поделился этим для вас и для всех, кто нуждается.
В моей ситуации я копирую базу данных (все файлы: frm, myd) в папку данных в папке данных MySQL (используя Wamp дома). Все было в порядке, пока я не хочу создать таблицу и иметь ошибку #1146 Table ‘. ‘ doesn’t exist! .
Я использую Wamp 2.1 с MySQL версии 5.5.16.
Экспорт базы данных в файл;
Проверьте, экспортируется ли файл действительно в порядке!!;
Удалите базу данных, где у меня есть проблемы;
Создайте новую базу данных с тем же именем, что и предыдущая;
Импортируйте файл в базу данных.
ДЛЯ МЕНЯ ПРОБЛЕМА РЕШЕНА. Теперь я могу снова создавать таблицы без ошибок.
В моем случае я выполнил эту команду, даже если таблица не была видна в PhpMyAdmin:
DROP TABLE mytable
Перезапуск MySQL работает нормально для меня.
Проверьте имена файлов.
Возможно, вам потребуется создать новую базу данных в phpmyadmin, которая соответствует базе данных, которую вы пытаетесь импортировать.
У меня была та же проблема. Я попытался создать таблицу в mysql и получил ту же ошибку. Я перезапустил сервер mysql и запустил команду, и смог создать / перенести таблицу после пересчета.
Сегодня я столкнулся с той же проблемой. Я был в очень сложной ситуации, но какой id я создал таблицу с другим именем, например (modulemaster не создавал, тогда я создаю modulemaster1), и после создания таблицы я просто делаю переименование таблицы.
Я сегодня столкнулся с той же проблемой. Я пытался создать таблицу users , и мне было предложено это ERROR 1146 (42S02): Table users doesn’t exist , что не имело никакого смысла, потому что я просто пытался создать таблицу!!
Затем я попытался отбросить таблицу, набрав DROP TABLE users , зная, что она не будет работать, потому что ее не существует, и я получил ошибку, сказав Unknown table users . После получения этой ошибки, я попытался создать таблицу снова, и волшебным образом, он успешно создал таблицу!
Моя интуиция подсказывает, что я, вероятно, создал это стол до этого так и не был полностью убран каким-то образом. Явно говоря DROP TABLE , мне удалось каким-то образом сбросить внутреннее состояние? Но это только мое предположение.
Короче говоря, попробуйте отбросить любую таблицу, которую вы создаете, и создать ее снова.
As pprakash упоминает выше, копируя таблицу .файлы frm и файл ibdata1 были тем, что работало для меня. (Я бы просто прокомментировал этот комментарий, но это требование SO для 50 пунктов означает, что я должен предоставить решение, даже если это просто повторение существующего . странный.)
- Закрой свой клиент проводнике выделенного текста(например, верстак).
- остановите службу MySQL (хост Windows).
- сделайте безопасную копию практически все!
- сохраните копию файла(ов) таблицы (например, mytable.frm ) в папку данных схемы (например, MySQL Server / data / ).
- сохраните копию файла ibdata1 в папке data (т. е. MySQL Server/data).
- перезагрузите службу MySQL.
- убедитесь, что таблицы теперь доступны, доступны для запросов и т. д. В вашем клиенте проводника БД.
После этого все было хорошо. (Не забудьте сделать резервную копию, если у вас есть успех!)
Имена столбцов в таблице должны быть уникальными. В одной таблице не может быть двух столбцов с именем asd .
Источник
Ошибка? # 1146 — Таблица «xxx.xxxxx» не существует
Я использую Windows XP. Я создаю таблицу в phpMyAdmin, используя встроенную функцию создания таблицы, мое имя базы данных ddd .
Он генерирует следующий код:
и появляется следующая ошибка:
В чем может быть проблема?
18 ответов
У меня также была такая же проблема в прошлом. Все это произошло после перемещения файлов базы данных в новое место и после обновления сервера mysql. Все таблицы с движком InnoDB исчезли из моей базы данных. Я пытался их воссоздать, но mysql все время говорил мне 1146: Table ‘xxx’ doesn’t exist , пока я не восстановил свою базу данных и не перезапустил службу mysql.
Мне кажется, что нужно читать бинарные файлы InnoDB.
У меня была такая же проблема и я не могу получить хороший совет для этого через Интернет, поэтому я поделился этим для вас и для всех, кто нуждается.
В моей ситуации я копирую базу данных (все файлы: frm, myd) в папку данных в папке данных MySQL (используя Wamp at home). Все было в порядке, пока я не хочу создать таблицу и имею ошибку #1146 Table ‘. ‘ doesn’t exist! .
Я использую Wamp 2.1 с MySQL версии 5.5.16.
Экспорт базы данных в файл;
проверить, действительно ли экспортированный файл в порядке!
отбросить базу данных, где есть проблемы;
создать новую базу данных с тем же именем, что и последняя,
импортируйте файл в базу данных.
ДЛЯ МЕНЯ РЕШЕНА ПРОБЛЕМА. Теперь я могу создавать таблицы снова без ошибок.
В моем случае я выполнил эту команду, даже если таблица не была видна в PhpMyAdmin:
DROP TABLE mytable
Работал для меня!
Перезапуск MySQL отлично работает для меня.
У меня была та же проблема. Я попытался создать таблицу в mysql и получил ту же ошибку. Я перезапустил сервер mysql и запустил команду и смог создать/перенести таблицу после повторения.
Проверьте имена файлов.
Возможно, вам понадобится создать новую базу данных в phpmyadmin, которая соответствует базе данных, которую вы пытаетесь импортировать.
В качестве pprakash упоминается выше, копирование файлов table.frm И файл ibdata1 работал у меня. (Я бы просто прокомментировал этот комментарий, но это требование SO для 50 пунктов означает, что я должен предоставить решение, даже если это просто передел существующего. странный.)
- Закройте выделенный клиентом клиент-проводник DB (например, Workbench).
- Остановить службу MySQL (хост Windows).
- Сделайте безопасную копию практически всего!
- Сохраните копию файлов таблиц (например, mytable.frm) в папку данных схемы (например, MySQL Server/data/).
- Сохраните копию файла ibdata1 в папке с данными (например, MySQL Server/data).
- Перезапустите службу MySQL.
- Проверьте, что таблицы теперь доступны, доступны для запросов и т.д. в вашем клиенте проводника DB.
После этого все было хорошо. (Не забудьте сделать резервную копию, если у вас есть успех!)
Сегодня я столкнулся с той же проблемой. Я пытался создать таблицу users , и мне было предложено ERROR 1146 (42S02): Table users doesn’t exist , что не имело никакого смысла, потому что я просто пытался создать таблицу!!
Затем я попытался удалить таблицу, набрав DROP TABLE users , зная, что она потерпит неудачу, потому что она не существует, и я получил сообщение об ошибке Unknown table users . Получив эту ошибку, я попытался снова создать таблицу, и, как ни странно, она успешно создала таблицу!
Моя интуиция заключается в том, что я, вероятно, создал эту таблицу раньше, и она каким-то образом не была полностью очищена. Явным образом сказал DROP TABLE мне удалось reset внутреннее состояние каким-то образом? Но это только моя догадка.
Короче говоря, попробуйте DROP любую таблицу, которую вы создаете, и СОЗДАЙТЕ ее снова.
Сегодня я столкнулся с такой же проблемой. Я был в очень сложной ситуации, но какой идентификатор я создал таблицу с разным именем, например (modulemaster не создавал, затем я создавал modulemaster1), и после создания таблицы я просто делаю таблицу переименования.
Для меня это была проблема с верхним/нижним регистром. Я должен был удостовериться, что имя файла таблицы совпало в запросе удаления, notifications таблицах были не такими же, как Notifications . Я исправил его, сопоставив случай с именем таблицы с запросом и сообщением MySQLWorkbench.
Что странно, так это то, что эта ошибка появилась в обработанном sql-заявлении. Не знаю, что вызвало чувствительность этого случая. Возможно, обновление AWS AWS.
В моем случае параметр MySQL; lower_case_table_names был настроен = 0 .
Он вызывает запросы, связанные с использованием верхних регистров, не будет работать.
У меня была эта проблема из-за срабатывания триггера. Работала после того, как я удалил триггер.
У меня была такая же проблема. Это произошло после ошибки запуска Windows, похоже, из-за этого некоторые файлы были повреждены. Я снова импортировал БД из сохраненного script, и он отлично работает.
Я получил эту проблему после копирования файла таблицы mytable.idb из другого места. Чтобы устранить эту проблему, я сделал следующее:
Скопировать файл mytable.idb
Причина, по которой я столкнулся, состояла в том, что у меня было два файла «models.py», которые содержали несколько разных полей. Я разрешил это:
- удаление одного из файлов models.py
- исправление ссылок на удаленный файл
- затем запустите manage.py syncdb
Недавно у меня была такая же проблема, но на Linux Server. База данных была разбита, и я восстановил ее из резервной копии на основе простого копирования /var/lib/mysql/* (аналоговая папка DATA mysql в wamp). После восстановления мне пришлось создать новую таблицу и получить mysql-ошибку # 1146. Я попытался перезапустить mysql, и он сказал, что это не может начаться. Я проверил журналы mysql и обнаружил, что mysql просто не имеет доступа к своим файлам DB. Я проверил информацию о владельце /var/lib/mysql/ * и получил ‘myuser:myuser’ (myuser is me). Но это должно быть ‘mysql:adm’ (так это собственная машина разработчика), поэтому я сменил владельца на «mysql: adm». И после этого mysql начал нормально, и я мог создавать таблицы или выполнять любые другие операции.
Итак, после перемещения файлов базы данных или восстановления из резервных копий проверьте доступность буферов для mysql.
Надеюсь, что это поможет.
запустить из CMD и% path% = установить в mysql/bin
mysql_upgrade -u user -ppassword
Имена столбцов должны быть уникальными в таблице. Вы не можете иметь два столбца с именем asd в той же таблице.
Источник
While using an older VM with CentOS7 installed, I attempted to remove the default MySQL v5.5(ish) installation and replace it with a more recent MariaDB v10.5 for a Docker experiment. While trying to line up my DB version types due to a 16-character limit for the db usernames in older versions of MySQL, I ran into: “ERROR 1146 (42S02) at line 1: Table ‘mysql.global_priv’ doesn’t exist”.
This was an odd one, as I even removed the original MySQL completely with:
(IMPORTANT: DON’T do this unless you have your existing data backed up with a mysqldump!! Read More here: https://mariadb.com/kb/en/making-backups-with-mysqldump/)
sudo service mysql stop; sudo yum remove mysql; |
Then we need to add a recent version of MariaDB that works with CentOS7:
sudo tee /etc/yum.repos.d/mariadb.repo<<EOF [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.5/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 EOF |
Next we update the cache after we added MariaDB to yum
:
Now we install MariaDB from the repo we configured above:
sudo yum install MariaDB—server MariaDB—client |
Be sure to say “yes” to the GPG key, like so:
..... Importing GPG key 0x1BB943DB: ... Is this ok [y/N]: y |
Now we need to start the newly installed mariadb.service so we can test it out and secure the MySQL-compatible database:
sudo systemctl start mariadb |
If you want mariadb.service to be started at boot, do this:
sudo systemctl enable mariadb |
Now we need to make sure that we allow connection to port 3306, like so:
sudo firewall—cmd —add—service=mysql —permanent sudo firewall—cmd —reload |
Everything seemed to go fine, until the next step…
sudo mysql_secure_installation |
While trying to harden the MariaDB upgrade installation with, the above command, I got the following error(s):
Enable unix_socket authentication? [Y/n] Y ERROR 1146 (42S02) at line 1: Table ‘mysql.global_priv’ doesn‘t exist |
and/or
Change the root password? [Y/n] Y ERROR 1146 (42S02) at line 1: Table ‘mysql.global_priv’ doesn‘t exist |
I searched in the “usual places” for an obvious fix. This seemed like it might be some kind of local Linux CentOS7 user permissions issue, at first. I went of on a few side quests and peered down the rabbit hole of Linux User permissions for MySQL packages… but I stopped myself. Anytime you see an “error on line 1” it is likely due to some kind of configuration problem, otherwise a “permission denied” or “no such user” error would be more likely.
So after I got my head right, I then tried to completely uninstall all of MariaDB, just to start from scratch (IMPORTANT: DON’T do this unless you have used mysqldump for your existing data as a back up!!)
sudo systemctl stop mariadb sudo yum remove mariadb |
After removing MariaDB, completely we need to start over. Just to be sure, we can reboot with:
After going through the entire installation process for a 2nd time, just as before (minus adding the MariaDB repo since that was done once already), I ran into the exact same issue again:
Change the root password? [Y/n] Y ERROR 1146 (42S02) at line 1: Table ‘mysql.global_priv’ doesn‘t exist |
FAIL.
After spending awhile longer trying to understand what went wrong, I attempted the following successful “fix” to the error:
And I noticed this about 30% through the mysql_upgrade process:
........... mysql.time_zone_name OK mysql.time_zone_transition OK mysql.time_zone_transition_type OK mysql.user OK Upgrading from a version before MariaDB—10.1 Phase 2/7: Installing used storage engines Checking for tables with unknown storage engine Phase 3/7: Fixing views Phase 4/7: Running ‘mysql_fix_privilege_tables’ Phase 5/7: Fixing table and database names Phase 6/7: Checking and upgrading tables Processing databases information_schema ........... |
…. and after that: Ka-ching!
sudo mysql_secure_installation .......... Enable unix_socket authentication? [Y/n] Y Enabled successfully! Reloading privilege tables.. … Success! |
My MySQL client tools and CLI access to the newly updated and clean installed MariaDB worked flawlessly.
I haven’t had to run the mysql_update command to solve a problem with setting MySQL/MariaDB to start & run in many years, but the error message and missing table issue was pretty obscure. Bonus tip: if you get “error access denied” during
</p> <!— /wp:paragraph —> <!— wp:urvanov—syntax—highlighter/code—block —> <div class=«wp-block-urvanov-syntax-highlighter-code-block»><pre class=«lang:default decode:true «>sudo mysql_update |
I hope this helps someone else out! Going through this fix worked well enough for me to do my Docker tests and was still faster than spinning up a shiny new VM or embarking on an entirely new Docker Stack from scratch.
We may come across the mysqldump error 1146 table doesn’t exist while we perform the database dump.
As part of our Server Management Services, we assist our customers with several MySQL queries.
Today, let us see how to fix this error in Plesk and Directadmin.
mysqldump: Got error: 1146: Table doesn‘t exist
Recently, while performing the database dump, some of our users notice the error:
mysqldump: Got error: Table ‘myDatabase.table’ doesn‘t exist when using LOCK TABLES
In order to check, we go to MySQL:
mysql -u admin -p
Then we query for the tables:
show tables;
Here, we can find the table. However, when we query for that particular table:
select * from table
We get the same error:
ERROR 1146 (42S02): Table 'myDatabase.table' doesn't exist
We can try to repair it via:
mysqlcheck -u admin -p --auto-repair --check --all-databases
However, the error may prevail:
Error : Table 'myDatase.table' doesn't exist
The major causes of this can be:
- InnoDB tablespace might have been deleted and recreated but corresponding .frm files of InnoDB tables from the database directory were not removed, or .frm files were moved to another database
- Incorrect permissions and ownership on table’s files in MySQL data directory
- A corrupt table data.
How to fix it?
Moving ahead, let us see how our Support Techs fix this error in both Plesk and Directadmin.
Plesk
- Initially, we try to connect to the server using SSH
- Then we try to use
--skip-lock-tables
parameter withmysqldump
to skip lock tables.
For example,#mysqldump –skip-lock-tables -u<db_user> -p<db_user_password> database_name > /root/database_dump.sql
- If it does not help, we check permissions and ownership on the table’s files in the MySQL data directory for the database that fails to dump. It should be
mysql
for both owner and group:- Find data dir location:
RHEL/CentOS#grep datadir /etc/my.cnf datadir=/var/lib/mysql
Debian/Ubuntu
#grep -iR datadir /etc/mysql* /etc/mysql/mysql.conf.d/mysqld.cnf:datadir = /var/lib/mysql
- Check permissions:
# ls -la /var/lib/mysql/example_db/
- Fix permissions:
# chown -R mysql:mysql /var/lib/mysql/example_db/
- Find data dir location:
- If it is still not possible, we try to repair the table in the error using the native MySQL repair tool:
# plesk db mysql> use example_db; mysql> REPAIR TABLE <TABLENAME>;
Note: We need to replace the
<TABLENAME>
with table name in the error message. - If the issue still persists, most probably ibdata* file does not have the info about the table. However, the orphaned
.frm
files still persist on the file system. We remove it:- To verify that table is corrupt or not, we run:
# plesk db mysql> use database example_db; mysql> desc <TABLENAME>;
If this command fails with the error, it means that
ibdata*
does not have the information about the table and we need to remove the.frm
file. - To do so, we browse to the database directory
/var/lib/mysql/example_db/
and move.frm
file:# cd /var/lib/mysql/example_db/ # mv <TABLENAME>.frm /root/<TABLENAME>.frm
- To verify that table is corrupt or not, we run:
- If these options fail and we have no valid backups to restore, the only available option to save the database is to dump it with the innodb_force_recovery option
Directadmin
Suppose, we get the error for the User database and Table:
mysqldump error output: mysqldump: Got error: 1146: Table ‘user_db.table‘ doesn’t exist when using LOCK TABLES
- In this case, we check to see if there are any other data files, or if it’s just the .frm file:
cd /var/lib/mysql/user_db ls -la table.*
If it’s just the table.frm file, then the rest of the data is likely lost. However, we may be able to rebuild the table.
- To do so, we need to read the .frm file. We need the mysqlfrm tool for that, eg: yum install mysql-utilities. Once we install it, we check if it can be read:
mysqlfrm –diagnostic table.frm
This can output the full CREATE TABLE syntax. We save this somewhere, until the end of the last ; character.
Note, we can either delete the “CHARACTER SET “, or change it to the correct charset.
- Then, we remove the broken table. To do so, we login to /phpMyAdmin and run the query:
DROP TABLE user_db.table
- Finally, we run the CREATE TABLE query from above, to rebuild the table.
[Finding it hard to fix? We’d be happy to assist you]
Conclusion
In short, we saw how our Support Techs fix the MySQL error for our customers.
PREVENT YOUR SERVER FROM CRASHING!
Never again lose customers to poor server speed! Let us help you.
Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.
GET STARTED
var google_conversion_label = «owonCMyG5nEQ0aD71QM»;
In our role as Support Engineers for web hosts, we manage servers with various services such as web, database, mail, control panels, FTP, etc.
MySQL is the most commonly used database server in Linux hosting and handling the databases and resolving the errors associated with it, is a common task that we perform.
A commonly noticed error in MySQL server is ‘1146 table doesn’t exist’. Today we’ll see what causes this ‘1146 table doesn’t exist’ error in MySQL and how to fix it.
Error : Table ‘mysql.innodb_index_stats’ doesn’t exist
status : Operation failed
What causes MySQL ‘1146 table doesn’t exist’ error
MySQL table errors happen due to many reasons, the major ones we’ve come across include:
- InnoDB crash – When the InnoDB server crash due to any process load or user abuse, or if the server was not restarted properly, it can get corrupt and cause table errors to show up.
- Missing ibdata file in the MySQL datadir – InnoDB has a data dictionary – the ibdata file and log files, which are crucial for InnoDB to function. If during migrations or restorations, these files go missing, it can prevent InnoDB tables from functioning right.
- Improperly placed .frm files – In InnoDB, tables have ‘.frm’ files that define the table format. If these files get deleted or were missed to copy over to the proper database directory, then the tables can show errors.
- Incorrect permissions and ownership of MySQL datadir – MySQL has a data directory, usually ‘/var/lib/mysql’ that stores the databases. If the permission and ownership of this directory is not adequate for MySQL to access it, errors would occur.
- Corrupt tables or improper table names – If the database tables got corrupt due to improper server shut down or incomplete queries, or if the table name format is not correct, the ‘1146 table doesn’t exist’ error may show up.
[ You don’t have to lose your sleep over server errors. Our expert server support specialists monitor & maintain your servers 24/7/365 and keep them rock solid. ]
How to fix MySQL ‘1146 table doesn’t exist’ error
Inorder to fix the error ‘1146 table doesn’t exist’, we adopt different techniques, after analyzing the root cause of the error.
- Restart MySQL server – If the error has happened due to improper server shut down or MySQL service related errors, we restart the service and check if it fixes the issue. If the service doesn’t start properly, we further investigate and fix the error.
- Repair the tables – MySQL has tools such as ‘myisamchk’ to repair corrupt databases and tables.
- Backup restore – Restoring database backups is the final resort to get the tables back to working condition. We always configure and maintain the backups in our customers’ servers up to date, inorder to ensure that there is no data loss or down time due to unexpected crashes or errors.
- Copy ibdata file – If the ‘ibdata’ file is missing, we copy it from the backup and restore it to the data directory for MySQL, after discarding the tablespace to avoid any corruptions or errors.
- InnoDB crash recovery – In case where the backup is incomplete or ibdata file is also corrupt, we’ve still been able to recover the tables via our expert crash recovery methods. Read the post ‘Database crash rescue‘ to know more.
[ Use your time to build your business. We’ll take care of your servers. Hire Our server experts to resolve and prevent server issues. ]
At Bobcares, our 24/7 Web Support Specialists constantly monitor all the services in the server and proactively audit the server for any errors or corruption in them.
With our systematic debugging approach for service or other software errors, we have been able to provide an exciting support experience to the customers.
If you would like to know how to avoid downtime for your customers due to errors or other service failures, we would be happy to talk to you.
var google_conversion_label = «owonCMyG5nEQ0aD71QM»;
5 ответов
Ваша база данных может быть повреждена. Попробуйте проверить, существует ли mysql.user:
use mysql;
select * from user;
Если они отсутствуют, вы можете попробовать воссоздать таблицы, используя
mysql_install_db
или вам может потребоваться очистить (полностью удалить его) и переустановить MySQL.
Mark M
22 июль 2013, в 06:18
Поделиться
Похоже, что что-то испортилось с вашей установкой MySQL. Таблица mysql.user
должна обязательно существовать. Попробуйте запустить приведенную ниже команду на своем сервере для создания таблиц в базе данных под названием mysql
:
mysql_install_db
Если это не сработает, возможно, права на ваш каталог данных MySQL перепутаны. Посмотрите на «хорошо известную» установку в качестве ссылки на то, какие разрешения должны быть.
Вы также можете попробовать полностью переустановить MySQL.
jnrbsn
22 июль 2013, в 05:46
Поделиться
Вы можете выполнить следующий запрос, чтобы проверить наличие таблицы пользователя.
SELECT * FROM information_schema.TABLES
WHERE TABLE_NAME LIKE '%user%'
Посмотрите, можете ли вы найти строку со следующими значениями в
mysql user BASE TABLE MyISAM
Если вы не можете найти в этой таблице следующую ссылку для восстановления базы данных Как восстановить/воссоздать базу данных mysql по умолчанию mysql
Namphibian
22 июль 2013, в 05:54
Поделиться
Попробуйте запустить mysqladmin reload
, который находится в /usr/loca/mysql/bin/
на Mac.
ray6080
07 май 2014, в 12:19
Поделиться
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| datapass_schema |
| mysql |
| test |
+--------------------+
4 rows in set (0.05 sec)
mysql> use mysql;
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
mysql> show tables
-> ;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| servers |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
23 rows in set (0.00 sec)
mysql> create user m identified by 'm';
Query OK, 0 rows affected (0.02 sec)
проверьте для базы данных mysql и пользователя таблицы, как показано выше, если эта функция дозировки работает, ваша установка mysql не подходит.
используйте следующую команду, как упоминание в другой статье, чтобы снова установить таблицы
mysql_install_db
ManMohan Vyas
22 июль 2013, в 06:41
Поделиться
Ещё вопросы
- 0Как получить значение пользовательского атрибута с помощью jquery?
- 1Как прочитать гиперссылку изображения в Power Point с помощью c #
- 0нарушение ссылочной целостности на MySQL сервере, как его решить?
- 0.htaccess всегда показывает 500 кодировщика внутренних ошибок сервера
- 0Почему пользовательский интерфейс не отображается после перезагрузки?
- 1Замена адаптеров таблиц на Oracle.DataAccess.Client (ODP.NET)
- 0Как заполнить $ scope на начальной странице GET-запроса
- 1Как я могу проверить, является ли строка, которую я возвратил из курсора, пустой или нулевой в курсоре Android?
- 0Тестирование http-запроса, где в случае успеха вызовите другую функцию с помощью jasmine
- 1Создание Discord Bot в Python: Как сделать разговор о переключателе для ChatBot
- 0Как вы получаете старые и новые значения динамического автозаполнения md-selected-item-change (Angular Material)?
- 1Получение пустых значений с использованием Javascript
- 0вложенные контроллеры, родительский доступ и синтаксис controllerAs
- 0Сравните две диаграммы и получите процент сходства
- 0JS Установка атрибута onclick разными способами
- 0php получает информацию о фейсбуке, используя имя пользователя и пароль
- 0yii2 бутстрап выпадающий из модели
- 0MySQL: несколько SELECT с разными WHERE на одном поле с результатом в отдельных столбцах
- 1Динамическая генерация данных панд
- 1Привязка CommandParameter к элементу пользовательского интерфейса вне CommandBar
- 0Ошибка установки Magento 2: класс «Magento Framework Autoload AutoloaderRegistry» не найден
- 1Как найти имя выходного узла данного файла .ckpt.meta в тензорном потоке
- 0Несколько аргументов для данных в BOOST_PP_REPEAT
- 0После символической ссылки: ОШИБКА 2002 (HY000): Не удается подключиться к локальному серверу MySQL через сокет ‘/tmp/mysql.sock’ (2)
- 1Struts2 возвращает json, если аутентификация в перехватчике не удалась
- 0JQuery: как добавить CSS наведения с помощью JQuery CSS?
- 0Можем ли мы проверить указатель, чтобы убедиться, что это правильный адрес?
- 0Сократить код JQuery
- 1Как получить из ADFS непустой атрибут получателя в утверждении SAML
- 0Javascript Заполнить скрытый ввод HTML с помощью JSON и указать кавычки при отправке на серверную часть
- 1Как получить доступ к элементам родительской формы из дочерней формы?
- 0Разрыв строки после ключевого слова return в функции jQuery
- 1Как использовать несколько обратных вызовов при зацикливании данных
- 1Google Dashboard — chartRangeFilter, как узнать, когда перемещаются элементы управления ползунком, а затем остановить
- 1Проверка JavaScript для Google Forms / Google Sheet
- 1Создание комплексного запроса к сайту (общественная транспортная компания) в C #
- 1Как закодировать пароль Jaysypt
- 1Столбцы JTable не изменяют размер, вероятно, когда размер JFrame
- 0Преобразование поля даты и времени ничего не возвращает в запросе php / mssql
- 1Ember.js 2, transitionTo, используя несколько динамических сегментов на маршруте первого уровня
- 1Ошибка WebView — неправильный размер
- 0чтение файла объединить и создать URL с помощью nodejs
- 1Линейный график HighChart не отображается
- 1Создание ярлыка на андроид
- 1Как выполнить сложное / поэлементное матричное векторное умножение в numpy? [Дубликат]
- 1Если остальное утверждение логика
- 0Вы рассматриваете определенные флажки как переключатели?
- 1Как повторить строки на основе значения столбца в Python
- 1У объекта AttributeError «NoneType» нет атрибута «upload_from_filename»
- 1Ненужное приведение к интерфейсу?
На Cenos 5 работает mysql-5.1.58. При попытке дать команду «flush privileges» вылезала следующая ошибка:
mysql> flush privileges;
ERROR 1146 (42S02): Table ‘mysql.servers’ doesn’t exist
В базе «mysql» не было таблицы «servers».
mysql> use mysql;
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
mysql> show tables;
+—————————+
| Tables_in_mysql |
+—————————+
| columns_priv |
| db |
| func |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| proc |
| procs_priv |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+—————————+
17 rows in set (0.01 sec)
На других серверах с более поздней версией таблица «servers» была.
Для решения проблемы надо создать требуемую таблицу.
mysql> CREATE TABLE `servers` ( `Server_name` char(64) NOT NULL,
`Host` char(64) NOT NULL,
`Db` char(64) NOT NULL,
`Username` char(64) NOT NULL,
`Password` char(64) NOT NULL,
`Port` int(4) DEFAULT NULL,
`Socket` char(64) DEFAULT NULL,
`Wrapper` char(64) NOT NULL,
`Owner` char(64) NOT NULL,
PRIMARY KEY (`Server_name`) )
ENGINE=MyISAM
DEFAULT CHARSET=utf8
COMMENT=’MySQL Foreign Servers table’;
Query OK, 0 rows affected (0.02 sec)
##В последней строчке должны стоять одинарные кавычки, а не апостроф как выше.
После добавления таблицы все стало хорошо.
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
—
При написании заметки использовались материалы:
http://linux-lab.ru/oshibka-error-1146-42s02-table-mysql-servers-doesnt-exist/
ERROR 1146 (42S02): Table ‘mysql.servers’ doesn’t exist Flush privileges error in Mysql…
На чтение 3 мин. Просмотров 157 Опубликовано 15.12.2019
I am a beginner of mysql. I installed the mysql 8.0.16. Then I log in with root, created a database. Then I tried to use Sequel pro to create a table. After I finished that, ERROR 1146 (42S02) Table ‘securities_master.exchange’ doesn’t exist comes out. I tried many way to fix it, but nothing worked. I really don’t know how to deal with it.
Server version: 8.0.16 MySQL Community Server — GPL System: MacOS 10.14 At first, I use homebrew to install mysql. Then the problem comes out. I tried to uninstall it and install with DMG. Then, I tried to type database name and table name with lowercase. I deleted the ib_logfile0 and ib_logfile1. I restarted the server. I have dropped the database and create again. They didn’t work.
Содержание
- 1 Answer 1
- 20150129
- Ошибка Mysql — ERROR 1146 (42S02): Table ‘mysql.servers’ doesn’t exist
- После обновления Mysql server на CentOS Linux получил ошибку при выполнении команды flush privileges.
- Ошибка: ERROR 1146 (42S02): Table ‘mysql.servers’ doesn’t exist
1 Answer 1
You appear to be getting single quotes ‘ and backticks ` confused. Your quotes as shown are not recognised by MySQL as quotes, instead they’re simply characters.
The quotes you appear to be using are actually not even standard single quotes but are mixed quotes ‘ and ’ .
The name of the table is ‘test’ not test .
ERROR 1146 (42S02): Table ‘t.test’ doesn’t exist
Alternatively, create the table from scratch using the correct quotation symbols — backticks:
Please also not that name is a MySQL keyword and is not advisable as a column name.
20150129
Ошибка Mysql — ERROR 1146 (42S02): Table ‘mysql.servers’ doesn’t exist
На Cenos 5 работает mysql-5.1.58. При попытке дать команду «flush privileges» вылезала следующая ошибка:
mysql> flush privileges;
ERROR 1146 (42S02): Table ‘mysql.servers’ doesn’t exist
В базе «mysql» не было таблицы «servers».
mysql> use mysql;
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
mysql> show tables;
+—————————+
| Tables_in_mysql |
+—————————+
| columns_priv |
| db |
| func |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| proc |
| procs_priv |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+—————————+
17 rows in set (0.01 sec)
После обновления Mysql server на CentOS Linux получил ошибку при выполнении команды flush privileges.
Ошибка: ERROR 1146 (42S02): Table ‘mysql.servers’ doesn’t exist
1. Заходим в MySQL под пользователем root:
mysql -u root -p mysql
И создаем недостающую таблицу:
CREATE TABLE `servers` (`Server_name` char(64) NOT NULL, `Host` char(64) NOT NULL, `Db` char(64) NOT NULL, `Username` char(64) NOT NULL, `Password` char(64) NOT NULL, `Port` int(4) DEFAULT NULL, `Socket` char(64) DEFAULT NULL, `Wrapper` char(64) NOT NULL, `Owner` char(64) NOT NULL, PRIMARY KEY (`Server_name`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=’MySQL Foreign Servers table’;
И делаем сброс привилегий:
Должно появится сообщение: Query OK, 0 rows affected (0.00 sec)
Windows сервера в Европе с оплатой в рублях
Облачные Windows сервера в Германии, Голландии, Эстонии.
Мощные системы защиты.
Возможность установки любого ПО на сервер.
Полная конфиденциальность.
Оплата в рублях.
Безнал для юридических лиц.
Севера 1С в Европе по низким ценам
Облачные Windows VPS в Латвии.
Оплата по безналичному расчету для организаций.
Настройка необходимого для работы ПО (Office, 1C, SQL) входит в стоимость.
*Конфигурация: 1 ядро CPU, 4Гб памяти, 250Гб диск или 60Гб SSD.
Я использую windows XP. Я создаю таблицу в phpMyAdmin с помощью встроенной функции create table,
мое имя базы данных — ddd
.
Он генерирует следующий код:
CREATE TABLE `ddd`.`mwrevision` (
`asd` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`sddd` INT NOT NULL
) ENGINE = INNODB;
И появляется следующая ошибка:
MySQL said:
#1146 - Table 'ddd.mwrevision' doesn't exist
В чем может быть проблема?
2428
18
18 ответов:
У меня тоже была такая же проблема в прошлом. Все произошло после перемещения файлов базы данных в новое место и после обновления сервера mysql. Все таблицы с движком InnoDB исчезли из моей базы данных. Я пытался воссоздать их, но mysql все время говорил мне
1146: Table 'xxx' doesn't exist
, пока я не воссоздал свою базу данных и не перезапустил службу mysql.Я думаю, что есть необходимость прочитать о двоичных файлах таблиц InnoDB.
У меня была та же проблема, и я не могу получить хороший совет для этого через интернет, поэтому я поделился этим для вас и для всех, кто нуждается.
В моей ситуации я копирую базу данных (все файлы: frm, myd) в папку данных в папке данных MySQL (используя Wamp дома). Все было в порядке, пока я не хочу создать таблицу и иметь ошибку
#1146 Table '...' doesn't exist!
.Я использую Wamp 2.1 с MySQL версии 5.5.16.
Мое решение:
Экспорт базы данных в файл;
Проверьте, экспортируется ли файл действительно в порядке!!;
Удалите базу данных, где у меня есть проблемы;
Создайте новую базу данных с тем же именем, что и предыдущая;
Импортируйте файл в базу данных.
ДЛЯ МЕНЯ ПРОБЛЕМА РЕШЕНА. Теперь я могу снова создавать таблицы без ошибок.
В моем случае я выполнил эту команду, даже если таблица не была видна в PhpMyAdmin:
DROP TABLE mytable
Затем
CREATE TABLE....
Работал на меня !
Перезапуск MySQL работает нормально для меня.
Проверьте имена файлов.
Возможно, вам потребуется создать новую базу данных в phpmyadmin, которая соответствует базе данных, которую вы пытаетесь импортировать.
У меня была та же проблема. Я попытался создать таблицу в mysql и получил ту же ошибку. Я перезапустил сервер mysql и запустил команду, и смог создать / перенести таблицу после пересчета.
Сегодня я столкнулся с той же проблемой. Я был в очень сложной ситуации, но какой id я создал таблицу с другим именем, например (modulemaster не создавал, тогда я создаю modulemaster1), и после создания таблицы я просто делаю переименование таблицы.
Я сегодня столкнулся с той же проблемой. Я пытался создать таблицу
users
, и мне было предложено этоERROR 1146 (42S02): Table users doesn't exist
, что не имело никакого смысла, потому что я просто пытался создать таблицу!!Затем я попытался отбросить таблицу, набрав
DROP TABLE users
, зная, что она не будет работать, потому что ее не существует, и я получил ошибку, сказавUnknown table users
. После получения этой ошибки, я попытался создать таблицу снова, и волшебным образом, он успешно создал таблицу!Моя интуиция подсказывает, что я, вероятно, создал это стол до этого так и не был полностью убран каким-то образом. Явно говоря
DROP TABLE
, мне удалось каким-то образом сбросить внутреннее состояние? Но это только мое предположение.Короче говоря, попробуйте отбросить любую таблицу, которую вы создаете, и создать ее снова.
As pprakash упоминает выше, копируя таблицу .файлы frm и файл ibdata1 были тем, что работало для меня. (Я бы просто прокомментировал этот комментарий, но это требование SO для 50 пунктов означает, что я должен предоставить решение, даже если это просто повторение существующего … странный.)
Короче говоря:
- Закрой свой клиент проводнике выделенного текста(например, верстак).
- остановите службу MySQL (хост Windows).
- сделайте безопасную копию практически все!
- сохраните копию файла(ов) таблицы (например, mytable.frm ) в папку данных схемы (например, MySQL Server / data / {yourschema}).
- сохраните копию файла ibdata1 в папке data (т. е. MySQL Server/data).
- перезагрузите службу MySQL.
- убедитесь, что таблицы теперь доступны, доступны для запросов и т. д. В вашем клиенте проводника БД.
После этого все было хорошо. (Не забудьте сделать резервную копию, если у вас есть успех!)
Имена столбцов в таблице должны быть уникальными. В одной таблице не может быть двух столбцов с именем
asd
.
Выполнить из CMD & % path%=установить в mysql / bin
mysql_upgrade -u user -ppassword
Недавно у меня была такая же проблема, но на сервере Linux. База данных была разбита, и я восстановил ее из резервной копии, основанной на простом копировании
/var/lib/mysql/*
(аналоговая папка данных mysql в wamp). После восстановления я должен был создать новую таблицу и получил ошибку mysql #1146. Я попытался перезапустить mysql, и он сказал, что не может начать. Я проверил журналы mysql и обнаружил, что mysql просто не имел доступа к своим файлам DB. Я проверил информацию о владельце /var / lib / mysql/* и получил'myuser:myuser'
(мой пользователь-это я). Но он должен быть'mysql:adm'
(таков собственный машина разработчика), поэтому я сменил владельца на «mysql: adm». И после этого mysql начал нормально работать, и я мог создавать таблицы или делать любые другие операции.Поэтому после перемещения файлов базы данных или восстановления из резервных копий проверьте доступ rigths для mysql.
Надеюсь, это поможет…
Причина, по которой я столкнулся с этим, заключалась в том, что у меня было два «models.py-файлы, которые содержали несколько иные поля.
Я решил ее следующим образом:
- удаление одного из models.py файлы
- исправление ссылок на удаленный файл
- затем запуск manage.py syncdb
Я получил эту проблему после копирования mytable.файл таблицы idb из другого места. Чтобы устранить эту проблему, я сделал следующее:
ALTER TABLE mydatabase.mytable DISCARD TABLESPACE;
Скопируйте mytable.idb
ALTER TABLE mydatabase.mytable IMPORT TABLESPACE;
Перезапустить MySql
У меня была та же проблема. Это произошло после ошибки запуска windows, кажется, некоторые файлы были повреждены из-за этого. Я снова импортировал БД из сохраненного скрипта, и он работает нормально.
У меня была эта проблема из-за того, что триггер не работал..Сработало после того, как я удалил триггер.
В моем случае параметр MySQL;
lower_case_table_names
был настроен= 0
.Это приводит к тому, что запросы, связанные с использованием верхних регистров, не будут работать.
Для меня это была проблема верхнего/нижнего регистра имени таблицы. Я должен был убедиться, что имя случая таблицы совпадает в запросе на удаление, таблица
notifications
не была такой же, какNotifications
. Я исправил это, сопоставив имя таблицы case с запросом и тем, что сообщил MySQLWorkbench.Что такое wierd, так это то, что эта ошибка появилась в рабочей инструкции sql. Не знаю, что вызвало такую чувствительность к делу. Возможно, автоматическое обновление AWS RDS.