テーブルでupdate
クエリを実行しようとすると、次のエラーが表示されます。
1036-テーブル
data
は読み取り専用です。
どうすれば修正できますか?
/var/db/mysql
のテーブル属性は777
に設定されます。
「テーブルの修復」機能は役に立たないようです。
それで何かできることはありますか?
/ var/db/mysqlの所有者と所属グループは、mysql:mysqlである必要があります。また、変更を有効にするにはmysqlを再起動する必要があります
また、現在ログインしているユーザーに更新のためのGRANTアクセス権があることを確認します
私の場合、mysql構成ファイルにはinnodb_force_recovery = 1が含まれていました。コメントアウトすると問題が解決しました。それが誰かを助けることを願っています。
所有者をMYSQL:MYSQLに変更する必要があります。
次のコマンドを使用します:chown -Rf mysql:mysql /var/lib/mysql/DBNAME
(この回答は見出しに関連していますが、元の質問には関連していません。)
(私のように)MySQL Workbenchインターフェースを介して一時的にデータを変更しようとしている場合:
テーブルに主キーがない場合、MySQL Workbenchには変更しようとしている行を識別する方法がないため、変更できません。
その場合の解決策は、別のルートを介してデータを変更するか、単にテーブルに主キーを追加することです。
いずれにしても、私はそれが誰かを助けることを願っています:)
私の状況は、mysqlを強制的に起動するためにmy.iniの「innodb_force_recovery = 1」を編集する必要があるたびであり、エラーログには次のようなエラーが示されました。
以前に開いたテーブルスペースを開こうとしました。以前のテーブルスペースmysql/innodb_table_statsはスペースID:1を使用します。ファイルパス:。\ mysql\innodb_table_stats.ibd。ファイルパス:。\ profile\profile_commentmeta.ibdでスペースID:1を使用するテーブルスペースprofile/profile_commentmetaを開けません。
このファイルを開けなかった理由がわかりませんでした。また、他のデータベースにも多くの「テーブル読み取り専用」問題が発生しました。
そこで、他のファイルを傷つけることなく、この問題を簡単な方法で修正した方法を次に示します。
1まず、my.iniファイルでinnodb_force_recovery = 1以下を[mysqld]に追加し、パスの下で機能していることを確認します:X :\ xampp\mysql\bin\my.ini
2次に、次のステップで、exportタブの下のlocalhost/phpmyadminからすべてのデータベースをエクスポートし、次のように保存します。
3dataファイルフォルダーをdata-bakにコメントアウトしてから、新しいdataファイルフォルダーを作成し、
4次のステップでは、すべての.sqlデータベースをphpmyadminパネルから戻し、pleasealso copyphpmyadmin古いdata-bakファイルフォルダーから新しいdataファイルフォルダーへのファイルフォルダー。ファイルが必要な場合は、data-bakファイルフォルダーに戻ってコピーして貼り付けてください。
これですべて修正および完了しました。毎回mysqlを強制的に起動する必要はありません。これがあなたにも役立つことを願っています。
MySQLには、データベースファイルへの書き込みアクセス権がありません。ファイルの許可と所有者を確認してください。
アプリを編集して同じ問題を解決しました。アーマー構成ファイル。ここで答えを見つけました: https://stackoverflow.com/a/14563327/31755661
Windowsでは、Xamppサーバーを使用しますmy.iniinnodb_force_recovery = 1
から#innodb_force_recovery = 1
問題は解決しました